Область техники, к которой относится изобретение
Варианты осуществления настоящей заявки (раскрытие), в целом, относятся к области обработки изображений и, в частности, к предсказанию для деления на части и, более конкретно, для вычисления расстояния до выборки для режимов геометрического деления.
Уровень техники
Видеокодирование (видеокодирование и декодирование) используется в широком диапазоне приложений цифрового видео, например, в широковещательном цифровом телевидении, видеопередаче через Интернет и сети мобильной связи, диалоговых приложениях, работающих в реальном времени, таких как видеочат, видеоконференция, диски DVD и Blu-ray, системы получения и редактирования контента и видеокамеры приложений обеспечения безопасности.
Объем видеоданных, необходимый для показа даже относительно короткого видео, может быть существенным, что в результате может приводить к трудностям, когда данные должны передаваться потоком или должны передаваться как-либо иначе по сети связи с ограниченной шириной полосы пропускания. Таким образом, видеоданные, прежде чем передаваться через современные сети связи, обычно сжимаются. Размер видео также может быть проблемой, когда видео должно храниться в запоминающем устройстве, потому что ресурсы памяти могут быть ограничены. Устройства видеосжатия часто используют программное обеспечение и/или аппаратные средства в источнике сигнала для кодирования видеоданных перед передачей или хранением, уменьшая, таким образом, объем данных, необходимый для представления цифровых видеоизображений. Сжатые данные затем принимаются в месте назначения устройством видеораспаковки, которое декодирует видеоданные. При ограниченных сетевых ресурсах и постоянно растущем спросе на более высокое качество видео желательны улучшенные способы сжатия и распаковки, которые повышают степень сжатия при минимальных или отсутствующих влияниях на качество изображения.
Сущность изобретения
Варианты осуществления настоящей заявки обеспечивают устройства и способы кодирования и декодирования, соответствующие независимыми пунктами формулы изобретения.
Перечисленные выше и другие задачи решаются объектом независимых пунктов формулы изобретения. Дополнительные формы реализации очевидны из зависимых пунктов формулы изобретения, описания и чертежей.
Первый подход настоящего раскрытия обеспечивает способ кодирования, реализуемый устройством декодирования или устройством кодирования, причем упомянутый способ содержит этапы, на которых: получают значение параметра угла текущего блока; получают значение ширины текущего блока и значение высоты текущего блока; вычисляют значение сравнения между значением ширины и значением высоты; вычисляют значение расстояния до выборки для выборки в текущем блоке, в соответствии со значением параметра угла и значению сравнения; и получают значение предсказания для выборки в текущем блоке, в соответствии со значением расстояния до выборки.
В варианте осуществления изобретения параметр угла и параметр угла являются синонимами.
В соответствии с настоящим изобретением, вычисляют значение сравнения между значением ширины блока и значением высоты блока. Это значение сравнения используется для вычисления значения расстояния до выборки и значение предсказания вычисляется гораздо более точно. Следовательно, остаток предсказания может быть уменьшен и эффективность кодирования может быть повышена.
В одном из вариантов осуществления вычисление значения расстояния до выборки для выборки в текущем блоке, соответствующего значению параметра угла и значению сравнения, содержит этапы, на которых:
получают первое значение, в соответствии со значением параметра угла и значением сравнения;
вычисляют значение расстояния до выборки для выборки в текущем блоке, в соответствии с первым значением.
В одном из вариантов осуществления вычисление значения расстояния до выборки для выборки в текущем блоке, в соответствии с первым значением, содержит этапы, на которых:
вычисляют значение расстояния до выборки для выборки в текущем блоке, в соответствии с первым значением.
В одном из вариантов осуществления вычисление значения расстояния до выборки для выборки в текущем блоке, в соответствии с первым значением, содержит этап, на котором:
вычисляют значение расстояния до выборки в текущем блоке, в соответствии с первым значением, значению параметра угла, значению индекса расстояния (например, индекса расстояния текущего блока), значению ширины и значению высоты.
В одном из вариантов осуществления значение расстояния до выборки представляет расстояние выборки по горизонтали или по вертикали или сочетание расстояний выборки по вертикали и по горизонтали до линии деления, где линия деления используется для деления блока кодирования на два субблока.
В одном из вариантов осуществления получение значения предсказания для выборки в текущем блоке, соответствующего первому значению, содержит этапы, на которых:
вычисляют два весовых коэффициента, соответствующих значению расстояния до выборки;
получают значение предсказания для выборки в текущем блоке, в соответствии с первым значением предсказания, второе значение предсказания и два весовых коэффициента, например, "применяют два весовых коэффициента к 1-му значению предсказания и ко 2-му значению предсказания" или "применяют первый весовой коэффициент к первому значению предсказания и второй весовой коэффициент ко второму значению предсказания".
В одной из реализаций значение сравнения получают в соответствии со следующим:
whRatio = (W >= H) ? W/H : H/W,
где whRatio – значение сравнения, W – значение ширины, H – значение высоты.
В одной из реализаций значение параметра угла является целым числом, диапазон значений для значений параметра угла составляет диапазон между 0 и 31, включая 0 и 31.
В одной из реализаций значение сравнения получают в соответствии со следующим:
whRratio = (wIdx >= hIdx) ? wIdx − hIdx : hIdx – wIdx,
где whRatio является значением сравнения, W – значение ширины, H – значение высоты, значение wIdx равно log2(W) – 3, и значение hIdx равно log2(H) – 3.
В одной из реализаций значение расстояния до выборки вычисляется в соответствии со следующим:
sample_dist = ((2*x) − W + K)*f1(alpha) + ((2*y) − H + K))*f2(alpha) − distanceIdx*stepD*scaleStep,
где sample_dist является значением расстояния до выборки, f1() и f2() являются функциями и alpha является значением параметра угла; stepD является первым значением, значение scaleStep равно либо значению ширины, либо значению высоты; x и y являются координатами относительно верхней-левой выборки текущего блока; и К является целочисленным значением смещения.
В одной из реализаций значение расстояния до выборки вычисляется в соответствии со следующим:
sample_dist = ((2*x) − W + K)*f(dispIdxN) + ((2*y) − H + K))*f(dispIdxS) − distanceIdx*stepD*scaleStep,
где sample_dist является значением расстояния до выборки, f1() является функцией, dispIdxN или dispIdxS являются индексными значениями; stepD является первым значением, значение scaleStep равно либо значению ширины, либо значению высоты; x и y являются координатами относительно верхней-левой выборки текущего блока; и К является целочисленным значением смещения.
Второй подход настоящего изобретения обеспечивает устройство видеокодирования или видеодекодирования, в котором устройство содержит: модуль получения параметра, выполненный с возможностью получения значения параметра угла для текущего блока; модуль получения параметра, также выполненный с возможностью получения значения ширины и значения высоты; модуль вычисления сравнения, выполненный с возможностью вычисления значения сравнения между значением ширины и значением высоты; модуль вычисления расстояния до выборки, выполненный с возможностью вычисления значения расстояния до выборки для выборки в текущем блоке, соответствующего значению параметра угла и значению сравнения; модуль предсказания, выполненный с возможностью получения значения предсказания для выборки в текущем блоке, соответствующего значению расстояния до выборки.
Способ, соответствующий первому аспекту изобретения, может выполняться устройством, соответствующим второму подходу изобретения. Дополнительные признаки и формы осуществления представленных выше способов соответствуют признакам и формам осуществления устройства, соответствующего второму подходу изобретения.
В одном из вариантов осуществления раскрывается декодер (30) или кодер (20), содержащий схему обработки для выполнения способа, соответствующего любому из представленных выше вариантов осуществления и реализаций.
В одном из вариантов осуществления раскрывается компьютерный программный продукт, содержащий управляющую программу для выполнения способа, соответствующего любому из представленных выше вариантов осуществления и реализаций.
В одном из вариантов осуществления раскрывается декодер или кодер, который содержит:
один или более процессоров; и
считываемый компьютером носитель запоминающего устройства долгосрочного пользования, связанный с процессорами и хранящий программирование для его исполнения процессорами, в котором, программирование, когда исполняется процессорами, конфигурирует декодер или кодер для выполнения способа, соответствующего любому из представленных выше вариантов осуществления или реализации.
В варианте осуществления обеспечивается носитель запоминающего устройства долгосрочного пользования, содержащий кодированный битовый поток, декодируемый устройством декодирования изображения, причем битовый поток формируется делением кадра видеосигнала или сигнала изображения на множество блоков, и содержит множество элементов синтаксиса, где множество элементов синтаксиса содержит индикатор (синтаксис), соответствующий любому из представленных выше вариантов осуществления и реализации.
Подробности одного или более вариантов осуществления изложены ниже на приложенных чертежах и в описании. Другие признаки, задачи и преимущества станут очевидны из описания, чертежей и формулы изобретения.
Краткое описание чертежей
В дальнейшем варианты осуществления изобретения описываются более подробно со ссылкой на приложенные чертежи, на которых:
фиг. 1A - блок-схема примера системы видеокодирования, выполненной с возможностью реализации вариантов осуществления раскрытия;
фиг. 1B - блок-схема другого примера системы видеокодирования, выполненной с возможностью реализации вариантов осуществления изобретения;
фиг. 2 - блок-схема примера видеокодера, выполненного с возможностью реализации вариантов осуществления изобретения;
фиг. 3 - блок-схема примера структуры видеодекодера, выполненного с возможностью реализации вариантов осуществления раскрытия;
фиг. 4 - блок-схема примера устройства кодирования или устройства декодирования;
фиг. 5 - блок-схема другого примера устройства кодирования или устройства декодирования;
фиг. 6a - пример совместно расположенного блока;
фиг. 6b – пример пространственных соседних блоков;
фиг. 7 - некоторые примеры режима триангулярного предсказания;
фиг. 8 - некоторые примеры режима триангулярного предсказания;
фиг. 9-12 - некоторые примеры деления блока;
фиг. 13 - пример реализации заданной поисковой таблицы для stepD;
фиг. 14 - пример реализации заданной поисковой таблицы для f(0);
фиг. 15 - пример подхода с квантованием, связанного с заданной поисковой таблицей для stepD;
фиг. 16 - пример схемы квантования, в которой для заданного блока кодирования определяется максимальное расстояние сmax;
фиг. 17 - пример схемы квантования, в которой для заданного блока кодирования определяется альтернативное максимальное расстояние сmax;
фиг. 18 - блок-схема примерной структуры системы предоставления контента, реализующей услугу доставки контента;
фиг. 19 – блок-схема структуры примерного оконечного устройства;
фиг. 20 - блок-схема последовательности выполнения операций варианта осуществления способа в соответствии с настоящим изобретением;
фиг. 21 - блок-схема варианта осуществления варианта осуществления устройства в соответствии с настоящим изобретением.
В дальнейшем идентичные ссылочные позиции относятся к идентичным или, по меньшей мере, функционально эквивалентным признакам, если явно не определено иное.
Подробное описание вариантов осуществления
В последующем описании ссылка делается на сопроводительные чертежи, которые составляют часть раскрытия и которые посредством иллюстрации показывают конкретные подходы вариантов осуществления изобретения или конкретные подходы, при которых могут использоваться варианты осуществления настоящего изобретения. Следует понимать, что варианты осуществления изобретения могут использоваться при других подходах и содержать структурные или логические изменения, не отображенные на чертежах. Последующее подробное описание поэтому не должно рассматриваться в ограничивающем смысле и объем защиты настоящего изобретения определяется приложенной формулой изобретения.
Например, подразумевается, что раскрытие в связке с описанным способом может также оставаться действительным для соответствующего устройства или системы, выполненной с возможностью осуществления способа, и наоборот. Например, если описываются один или множество конкретных этапов способа, соответствующее устройство может содержать один или множество блоков, например, функциональных блоков, для выполнения описанных одного или множества этапов способа (например, один блок выполняет один или множество этапов или множество блоков, каждый из которых выполняет один или более из множества этапов), даже если такие один или более блоков явно не описаны или не проиллюстрированы на чертежах. С другой стороны, например, если конкретное устройство описывается на основе одного или множества блоков, например, функциональных блоков, соответствующий способ может содержать один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап выполняет функциональные возможности одного или множества блоков или каждый из множества этапов выполняет функциональные возможности одного или более из множества блоков), даже если такой один или множество этапов явно не описаны или не показаны на чертежах. Дополнительно подразумевается, что признаки различных примерных вариантов осуществления и/или подходов, описанные здесь, могут объединяться друг с другом, если конкретно не указано иное.
Видеокодирование обычно относится к обработке последовательности изображений, которые формируют видео или видеопоследовательность. Вместо термина «изображение» в качестве синонима в области видеокодирования может использоваться термин «кадр» или «картинка». Видеокодирование (или, в общем, кодирование) содержит две части: видеокодирование и видеодекодирование. Видеокодирование выполняется на стороне источника сигнала, обычно содержит обработку (например, путем сжатия) исходных видеоизображений для уменьшения объема данных, требующихся для представления видеоизображений (для более эффективного запоминающего устройства и/или передачи). Видеодекодирование выполняется на стороне места назначения и обычно содержит обратную обработку по сравнению с кодером для реконструирования видеоизображений. Варианты осуществления, относящиеся к «кодированию» видеоизображений (или, в общем, картинок) должны пониматься как относящиеся к «кодированию» или «декодированию» видеоизображений или соответствующих видеопоследовательностей. Сочетание части кодирования и части декодирования также упоминается как CODEC (Coding and Decoding, кодирование и декодирование, кодек).
В случае видеокодирования без потерь исходные видеоизображения могут быть реконструированы, т.е. реконструированные видеоизображения имеют то же самое качество, что и исходные видеоизображения (предполагая отсутствие потерь при передаче или другой потери данных во время хранения или передачи). В случае видеокодирования с потерями выполняется дополнительное сжатие, например, посредством квантования, для уменьшения объема данных, представляющих видеоизображения, которые не могут быть полностью реконструированы в декодере, т.е. качество реконструированных видеоизображений ниже или хуже по сравнению с качеством исходных видеоизображений.
Несколько стандартов видеокодирования принадлежат к группе «гибридных видеокодеков с потерями» (т.е. объединяют пространственное и временное предсказание в области выборок и кодирование с двумерным преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно делится на ряд неперекрывающихся блоков и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, т.е. кодируется на уровне блоков (видеоблоков), например, используя пространственное (внутрикадровое) предсказание и/или временное (межкадровое) предсказание для формирования блока предсказания, вычитая блок предсказания из текущего блока (блока, обрабатываемого в настоящее время/который должен обрабатываться) для получения остаточного блока, преобразуя остаточный блок и квантуя остаточный блок в области преобразования для уменьшения объема данных, который должен передаваться (сжатие), тогда как в декодере, по сравнению с кодером, к кодированному или сжатому блоку для реконструирования текущего блока для презентации применяется обратная обработка. Дополнительно, кодер копирует цикл обработки декодера таким образом, что он формирует идентичные предсказания (например, внутрикадровое и межкадровое предсказание) и/или реконструирования для обработки, т.е. кодирует последующие блоки.
В последующих вариантах осуществления системы 10 видеокодирования, видеокодер 20 и видеодекодер 30 описываются на основе фиг. 1-3.
На фиг. 1A представлена блок-схема примера системы 10 кодирования, например, системы 10 видеокодирования (или, сокращенно, системы 10 кодирования), которая может использовать технологию настоящей заявки. Видеокодер 20 (или, сокращенно, кодер 20) и видеодекодер 30 (или, сокращенно, декодер 30) системы 10 видеокодирования представляют примеры устройств, которые могут быть выполнены с возможностью осуществления технологий в соответствии с различными примерами, описанными в настоящей заявке.
Как показано на фиг. 1A, система 10 кодирования содержит устройство 12 источника, выполненное с возможностью предоставления кодированных данных 21 изображения, например, устройству 14 назначения, для декодирования кодированных данных 13 изображения.
Устройство 12 источника содержит кодер 20 и может дополнительно, т.е. как вариант, содержать источник 16 изображения, предпроцессор (или блок предварительной обработки) 18, например, предпроцессор 18 изображения и интерфейс связи или блок 22 связи.
Источник 16 изображения может содержать или быть любого рода устройством получения изображения, например, камерой для получения изображения реального мира и/или своего рода устройством формирования изображения, например, процессором компьютерной графики для формирования компьютерного изображения с анимацией или любого вида другим устройством для получения и/или предоставления изображения реального мира, формируемого компьютером изображения (например, контента экрана, изображения виртуальной реальности (virtual reality, VR)), и/или любым их сочетанием (например, изображением аугментированной реальности (augmented reality, AR)). Источник изображения может быть любым видом памяти или запоминающим устройством, хранящим любое из вышеупомянутых изображений.
В отличие от предпроцессора 18 и обработки, выполняемой блоком 18 предварительной обработки, изображение или данные 17 изображения могут также упоминаться как необработанное изображение или данные 17 необработанного изображения.
Предпроцессор 18 выполнен с возможностью приема (необработанных) данных 17 изображения и выполнения предварительной обработки данных 17 изображения для получения предварительно обработанного изображения 19 или предварительно обработанных данных 19 изображения. Предварительная обработка, выполняемая предпроцессором 18, может содержать, например, обрезку, преобразование цветового формата (например, из RGB в YCbCr), коррекцию цвета или подавление шумов. Следует понимать, что блок 18 предварительной обработки может быть необязательным компонентом.
Видеокодер 20 выполнен с возможностью приема предварительно обработанных данных 19 изображения и предоставления кодированных данных 21 изображения (более подробная информация будет описана ниже, например, основываясь на фиг. 2).
Интерфейс 22 связи устройства 12 источника может быть выполнен с возможностью приема кодированных данных 21 изображения и передачи кодированных данных 21 изображения (или их любой дополнительно обработанной версии) по каналу 13 передачи к другому устройству, например, к устройству 14 назначения или к любому другому устройству для хранения или прямого реконструирования.
Устройство 14 назначения содержит декодер 30 (например, видеодекодер 30), и может дополнительно, т.е. необязательно, содержать интерфейс связи или блок 28 связи, постпроцессор 32 (или блок 32 последующей обработки) и дисплей 34.
Интерфейс 28 связи устройства 14 назначения выполнен с возможностью приема кодированных данных 21 изображения (или любой другой их дополнительно обработанной версии), например, непосредственно от устройства 12 источника или от любого другого источника, например, от запоминающего устройства, например, от запоминающего устройства кодированных данных изображения, и предоставления кодированных данных 21 изображения декодеру 30.
Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема кодированных данных 21 изображения или кодированных данных 13 через канал прямой связи между устройством 12 источника и устройством 14 назначения, например, через прямое проводное или беспроводное соединение, или через любой вид сети, например, через проводную или беспроводную сеть, или любое их сочетание, или через любой вид частной сети и сети общего пользования или любой вид их сочетания.
Интерфейс 22 связи может быть выполнен, например, с возможностью пакетирования кодированных данных 21 изображения в соответствующий формат, например, пакеты, и/или обработки кодированных данных изображения с помощью любого вида кодирования передачи или обработки для передачи по каналу связи или по сети связи.
Интерфейс 28 связи, представляющий копию интерфейса 22 связи, может быть выполнен с возможностью, например, приема передаваемых данных и обработки данных передачи с помощью любого вида соответствующего декодирования передачи или обработки и/или распаковки для получения кодированных данных 21 изображения.
Оба интерфейса, интерфейс 22 связи и интерфейс 28 связи, могут быть выполнены как однонаправленные интерфейсы связи, как показано стрелкой для канала 13 связи на фиг. 1A, указывающей направление от устройства 12 источника к устройству 14 назначения, или как двунаправленные интерфейсы связи, и могут быть выполнены с возможностью, например, посылки и приема сообщений, например, для установки соединения, подтверждения приема и обмена любой другой информацией, связанной с каналом связи и/или передачей данных, например, передачей кодированных данных изображения.
Декодер 30 выполнен с возможностью приема кодированных данных 21 изображения и предоставления декодированных данных 31 изображения или декодированного изображения 31 (дополнительные подробности будут описаны ниже, например, основываясь на фиг. 3 или фиг. 5).
Постпроцессор 32 устройства 14 назначения выполнен с возможностью последующей обработки декодированных данных 31 изображения (также называемых реконструированными данными изображения), например, декодированного изображения 31, чтобы получить прошедшие последующую обработку данные 33 изображения, например, прошедшее последующую обработку изображение 33. Последующая обработка, выполняемая блоком 32 последующей обработки, может содержать, например, преобразование цветового формата (например, из YCbCr в RGB), коррекцию цвета, обрезку или вторичную выборку или любую другую обработку, например, для подготовки декодированных данных 31 изображения к отображению, например, на дисплее 34.
Дисплей 34 устройства 14 назначения выполнен с возможностью приема прошедших последующую обработку данных 33 изображения для отображения изображения, например, пользователю или наблюдателю. Дисплей 34 может быть или содержать любой вид дисплея для представления реконструированного изображения, например, на интегрированном или внешнем дисплее или мониторе. Дисплеи могут, например, быть жидкокристаллическими дисплеями (liquid crystal display, LCD), дисплеями на органических светодиодах (organic light emitting diode, OLED), плазменными дисплеями, проекторами, микросветодиодными дисплеями, жидкокристаллическими кремниевыми (liquid crystal on silicon, LCoS) дисплеями, цифровым световым процессором (digital light processor, DLP) или любым другим видом дисплея.
Хотя на фиг. 1A устройство 12 источника и устройство 14 назначения показаны как отдельные устройства, варианты осуществления устройств могут также содержать оба устройства или обе технические возможности, устройства 12 источника или его соответствующие функциональные возможности и устройства назначения 14 или его соответствующие функциональные возможности. В таких вариантах осуществления устройство 12 источника или его соответствующие функциональные возможности и устройство 14 назначения или его соответствующие функциональные возможности могут быть реализованы, используя одни и те же аппаратные средства и/или программное обеспечение или отдельные аппаратные средства и/или программное обеспечение или любое их сочетание.
Как должно быть очевидно специалистам в данной области техники, на основе описания существование и (точное) разделение функциональных возможностей различных блоков или функциональных возможностей внутри устройства 12 источника и/или устройства 14 назначения, как показано на фиг. 1A, могут варьироваться в зависимости от реального устройства и применения.
Кодер 20 (например, видеокодер 20) или декодер 30 (например, видеодекодер 30) или кодер 20 и декодер 30 вместе могут быть реализованы схемой обработки, как показано на фиг. 1B, например, как один или более микропроцессоров, цифровых сигнальных процессоров (digital signal processor, DSP), специализированных прикладных интегральных схем (application-specific integrated circuit, ASIC), программируемых логических интегральных схем (field-programmable gate array, FPGA), дискретная логика, аппаратные средства, специализированное видеокодирование или любые их сочетания. Кодер 20 может быть реализован посредством схемы 46 обработки для осуществления различных модулей, как обсуждается в отношении кодера 20, показанного на фиг. 2, и/или любой другой системы кодера или подсистемы, описанных здесь. Декодер 30 может быть реализован схемой 46 обработки, чтобы осуществить различные модули, как обсуждалось в отношении декодера 30, показанного на фиг. 3, и/или любой другой системы декодера или подсистемы, описанных здесь. Схема обработки может быть выполнена с возможностью осуществления различных операций, как обсуждается далее. Как показано на фиг. 5, если технологии реализуются частично в программном обеспечении, устройство может хранить команды программного обеспечения на подходящем считываемом компьютером носителе долговременного хранения и может исполнять команды аппаратными средствами с помощью одного или более процессоров для выполнения технологий, соответствующих настоящему раскрытию. Видеокодер 20 и видеодекодер 30 могут быть интегрированы как часть объединенного кодера/декодера (encoder/decoder, CODEC) в едином устройстве, например, как показано на фиг. 1B.
Устройство 12 источника и устройство 14 назначения могут содержать любое устройство из широкого диапазона устройств, в том числе, любой вид переносных или стационарных устройств, например, ноутбуки или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, абонентские установки, телевизоры, дисплеи, цифровые медиаплееры, консоли видеоигр, устройства потоковой передачи видео (такие как серверы контент-услуг или серверы доставки контента), бытовой радиоприемник, широковещательный передатчик и т.п. и могут использовать или не использовать любого вида операционную систему. В некоторых случаях устройство 12 источника и устройство 14 назначения могут быть оборудованы для беспроводной связи. Таким образом, устройство 12 источника и устройство 14 назначения могут быть устройствами беспроводной связи.
В некоторых случаях система 10 видеокодирования, показанная на фиг. 1А, является просто примером и технологии, представленные в настоящей заявке, могут применяться к настройкам видеокодирования (например, видеокодирования или видеодекодирования), которые не обязательно содержат какую-либо передачу данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются потоком через сеть и т.п. Устройство видеокодирования может кодировать и хранить данные в памяти и/или устройство видеодекодирования может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняются устройствами, которые не связаны друг с другом, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.
Для удобства описания варианты осуществления раскрытия описываются здесь, например, со ссылкой на высокоэффективное видеокодирование (High-Efficiency Video Coding, HEVC) или со ссылкой на программное обеспечение универсального видеокодирования (Versatile Video coding, VVC), стандарт видеокодирования следующего поколения, разработанный Объединенной группой сотрудничества по видеокодированию (Joint Collaboration Team on Video Coding, JCT-VC) Экспертной группы ITU-T по видеокодированию (Video Coding Experts Group, VCEG) ITU-T и Экспертной группой ISO/IEC по цифровой записи видео и звука (Motion Picture Experts Group, MPEG). Любой из специалистов в данной области техники должен понимать, что варианты осуществления изобретения не ограничиваются HEVC или VVC.
Кодер и способ кодирования
На фиг. 2 показана блок-схема примера видеокодера 20, выполненного с возможностью реализации технологий настоящей заявки. В примере, показанном на фиг. 2, видеокодер 20 содержит вход 201 (или входной интерфейс 201), блок 204 вычисления остатка, блок 206 преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обратного преобразования, блок 214 реконструкции, блок 220 контурного фильтра, буфер 230 декодированного изображения (decoded picture buffer, DPB) 230, блок 260 выбора режима, блок 270 статистического кодирования и выход 272 (или выходной интерфейс 272). Блок 260 выбора режима может содержать блок 244 межкадрового предсказания, блок 254 внутрикадрового предсказания и блок 262 деления.
Блок 244 межкадрового предсказания может содержать блок оценки движения и блок компенсации движения (не показан). Видеокодер 20, как показано на фиг. 2, может также упоминаться как гибридный видеокодер или видеокодер, соответствующий гибридному видеокодеку.
Блок 204 вычисления остатка, блок 206 преобразования, блок 208 квантования, блок 260 выбора режима могут упоминаться как формирующие путь прямого прохождения сигнала кодера 20, тогда как блок 210 квантования, блок 212 обратного преобразования, блок 214 реконструкции, буфер 216, контурный фильтр 220, буфер 230 декодированного изображения (DPB), блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания могут упоминаться как формирующие путь обратного прохождения сигнала видеокодера 20, где путь обратного прохождения сигнала видеокодера 20 соответствует пути прохождения сигнала декодера (смотрите видеодекодер 30 на фиг. 3). Блок 210 обратного квантования, блок 212 обратного преобразования, блок 214 реконструирования, контурный фильтр 220, буфер 230 декодированного изображения (DPB), блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания также относятся к формированию «встроенного декодера» видеокодера 20.
Изображения и деление изображений (изображения и блоки)
Кодер 20 может быть выполнен с возможностью приема, например, через вход 201, изображения 17 (или данных 17 изображения), например, изображения последовательности изображений, формирующих видео или видеопоследовательность. Принятое изображение или данные изображения могут также быть предварительно обработанным изображением 19 (или предварительно обработанными данными 19 изображения). Для упрощения, нижеследующее описание относится к изображению 17. Изображение 17 может также упоминаться как текущее изображение или изображение, подлежащее кодированию (в частности, видеокодированию для различения текущего изображения от других изображений, например, ранее кодированных и/или декодированных изображений из той же самой видеопоследовательности, т.е. видеопоследовательности, которая также содержит текущее изображение).
(Цифровое) изображение является или может рассматриваться как двухмерный массив или матрица выборок со значениями интенсивности. Выборка в массиве может также упоминаться как пиксель (краткая форма элемента изображения) или элемент изображения. Количество выборок в горизонтальном и вертикальном направлениях (или по оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовых компонента, т.е. изображение может быть представлено или содержать три массива выборок. В формате RBG или цветовом пространстве изображение содержит соответствующий красный, зеленый и синий массивы выборок. Однако при видеокодировании каждый пиксель обычно представлен в формате яркости и цветности или в цветовом пространстве, например, YCbCr, который содержит компонент яркости, обозначенный Y (иногда также вместо этого используется L), и два компонента цветности, обозначенные Cb и Cr. Компонент Y яркости (luminance или, сокращенно, luma) представляет уровень яркости или интенсивность уровня серого (например, при полутоновом изображении), в то время как две компоненты цветности (chrominance или, сокращенно, chroma) Cb и Cr представляют компоненты информации о цвете или цветности. Соответственно, изображение в формате YCbCr содержит массив выборок яркости (Y) и два массива выборок цветности значений цветности (Cb и Cr). Изображения в формате RGB могут быть преобразованы или трансформированы в формат YCbCr и наоборот, этот процесс также известен как преобразование или трансформация цвета. Если изображение является монохромным, изображение может содержать только массив выборок яркости. Соответственно, изображение может быть, например, массивом выборок яркости в монохромном формате или массивом выборок яркости и двумя соответствующими массивами выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4.
Варианты осуществления видеокодера 20 могут содержать блок деления изображения (не показан на фиг. 2), выполненный с возможностью деления изображения 17 на множество (обычно неперекрывающихся) блоков 203 изображения.
Эти блоки могут также упоминаться как корневые блоки, макроблоки (H.264/AVC) или блоки (block) дерева кодирования (coding tree block, CTB) или блоки (unit) дерева кодирования (coding tree unit, CTU) (H.265/HEVC и VVC). Блок деления изображения может быть выполнен с возможностью использования одного и того же размера блока для всех изображений видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменения размера блока между изображениями или поднаборами или группами изображений и деления каждого изображения на соответствующие блоки.
В дополнительных вариантах осуществления видеокодер может быть выполнен с возможностью приема напрямую блока 203 изображения 17, например, одного, нескольких или всех блоков, формирующих изображение 17. Блок 203 изображения может также упоминаться как блок текущего изображения или блок изображения, подлежащий кодированию.
Подобно изображению 17, блок 203 изображения является или может рассматриваться как двухмерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем изображение 17. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости luma в случае монохромного изображения 17 или массив цветности chroma в случае цветного изображения) или три массива выборок (например, массив яркости и два массива цветности в случае цветного изображения 17) или любое другое количество и/или виды массивов в зависимости от применяемого цветового формата. Количество выборок в горизонтальном и вертикальном направлениях (или по осям) блока 203 определяет размер блока 203. Соответственно, блок может быть массивом выборок, например, MxN (M столбцов и N строк) или массивом MxN коэффициентов преобразования.
Варианты осуществления видеокодера 20, как показано на фиг. 2, могут быть выполнены с возможностью поблочного кодирования изображения 17, например, кодирование и предсказание выполняются для каждого блока 203.
Вычисление остатка
Блок 204 вычисления остатка может быть выполнен с возможностью вычисления остаточного блока 205 (также называемого остатком 205), основываясь на блоке 203 изображения и блоке 265 предсказания (более подробная информация о блоке 265 предсказания представлена ниже), например, путем вычитания значений выборок блока 265 предсказания из значений выборок блока 203 изображения повыборочно (попиксельно) для получения остаточного блока 205 в области выборок.
Преобразование
Блок 206 преобразования может быть выполнен с возможностью применения преобразования, например, дискретного косинусного преобразования (discrete cosine transform, DCT) или дискретного синусного преобразования (discrete sine transform, DST), на значениях выборок остаточного блока 205 для получения коэффициентов 207 преобразования в области преобразования. Коэффициенты 207 преобразования могут также упоминаться как остаточные коэффициенты преобразования и представлять остаточный блок 205 в области преобразования.
Блок 206 преобразования может быть выполнен с возможностью применения целочисленных аппроксимаций DCT/DST, таких как преобразования, указанные для H.265/HEVC. По сравнению с ортогональным DCT-преобразованием, такие целочисленные аппроксимации обычно масштабируются с определенным коэффициентом. Для сохранения нормы остаточного блока, которая обрабатывается прямыми и обратными преобразованиями, дополнительные масштабные коэффициенты применяются как часть процесса преобразования. Масштабные коэффициенты обычно выбираются на основе некоторых ограничений, таких как масштабные коэффициенты, являющиеся степенью числа 2 для операций сдвига, битовая глубина коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т.д. Конкретные масштабные коэффициенты определяются, например, для обратного преобразования, например, блоком 212 обратного преобразования (и соответствующим обратным преобразованием, например, блоком 312 обратного преобразования в видеодекодере 30), и соответствующие масштабные коэффициенты для прямого преобразования, например, блоком 206 преобразования в кодере 20, могут быть соответственно определены.
Варианты осуществления видеокодера 20 (соответственно, блок 206 преобразования) могут быть выполнены с возможностью вывода параметров преобразования, например, типа преобразования или преобразований, например, напрямую или кодированными или сжатыми через блок 270 статистического кодирования, так чтобы, например, видеодекодер 30 мог принимать и использовать параметры преобразования для декодирования.
Квантование
Блок 208 квантования может быть выполнен с возможностью квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209, например, путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 могут также упоминаться, как квантованные коэффициенты 209 преобразования или квантованные остаточные коэффициенты 209.
Процесс квантования может уменьшать битовую глубину, связанную с некоторыми или со всеми коэффициентами 207 преобразования.
Например, n-битовый коэффициент преобразования во время квантования может округляться в меньшую сторону до m-битового коэффициента преобразования, где n больше, чем m. Степень квантования может изменяться путем корректировки параметра квантования (quantization parameter, QP). Например, для скалярного квантования может применяться различное масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры шага квантования соответствуют более тонкому квантованию, тогда как большие размеры шага квантования соответствуют более грубому квантованию. Применяемый размер шага квантования может указываться параметром квантования (quantization parameter, QP). Параметр квантования может быть, например, индексом заданного набора применяемых размеров шага квантования. Например, маленькие параметры квантования могут соответствовать тонкому квантованию (малые размеры шага квантования), а большие параметры квантования могут соответствовать грубому квантованию (большие размеры шага квантования) или наоборот. Квантование может содержать деление на размер шага квантования и соответствующее и/или обратное деквантование, например, блоком 210 обратного квантования, может содержать умножение на размер шага квантования. Варианты осуществления, соответствующие некоторым стандартам, например, HEVC, могут быть выполнены с возможностью использования параметра квантования для определения размера шага квантования. Обычно размер шага квантования может быть вычислен, основываясь на параметре квантования с помощью аппроксимации уравнения с фиксированной точкой , содержащей деление. Дополнительные масштабные коэффициенты могут быть введены для квантования и деквантования, чтобы восстанавливать норму остаточного блока, которая может модифицироваться благодаря масштабированию, используемому при аппроксимации уравнения с фиксированной точкой для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. Альтернативно, специализированные таблицы квантования могут использоваться и сообщаться от кодера к декодеру, например, в битовом потоке. Квантование является операцией с потерями, где потери увеличиваются с увеличением размера шага квантования.
Варианты осуществления видеокодера 20 (соответственно, блока 208 квантования) могут быть выполнены с возможностью вывода параметров квантования (QP), например, непосредственно или кодированными через блок 270 статистического кодирования, так, чтобы, например, видеодекодер 30 мог принимать и применять параметры квантования для декодирования.
Обратное квантование
Блок 210 обратного квантования выполнен с возможностью применения обратного квантования блока 208 квантования к коэффициентам квантования для получения деквантованных коэффициентов 211, например, применяя инверсию схемы квантования, применяемой блоком 208 квантования, на основе или используя тот же самый размер шага квантования, что и блок 208 квантования.
Коэффициенты 211 деквантования могут также упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать, хотя обычно они не идентичны коэффициентам преобразования из-за потерь на квантование коэффициентам 207 преобразования.
Обратное преобразование
Блок 212 обратного преобразования выполнен с возможностью применения обратного преобразования для преобразования, применяемого блоком 206 преобразования, например, обратного дискретного косинусного преобразования (discrete cosine transform, DCT) или обратного дискретного синусного преобразования (inverse discrete sine transform, DST), или другого обратного преобразования для получения реконструированного остаточного блока 213 (или соответствующих деквантованных коэффициентов 213) в области выборок. Реконструированный остаточный блок 213 может также упоминаться, как блок 213 преобразования.
Реконструкция
Блок 214 реконструкции (например, устройство сложения или сумматор 214) выполнен с возможностью сложения блока 213 преобразования (т.е. реконструированного остаточного блока 213) с блоком 265 предсказания, чтобы получить реконструированный блок 215 в области выборок, например, путем сложения – выборка с выборкой – значений выборки реконструированного остаточного блока 213 со значениями выборок блока 265 предсказания.
Фильтрация
Блок 220 контурного фильтра (или, сокращенно, «контурный фильтр» 220), выполнен с возможностью фильтрации реконструированного блока 215, чтобы получить отфильтрованный блок 221, или, в целом, отфильтровать реконструированные выборки для получения отфильтрованных выборок. Блок контурного фильтра, например, выполнен с возможностью сглаживания пиксельных переходов или какого-либо иного улучшения качества видео. Блок 220 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр адаптивного смещения выборок (sample-adaptive offset, SAO) или один или более других фильтров, например, билатеральный фильтр, адаптивный контурный фильтр (adaptive loop filter, ALF), фильтр, повышающий резкость, сглаживающий фильтр или коллаборативные фильтры или любое их сочетание. Хотя блок 220 контурного фильтра на фиг. 2 показан как являющийся контурным фильтром, в других конфигурациях блок 220 контурного фильтра может быть реализован как контурный фильтр последующей обработки. Отфильтрованный блок 221 может также упоминаться, как отфильтрованный реконструированный блок 221.
Варианты осуществления видеокодера 20 (соответственно блока 220 контурного фильтра) могут быть выполнены с возможностью вывода параметров контурного фильтра (таких как информация об адаптивном смещении выборки), например, непосредственно или кодированными посредством блока 270 статистического кодирования, так чтобы, например, декодер 30 мог принимать и применять одни и те же параметры контурного фильтра или соответствующие контурные фильтры для декодирования.
Буфер декодированного изображения
Буфер 230 декодированного изображения (decoded picture buffer, DPB) 230 может быть памятью, в которой хранятся опорные изображения или, в общем, данные опорных изображений, для кодирования видеоданных видеокодером 20. DPB 230 может быть образован любым из множества запоминающих устройств, таким как динамическая оперативная память (dynamic random access memory, DRAM), в том числе, синхронная DRAM (SDRAM), магнитостойкая RAM (MRAM), резистивная RAM (RRAM) или другие типы устройств памяти. Буфер 230 декодирования изображения (DPB) 230 может быть выполнен с возможностью хранения одного или более отфильтрованных блоков 221. Буфер 230 декодированного изображения может быть дополнительно выполнен с возможностью хранения других ранее отфильтрованных блоков, например, ранее реконструированных и отфильтрованных блоков 221 одного и того же текущего изображения или разных изображений, например, ранее реконструированных изображений, и может обеспечивать полностью ранее реконструированные, т.е. декодированные изображения (и соответствующие опорные блоки и выборки) и/или частично реконструированное текущее изображение (и соответствующие опорные блоки и выборки), например, для межкадрового предсказания. Буфер 230 декодированного изображения (decoded picture buffer, DPB) может быть также выполнен с возможностью хранения одного или более нефильтрованных реконструированных блоков 215 или, в общем, нефильтрованных реконструированных выборок, например, если реконструированный блок 215 не отфильтрован блоком 220 контурного фильтра или нет никакой другой дополнительно обработанной версии реконструированных блоков или выборок.
Выбор режима (деление и предсказание)
Блок 260 выбора режима содержит блок 262 деления, блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания и выполнен с возможностью приема или получения исходных данных изображения, например, с помощью исходного блока 203 (текущего блока 203 текущего изображения 17), и реконструированных данных изображения, например, отфильтрованных и/или нефильтрованных реконструированных выборок или блоков одного и того же (текущего) изображения и/или одного или более из числа ранее декодированных изображений, например, полученных из буфера 230 декодированных изображений или других буферов (например, из строчного буфера, который не показан). Реконструированные данные изображения используются в качестве данных опорного изображения для предсказания, например, межкадрового предсказания или внутрикадрового предсказания, чтобы получить блок 265 предсказания или предиктор 265.
Блок 260 выбора режима может быть выполнен с возможностью определения или выбора деления для режима предсказания текущего блока (в том числе, отсутствия деления) и режима предсказания (например, режима внутрикадрового или межкадрового предсказания) и формирования соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для реконструкции реконструируемого блока 215.
Варианты осуществления блока 260 выбора режима могут быть выполнены с возможностью выбора режима деления и предсказания (например, из тех, которые поддерживаются или доступны для блока 260 выбора режима), которые обеспечивают наилучшее соответствие, или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения) или минимальные издержки на сигнализацию (минимальные издержки на сигнализацию означают лучшее сжатие для передачи или хранения), или которые рассматривают или балансируют то и другое. Блок 260 выбора режима может быть выполнен с возможностью определения режима деления и предсказания, основываясь на оптимизации соотношения "искажение-скорость" (rate distortion optimization, RDO), т.е. выбора режима предсказания, который обеспечивает минимальное соотношение "искажение-скорость". Термины «наилучший», «минимальный», «оптимальный» и т.д. в этом контексте не обязательно относятся к общему пониманию «наилучшего», «минимального», «оптимального» и т.д., а могут также относиться к выполнению критерия завершения или выбора, такого как значение превышения порога или падения ниже порога, или другим ограничениям, потенциально ведущим к «субоптимальному выбору», но уменьшающим сложность и время обработки.
Другими словами, блок 262 деления может быть выполнен с возможностью деления блока 203 на блоки меньшего размера или субблоки (которые снова образуют блоки), например, многократно используя деление квадродерева (quad-tree-partitioning, QT), деление двоичного дерева (binary-tree partitioning, BT) или деление троичного дерева (triple-tree-partitioning, TT) или любое их сочетание, и выполнения предсказания для каждой из частей блока или для каждого субблока, где выбор режима содержит выбор древовидной структуры разделенного блока 203 и режимы предсказания применяются к каждой из частей блока или к субблоку.
В дальнейшем, процесс деления (например, посредством блока 260 деления) и предсказания (посредством блока 244 межкадрового предсказания 244 и блока 254 внутрикадрового предсказания), выполняемый в качестве примера видеокодером 20, будет объяснен более подробно.
Деление на части
Блок 262 деления может делить или разбивать текущий блок 203 на части меньшего размера, например, на более мелкие блоки квадратной или прямоугольной формы. Эти более мелкие блоки (который могут также упоминаться как субблоки) могут дополнительно разделяться на еще более мелкие части. Это также упоминается как древовидное деление или иерархическое древовидное деление, где корневой блок, например, на уровне 0 корня дерева (иерархия-уровень 0, глубина 0) может рекурсивно разделяться, например, делиться на два или более блоков следующего, более низкого уровня дерева, например, узлы на уровне 1 дерева (иерархия-уровень 1, глубина 1), где эти блоки могут быть снова разделены в два или более блоков следующего, более низкого уровня, например, уровня 2 дерева (иерархия-уровень 2, глубина 2), и т.д., пока деление не закончится, например, потому, что выполнен критерий завершения, например, достигнуты максимальная глубина дерева или минимальный размер блока. Блоки, которые далее не делятся, также упоминаются как листовые блоки или вершины дерева. Деление с использованием дерева на две части упоминается как двоичное дерево (binary-tree, BT), деление с использованием деления дерева на три части упоминается как троичное дерево (ternary-tree, TT) и деление с использованием дерева на четыре части упоминается как квадродерево (quad-tree, QT).
Как упоминалось выше, термин "блок", как он используется здесь, может быть частью, в частности, квадратной или прямоугольной частью изображения. Со ссылкой, например, на HEVC и VVC, блок может быть или соответствовать блоку древовидного кодирования (coding tree unit, CTU), блоку кодирования (coding unit, CU), блоку предсказания (prediction unit, PU) или блоку преобразования (transform unit, TU) и/или соответствующим блокам, например, блоку древовидного кодирования (coding tree block, CTB), блоку кодирования (coding block, CB), блоку преобразования (transform block, TB) или блоку предсказания (prediction block, PB).
Например, блок дерева кодирования (CTU) может быть или содержать CTB выборок яркости, два соответствующих CТВ выборок цветности изображения, которые имеют три массива выборок или CTB выборок монохромного изображения или изображения, которое кодируется с помощью трех отдельных цветовых плоскостей и структур синтаксиса, используемых для кодирования выборок. Соответственно, блок дерева кодирования (CTB) может быть блоком NxN выборок для некоторого значения N, так что разделение компонента на блоки CTB является делением. Блок кодирования (coding unit, CU) может быть или содержать блок кодирования выборок яркости, два соответствующих блока кодирования выборок цветности изображения, которое имеет три массива выборок, или блок кодирования выборок монохромного изображения или изображения, которое кодируется с помощью трех отдельных цветовых плоскостей и структур синтаксиса, используемых для кодирования выборок. Соответственно, блок кодирования (coding block, CB) может быть блоком MxN выборок для некоторых значений M и N, так что разделение CTB на блоки кодирования является делением.
В вариантах осуществлениях, например, соответствующих HEVC, блок дерева кодирования (CTU) может быть разделен на блоки CU при помощи структуры квадродерева, обозначенной как дерево кодирования. Решение, кодировать ли область изображения, используя межкадровое (временное) или внутрикадровое (пространственное) предсказание, принимается на уровне CU. Каждый CU может быть дополнительно разбит на один, два или четыре блока PU, соответственно типу разбиения PU. Внутри одного PU применяется один и тот же процесс предсказания и соответствующая информация передается декодеру на основе PU. После получения остаточного блока, применяя процесс предсказания на основе типа разбиения PU, CU может быть разделен на блоки преобразования (transform unit, TU) согласно другой структуре квадродерева, подобно дереву кодирования для CU.
В вариантах осуществлениях, например, в соответствии с последним стандартом видеокодирования, который в настоящее время находится в разработке, который упоминается как универсальное видеокодирование (Versatile Video Coding, VVC), разделение с использованием квадродерева и двоичного дерева (quad-tree and binary-tree, QTBT) используется, например, для деления блока кодирования. В структуре блока QTBT CU может иметь квадратную или прямоугольную форму. Например, блок дерева кодирования (CTU) сначала делится посредством структуры квадратичного дерева. Узлы квадратичного дерева дополнительно делятся с помощью структуры двоичного дерева или троичного дерева. Узлы дерева при делении называются блоками кодирования (coding unit, CU) и такая сегментация используется для процесса предсказания и преобразования без какого-либо дополнительного деления. Это означает, что в структуре блоков кодирования QTBT CU, PU и TU имеют один и тот же размер блока. Параллельно, деление на множество частей, например, деление в соответствии со структурой троичного дерева, может также быть предложено для использования вместе со структурой блоков QTBT.
В одном из примеров, блок 260 выбора режима видеокодера 20 может быть выполнен с возможностью реализации любого сочетания описанных здесь технологий деления.
Как описано выше, видеокодер 20 выполнен с возможностью определения или выбора наилучшего или оптимального режима предсказания из набора (например, заданного) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутрикадрового предсказания и/или режимы межкадрового предсказания.
Внутрикадровое предсказание
Набор режимов внутрикадрового предсказания может содержать 35 различных режимов внутрикадрового предсказания, например, ненаправленные режимы, такие как режим DC (или средний) и планарный режим, или направленные режимы, например, как определено в HEVC, или может содержать 67 различных режимов внутрикадрового предсказания, например, ненаправленные режимы, такие как режим DC (или средний) и планарный режим, или направленные режимы, например, как определено для VVC.
Блок 254 внутрикадрового предсказания выполнен с возможностью использования реконструированных выборок соседних блоков одного и того же текущего изображения для формирования блока 265 внутрикадрового предсказания, соответствующего режиму внутрикадрового предсказания из набора режимов внутрикадрового предсказания.
Блок 254 внутрикадрового предсказания (или, в целом, блок 260 выбора режима) дополнительно выполнен с возможностью вывода параметров внутрикадрового предсказания (или, в целом, информации, указывающей выбранный режим внутрикадрового предсказания для блока) на блок 270 статистического кодирования в форме элементов 266 синтаксиса для включения в кодированные данные 21 изображения, так чтобы, например, видеодекодер 30 мог принять и использовать параметры предсказания для декодирования.
Межкадровое предсказание
Набор режимов (или возможных режимов) межкадрового предсказания зависит от доступных опорных изображений (т.е. от предыдущих, по меньшей мере, частично декодированных изображений, например, сохраненных в DBP 230) и других параметров межкадрового предсказания, например, используется ли опорное изображение полностью или только частично, например, область окна поиска вокруг области текущего блока опорного изображения, для поиска наилучшим образом совпадающего опорного блока и/или например, применяется ли пиксельная интерполяция, например, половинная/полуэлементная, четвертьэлементная и/или 1/16-тиэлементная интерполяция.
Дополнительно к упомянутым выше режимам предсказания могут применяться режим пропуска и/или прямой режим.
Блок 244 межкадрового предсказания может содержать блок оценки движения (motion estimation, ME) и блок компенсации движения (motion compensation, MC) (оба не показаны в фиг. 2). Блок оценки движения может быть выполнен с возможностью приема или получения блока 203 изображения (текущего блока 203 изображения текущего изображения 17) и декодированного изображения 231 или по меньшей мере одного или множества из ранее реконструированных блоков, например, реконструированных блоков из одного или множества других/отличающихся ранее декодированных изображений 231 для компенсации движения. Например, видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 231 или, другими словами, текущее изображение и ранее декодированные изображения 231 могут являться частью или формировать последовательность изображений, образующих видеопоследовательность.
Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из множества опорных блоков одного и того же или разных изображений из множества других изображений и предоставления блоку оценки движения опорного изображения (или индекса опорного изображения) и/или смещения (пространственного смещения) между позицией (с координатами x, y) опорного блока и позицией текущего блока как параметров межкадрового предсказания. Это смещение также называют вектором движения (motion vector, MV).
Блок компенсации движения выполнен с возможностью получения, например, приема, параметра межкадрового предсказания и выполнения межкадрового предсказания на основе или используя параметр межкадрового предсказания для получения блока 265 межкадрового предсказания.
Компенсация движения, выполняемая блоком компенсации движения, может содержать выборку или формирование блока предсказания, основываясь на векторе движения/блока, определенном посредством оценки движения, возможно выполняя интерполяции до субпиксельной точности. Интерполяционная фильтрация может формировать дополнительные пиксельные выборки из известных пиксельных выборок, таким образом потенциально увеличивая количество возможных блоков предсказания, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU блока текущего изображения, блок компенсации движения может определить местоположение блока предсказания, на который направлен вектор движения в одном из перечней опорных изображений.
Блок компенсации движения может также формировать элементы синтаксиса, связанные с блоками и видеосекциями для использования видеодекодером 30 при декодировании блоков изображения видеосекции.
Статистическое кодирование
Блок 270 статистического кодирования выполнен с возможностью применения, например, алгоритма или схемы статистического кодирования (например, схемы кодирования с переменной длиной слова (variable length coding, VLC), контекстной адаптивной схемы VLC (context adaptive VLC, CAVLC), схемы арифметического кодирования, бинаризации, контекстного адаптивного двоичного арифметического кодирования (context adaptive binary arithmetic coding, CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (syntax-based context-adaptive binary arithmetic coding, SBAC), статистического кодирования с разделением интервала вероятности (probability interval partitioning entropy, PIPE) или другой методологии или технологии статистического кодирования) или обхода (без сжатия) на квантованных коэффициентах 209, параметрах межкадрового предсказания, параметрах внутрикадрового предсказания, параметрах контурного фильтра и/или других элементах синтаксиса для получения кодированных данных 21 изображения, которые могут быть выведены через вывод 272, например, в форме кодированного битового потока 21, так чтобы, например, видеодекодер 30 мог принимать и использовать параметры для декодирования. Кодированный битовый поток 21 может быть передан видеодекодеру 30 или быть запомнен в памяти для более поздней передачи или извлечения видеодекодером 30.
Для кодирования видеопотока могут использоваться и другие структурные изменения видеокодера 20. Например, кодер 20, основанный на отсутствии преобразования, может квантовать остаточный сигнал напрямую, без блока 206 преобразования, для определенных блоков или кадров. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.
Декодер и способ декодирования
На фиг. 3 показан пример видеодекодера 30, выполненного с возможностью реализации технологий настоящей заявки. Видеодекодер 30 выполнен с возможностью приема кодированных данных 21 изображения (например, кодированного битового потока 21), например, кодированного кодером 20 для получения декодированного изображения 331. Кодированные данные изображения или битовый поток содержат информацию для декодирования кодированных данных изображения, например, данных, которые представляют блоки изображения кодированной видеосекции и связанные с ними элементы синтаксиса.
В примере, показанном на фиг. 3, декодер 30 содержит блок 304 статистического декодирования, блок 310 обратного квантования, блок 312 обратного преобразования, блок 314 реконструкции (например, сумматор 314), контурный фильтр 320, буфер 330 декодированного изображения (decoded picture buffer, DBP), блок 344 межкадрового предсказания и блок 354 внутрикадрового предсказания. Блок 344 межкадрового предсказания может быть блоком компенсации движения или включать в себя блок компенсации движения. Видеодекодер 30 в некоторых примерах может выполнять цикл декодирования, обычно обратный циклу кодирования, описанному со ссылкой на видеокодер 100, показанный на фиг. 2.
Как было объяснено со ссылкой на кодер 20, блок 210 обратного квантования, блок 212 обратного преобразования, блок 214 реконструкции, контурный фильтр 220, буфер 230 декодированного изображения (DPB), блок 344 межкадрового предсказания и блок 354 внутрикадрового предсказания также упоминаются как формирующие «встроенный декодер» видеокодера 20. Соответственно, блок 310 обратного квантования может быть функционально идентичен блоку 110 обратного квантования, блок 312 обратного преобразования может быть функционально идентичен блоку 212 обратного преобразования, блок 314 восстановления может быть функционально идентичен блоку 214 восстановления, контурный фильтр 320 может быть функционально идентичен контурному фильтру 220, и буфер 330 декодированного изображения может быть функционально идентичен буферу 230 декодированного изображения. Поэтому объяснения, предоставленные для соответствующих блоков и функций видеокодера 20, применяются должным образом к соответствующим блокам и функциям видеодекодера 30.
Статистическое декодирование
Блок 304 статистического декодирования выполнен с возможностью синтаксического анализа битового потока 21 (или, вообще говоря, кодированных данных 21 изображения) и выполнения, например, статистического декодирования кодированных данных 21 изображения для получения, например, квантованных коэффициентов 309 и/или декодированных параметров кодирования (не показаны на фиг. 3), например, любых или всех параметров межкадрового предсказания (например, индекса опорного изображения и вектора движения), параметра внутрикадрового предсказания (например, режима внутрикадрового предсказания или индекса), параметров преобразования, параметров квантования, параметров контурного фильтра и/или других элементов синтаксиса. Блок 304 статистического декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, описанным со ссылкой на блок 270 статистического кодирования кодера 20. Блок 304 статистического декодирования может быть дополнительно выполнен с возможностью предоставления блоку 360 выбора режима параметров межкадрового предсказания, параметра внутрикадрового предсказания и/или других элементов синтаксиса, а также других параметров другим блокам декодера 30. Видеодекодер 30 может принимать элементы синтаксиса на уровне видеосекции и/или на уровне видеоблока.
Обратное квантование
Блок 310 обратного квантования может быть выполнен с возможностью приема параметров квантования (quantization parameter, QP) (или, в общем, информации, связанной с обратным квантованием) и квантованных коэффициентов из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, блоком 304 статистического декодирования) и применения, основываясь на параметрах квантования, обратного квантования на декодированных квантованных коэффициентах 309 для получения деквантованных коэффициентов 311, которые могут также упоминаться, как коэффициенты 311 преобразования. Процесс обратного квантования может содержать использование параметра квантования, определенного видеокодером 20 для каждого видеоблока в видеосекции для определения степени квантования и, аналогично, степени обратного квантования, которая должна применяться.
Обратное преобразование
Блок 312 обратного преобразования может быть выполнен с возможностью приема деквантованных коэффициентов 311, также упоминаемых как коэффициенты 311 преобразования, и применения преобразования к деквантованным коэффициентам 311 для получения реконструированных остаточных блоков 213 в области выборок. Реконструированные остаточные блоки 213 могут также упоминаться как блоки 313 преобразования.
Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или концептуально подобным процессом обратного преобразования. Блок 312 обратного преобразования может быть дополнительно выполнен с возможностью приема параметров преобразования или соответствующей информации из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, блоком 304 статистического декодирования) для определения преобразования, которое должно применяться к деквантованным коэффициентам 311.
Реконструкция
Блок 314 реконструкции (например, устройство сложения или сумматор 314) может быть выполнен с возможностью сложения реконструированного остаточного блока 313 с блоком 365 предсказания для получения реконструированного блока 315 в области выборок, например, путем сложения значений выборок реконструированного остаточного блока 313 и значений выборок блока 365 предсказания.
Фильтрация
Блок 320 контурного фильтра (в контуре кодирования или после контура кодирования) выполнен с возможностью фильтрации реконструированного блока 315, чтобы получить отфильтрованный блок 321, например, для сглаживания пиксельных переходов или какого-либо иного улучшения качества видео. Блок 320 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр адаптивного смещения выборок (sample-adaptive offset, SAO) или один или более других фильтров, например, билатеральный фильтр, адаптивный контурный фильтр (adaptive loop filter, ALF), фильтр, повышающий резкость, сглаживающий фильтр или коллаборативные фильтры или любое их сочетание. Хотя блок 320 контурного фильтра на фиг. 3 показан как контурный фильтр, в других конфигурациях блок 320 контурного фильтра может быть реализован как контурный фильтр последующей обработки.
Буфер декодированного изображения
Декодированные видеоблоки 321 изображения затем запоминаются в буфере 330 декодированного изображения, который хранит декодированные изображения 331 в качестве опорных изображений для последующей компенсации движения в других изображениях и/или для вывода, соответственно, на дисплей.
Декодер 30 выполнен с возможностью вывода декодированного изображения 311, например, через вывод 312, для предоставления или поиска пользователем.
Предсказание
Блок 344 межкадрового предсказания может быть идентичен блоку 244 межкадрового предсказания (в частности, блоку компенсации движения), и блок 354 внутрикадрового предсказания функционально может быть идентичен блоку 254 внутрикадрового предсказания и выполнять решения о разбиении или разделении и предсказании, основываясь на параметрах деления и/или предсказания или на соответствующей информации, полученной из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, блоком 304 статистического декодирования). Блок 360 выбора режима может быть выполнен с возможностью осуществления предсказания (внутрикадрового или межкадрового) для каждого блока на основе реконструированных изображений, блоков или соответствующих выборок (фильтрованных или нефильтрованных) для получения блока 365 предсказания.
Когда видеосекция кодируется как внутрикадрово кодированная (I) секция, блок 354 предсказания блока 360 выбора режима выполняется с возможностью формирования блока 365 предсказания для блока изображения текущей видеосекции, основываясь на сообщенном режиме внутрикадрового предсказания и данных, полученных из ранее декодированных блоков текущего изображения. Когда видеоизображение кодируется как межкадрово кодированная (т.е. B или P) секция, блок 344 межкадрового предсказания (например, блок компенсации движения) блока 360 выбора режима выполняется с возможностью формирования блоков 365 предсказания для видеоблока текущей видеосекции, основываясь на векторах движения и других элементах синтаксиса, полученных от блока 304 статистического декодирования. Для межкадрового предсказания блоки предсказания могут формироваться из одного из опорных изображений в пределах одного из перечней опорных изображений. Видеодекодер 30 может создать перечни List 0 и List 1 опорных кадров, используя технологии создания по умолчанию, основываясь на опорных изображениях, хранящихся в DPB 330.
Блок 360 выбора режима выполнен с возможностью определения информации предсказания для видеоблока текущей видеосекции путем синтаксического анализа векторов движения или сопутствующей информации и других элементов синтаксиса и использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, блок 360 выбора режима использует некоторые из полученных элементов синтаксиса, чтобы определить режим предсказания (например, внутрикадровый или межкадровый), используемый для кодирования видеоблоков видеосекции, тип секции межкадрового предсказания (например, секция B, секция P или секция GPB), информацию о построении одного или более перечней опорных изображений для секции, векторы движения для каждого межкадрово кодированного видеоблока секции и другую информацию для декодирования видеоблоков в текущей видеосекции.
Другие варианты видеодекодера 30 могут использоваться для декодирования кодированных данных 21 изображения. Например, декодер 30 может создавать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30 без преобразования может обратно квантовать остаточный сигнал напрямую, без блока 312 обратного преобразования, для некоторых блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обратного преобразования, объединенные в единый блок.
Следует понимать, что в кодере 20 и декодере 30, результат обработки текущего этапа может быть дополнительно обработан и затем выведен на следующий этап. Например, после фильтрации интерполяции, получения вектора движения или контурной фильтрации следующая операция, такая как сжатие Clip или сдвиг, может выполняться для результата процесса фильтрации интерполяции, получения вектора движения или контурной фильтрации.
Следует заметить, что дальнейшие операции могут применяться к полученным векторам движения текущего блока (в том числе, но не ограничиваясь только этим, к управлению векторами движения точки аффинного режима, векторами движения субблока в аффинном режиме, к планарному режиму, режиму ATMVP, к временным векторам движения и так далее). Например, значение вектора движения ограничивается заданным диапазоном, соответствующим представляющему его биту. Если представляющим битом вектора движения является bitDepth, то диапазон равен -2*(bitDepth - 1) ~ 2* (bitDepth -1)-1, где "*"« означает возведение в степень. Например, если bitDepth устанавливается равным, диапазон составляет от -32768 до 32767; если bitDepth устанавливается равным 18, диапазон равен от -131072 до 131071. Здесь предоставлены два способа ограничения вектора движения.
Способ 1: удалить MSB (most significant bit, старший значащий бит) переполнения посредством следующих операций:
ux= ( mvx+2bitDepth ) % 2bitDepth … (1)
mvx = ( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ) : ux … (2)
uy= ( mvy+2bitDepth ) % 2bitDepth …(3)
mvy = ( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ) : uy … (4)
Например, если значение mvx равно -32769, после применения формул (1) и (2) результирующее значение равно 32767. В компьютерной системе десятичные числа сохраняются как двоичные дополнительные коды. Двоичным дополнительным кодом -31769 является 1,0111,1111,1111,1111 (17 битов), затем MSB отбрасывается, так что результирующим двоичным дополнительным кодом является 0111,1111,1111,1111 (десятичное число 32767), который является таким же, как выходной результат применения формул (1) и (2).
ux= ( mvpx + mvdx +2bitDepth ) % 2bitDepth … (5)
mvx = ( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ) : ux … (6)
uy= ( mvpy + mvdy +2bitDepth ) % 2bitDepth … (7)
mvy = ( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ) : uy … (8)
Операции могут применяться во время суммирования mvp и mvd, как показано в формулах (5)-(8).
Способ 2: удаляют MSB переполнения, ограничивая значение:
vx = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx)
vy = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy)
где определением функции Clip3 является следующее:
На фиг. 4 схематично показано устройство 400 видеокодирования, соответствующее варианту осуществления раскрытия. Устройство 400 видеокодирования, как описано здесь, пригодно для реализации раскрытых вариантов осуществления. В варианте осуществления устройство 400 видеокодирования может быть декодером, таким как видеодекодер 30, показанный на фиг. 1A, или кодером, таким как видеокодер 20, показанный на фиг. 1A.
Устройство 400 видеокодирования содержит порты 410 ввода (или входные порты 410) и блоки 420 приемника (Rx) для приема данных; процессор, логический блок или центральный процессор (central processing unit, CPU) 430 для обработки данных; блоки 440 передатчика (Tx) и порты 450 вывода (или выходные порты 450) для передачи данных; и память 460 для хранения данных. Устройство 400 видеокодирования может также содержать оптоэлектрические (optical-to-electrical, OE) компоненты и электрооптические (electrical-to-optical, EO) компоненты, связанные с входными портами 410, блоками 420 приемника, блоками 440 передатчика 440 и выходными портами 450 для ввода или вывода оптических или электрических сигналов.
Процессор 430 реализуется аппаратными средствами и программным обеспечением. Процессор 430 может быть реализован как одна или более микросхем CPU, ядер (например, как многоядерный процессор), FPGA, ASIC и DSP. Процессор 430 осуществляет связь с входными портами 410, приемными блоками 420, передающими блоками 440, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодирования. Модуль 470 кодирования реализует описанные выше раскрытые варианты осуществления. Например, модуль 470 кодирования реализует, обрабатывает, подготавливает или обеспечивает различные операции кодирования. Введение в состав модуля 470 кодирования поэтому обеспечивает существенное улучшение функциональности устройства 400 видеокодирования и переводит устройство 400 видеокодирования в другое состояние. Альтернативно, модуль 470 кодирования реализуется как команды, хранящиеся в памяти 460 и исполняемые процессором 430.
Память 460 может содержать один или более дисков, ленточных накопителей и твердотельных дисков и может использоваться в качестве устройства хранения данных переполнения, чтобы хранить программы, когда такие программы выбираются для исполнения, и чтобы сохранять команды и данные, которые считываются во время исполнения программ. Память 460 может быть, например, энергозависимой и/или энергонезависимой и может быть постоянной памятью (read-only memory, ROM), оперативной памятью (random access memory, RAM), троичной ассоциативной памятью (ternary content-addressable memory, TCAM) и/или статической оперативной памятью (static random-access memory, SRAM).
На фиг. 5 показана упрощенная блок-схема устройства 500, которое может использоваться в качестве одного из устройства 12 источника и устройства 14 назначения или того и другого, показанных на фиг. 1, в соответствии с примером варианта осуществления.
Процессор 502 в устройстве 500 может быть центральным процессором. Альтернативно, процессор 502 может быть любым другим типом устройства или многочисленными устройствами, способными управлять или обрабатывать информацию, существующую на текущий момент или полученную в дальнейшем. Хотя раскрытые реализации могут быть осуществлены с помощью единого процессора, как показано на чертеже, например, процессора 502, с помощью нескольких процессоров могут быть достигнуты преимущества по скорости и эффективности.
Память 504 в устройстве 500 при реализации может быть устройством постоянной памяти (ROM) или устройством оперативной памяти (RAM). В качестве памяти 504 может быть использован любой другой приемлемый тип запоминающего устройства. Память 504 может содержать управляющую программу и данные 506, к которым процессор 502 получает доступ, используя шину 512. Память 504 может дополнительно содержать операционную систему 508 и прикладные программы 510, где прикладные программы 510 включают в себя по меньшей мере одну программу, которая позволяет процессору 502 выполнять описанные здесь способы. Например, прикладные программы 510 могут содержать приложения 1-N, которые дополнительно содержат приложение видеокодирования, выполняющее описанные здесь способы.
Устройство 500 может также содержать одно или более устройств вывода, таких как дисплей 518. Дисплей 518 в одном из примеров может быть сенсорным дисплеем, который объединяет в себе дисплей с сенсорным элементом, дающим возможность воспринимать сенсорные входные данные. Дисплей 518 может быть связан с процессором 502 через шину 512.
Хотя на чертеже шина изображена как единственная, шина 512 устройства 500 может состоять из нескольких шин. Дополнительно, внешняя память 514 может быть напрямую связана с другими компонентами устройства 500 или может быть доступна через сеть и может содержать единый интегрированный блок, такой как карта памяти или многочисленные блоки, такие как несколько карт памяти. Устройство 500 может, таким образом, быть реализовано с большим разнообразием конфигураций.
Например, в случае построения списка кандидатов на слияние (Merge Candidate List Construction), соответствующего ITU-T H.265, список кандидатов на слияние строится, основываясь на следующих кандидатах:
1. До четырех пространственных кандидатов, которых получают из пяти пространственных соседних блоков.
2. Один временный кандидат, получаемый из двух временных, совместно расположенных блоков.
3. Дополнительные кандидаты, включая объединенных би-предиктивных кандидатов.
4. Кандидаты с нулевым вектором движения.
Пространственные кандидаты
Информация о движении пространственных соседних блоков сначала добавляется в список кандидатов на слияние (например, список кандидатов на слияние может быть пустым списком перед тем, как первый вектор движения добавляется в список кандидатов на слияние) в качестве кандидатов из информации о движении. Здесь соседние блоки, которые рассматриваются как вставляемые в список кандидатов на слияние, показаны на фиг. 6b. Для слияния блоков межкадрового предсказания в список на слияние вставляется до четырех кандидатов, последовательно проверяя A1, B1, B0, A0 и B2 в указанном порядке.
Информация о движении может содержать все данные о движении, включающие в себя информацию о том, используются ли один или два списка опорных изображений, а также ссылочный индекс и вектор движения для каждого списка опорных изображений.
В этом примере после проверки, доступен ли соседний блок и содержит ли он информацию о движении, прежде чем считать все данные о движении соседнего блока в качестве кандидата на информацию о движении, выполняют некоторые дополнительные проверки избыточности. Эти проверки избыточности могут делиться на две категории для двух различных целей:
Категория 1 для избежания включения в список кандидатов с избыточными данными движения,
Категория 2 для предотвращения слияния двух частей, которые могут быть выражены другими средствами, которые могут создавать избыточный синтаксис.
Временные кандидаты
На фиг. 6 показаны координаты блоков, из которых извлекаются временные кандидаты на информацию о движении. Совместно расположенный блок является блоком, имеющим те же самые координаты –х и –у, что и текущий блок, но находящимся на другом изображении (одном из опорных изображений). Временные кандидаты на информацию о движении добавляются к списку на слияние, если список не полон (в этом примере список на слияние не полон, когда количество кандидатов в списке на слияние меньше порога, например, порог может быть равен 4, 5, 6 и т.д.).
Дополнительные кандидаты
После вставки пространственных и временных кандидатов на информацию о движении, если список слияния еще не полон, добавляются дополнительные кандидаты, чтобы пополнить список. Размер списка указывается в наборе параметров последовательности и фиксируется для всей кодированной видеопоследовательности.
Процесс построения списка слияния, изложенный в ITU-T H.265 и VVC, выводит список кандидатов на информацию о движении. Процесс построение списка слияния для VVC описан в разделе «8.3.2.2Derivation process for luma motion vectors for merge mode» документа JVET-L1001_v2 Versatile Video Coding (Draft 3), который публично доступен на сайте http://phenix.it-sudparis.eu/jvet/. Термин "информация о движении" относится к данным о движении, которые необходимы для выполнения процесса компенсированного предсказания движения. Информация о движении обычно относится к следующей информации:
• Применяет ли блок уни-предсказание или би-предсказание.
• Идентификатор ID опорного изображения, который используется при предсказании. (2 идентификатора ID, если блок применяет би-предсказание).
• Вектор движения (2 вектора движения, если блок является би-предсказываемым).
• Дополнительная информация.
В VVC и H.265 список кандидатов, который является результатом построения списка слияния, содержит информацию о движениях N кандидатов. Количество N обычно содержится в битовом потоке и может быть положительным целым числом, таким как 5, 6 и т.д. Кандидаты, которые включены в построенный список на слияние, могут содержать информацию уни-предсказания или информацию би-предсказания. Это означает, что кандидат, который выбирается из списка на слияние, может указывать операцию би-предсказания.
Би-предсказание
Специальный режим межкадрового предсказания называется "би-предсказанием", в котором для предсказания блока используются 2 вектора движения. Векторы движения могут указывать на одну и ту же или на разные опорные изображения, где опорное изображение может указываться идентификатором ID списка опорных изображений и индексом опорного изображения. Например, первый вектор движения может указывать первое изображение в списке L0 опорных изображений, а второй вектор движения может указывать на первое изображение в списке L1 опорных изображений. Два списка опорных изображений (например, L0 и L1) могут сохраняться и изображение, указываемое первым вектором движения, выбирается из списка L0, а изображение, указываемое вторым вектором движения, выбирается из списка L1.
В этом примере, если информация о движении указывает би-предсказание, то тогда информация о движении содержит две части:
• Часть L0: Вектор движения и индекс опорного изображения, который указывает ввод в список L0 опорных изображений.
• Часть L1: Вектор движения и индекс опорного изображения, который указывает ввод в список L1 опорных изображений.
Подсчет порядка изображения (Picture Order Count, POC): переменная, которая связана с каждым изображением, уникальным образом идентифицирует связанное изображение из числа всех изображений в CVS (кодированная, видеопоследовательность, Coded Video Sequence) и, когда связанное изображение должно быть выведено из буфера декодированного изображения, указывает положение связанного изображения в порядке вывода относительно порядка положений вывода других изображений в той же самой CVS, которые должны быть выведены из буфера декодированного изображения.
Каждый из списков L0 и L1 опорных изображений может содержать одно или более опорных изображений, каждое и которых идентифицируется посредством РОС. Связь с каждым опорным индексом и значением РОС может сообщаться в битовом потоке. Как пример, списки L0 и L1 опорных изображений могут содержать следующие опорные изображения:
В приведенном выше примере первый ввод (указывается опорным индексом 0), в списке L1 опорных изображений является опорным изображением со значением РОС, равным 13. Второй ввод (указывается опорным индексом 1) в списке L1 опорных изображений является опорным изображением со значением РОС, равным 14.
Триангулярный режим предсказания
Концепция триангулярного режима предсказания должна ввести триангулярное разделение на части для компенсированного предсказания движения. В качестве примера, показанного на фиг. 7, для CU используются два блока триангулярного предсказания, в диагональном направлении или в обратном диагональном направлении. Каждый блок триангулярного предсказания в CU является межкадрово предсказываемым, используя вектор движения уни-предсказания и индекс опорного кадра, которые получают из списка кандидатов для уни-предсказания. Адаптивный процесс взвешивания применяется к диагональному краю после того, как выборки, которые связаны с каждым блоком триангулярного предсказания, были предсказаны, например, посредством компенсации движения или внутрикадрового предсказания. Затем, к CU, в целом, применяется процесс преобразования и квантования. Заметим, что этот режим применяется только к режиму пропуска и к режиму слияния.
В режиме триангулярного предсказания блок разбивается на две триангулярные части (как на фиг. 7) и каждая часть может предсказываться, используя один вектор движения. Вектор движения, который используется для предсказания одной триангулярной части (обозначенной как PU1), может отличаться от вектора движения, который используется для предсказания другой триангулярной части (обозначенной как PU2). В этом примере заметим, что каждая часть может предсказываться, используя только один единственный вектор движения (уни-предсказание), чтобы уменьшить сложность выполнения режима триангулярного предсказания. Другими словами, PU1 и PU2 не могут предсказываться, используя би-предсказание, которое содержит два вектора предсказания.
Субблочный режим предсказания
Триангулярный режим предсказания является специальным режимом субблочного предсказания, в котором блок делится на две части. В приведенном выше примере показаны направления деления на два блока (части с делением под углом 45 градусов и 135 градусов). Заметим, что возможны также другие углы деления и пропорции деления (примеры, показаны на фиг. 8).
В некоторых примерах блок разбивается на 2 субблочных части и для каждой части требуется применять уни-предсказание. Субблочное предсказание представляет собой обобщенную версию триангулярного предсказания.
В этом примере, в соответствии с использованием субблочного режима деления, для получения выборок предсказания применяются следующие этапы:
• Этап 1: разделить блок кодирования на 2 субблока, соответствующих геометрической модели. Эта модель может давать в результате разбиение блока линией деления (например, прямой линией), как для примера показано на фиг. 9-12.
Следует понимать, что результат этапа 1 может быть просто концепцией. Например, после этапа 1 не существует дополнительной концепции "субблок 1" или "субблок 2"; но параметры формирования или получения относятся к линии деления. Выборки могут принадлежать различным субблокам, соответствующим параметрам, относящимся к линии деления.
На этом этапе, в соответствии с геометрической моделью, выборки в блоке кодирования рассматриваются как расположенные в двух субблоках. Субблок А или субблок В содержат часть (но не все) выборок в текущем блоке кодирования. Субблок А или субблок В могут быть представлены в соответствии со знаком sample_dist каждой из выборок. Sample_dist может быть получен в соответствии с примерами и вариантами осуществления, описанными в других местах.
• Этап 2: Получить первый режим предсказания для первого субблока и второй режим предсказания для второго субблока. В этом примере первый режим предсказания не идентичен второму режиму предсказания. В этом примере режим предсказания (первый режим предсказания или второй режим предсказания) может быть режимом межкадрового предсказания, причем информация для межкадрового предсказания может содержать индекс опорного изображения и вектор движения. В другом примере, режим предсказания может быть режимом внутрикадрового предсказания, причем информация для режима внутрикадрового предсказания может содержать индекс режима внутрикадрового предсказания.
• Этап 3: Получить первые значения предсказания и вторые значения предсказания, используя первый режим предсказания и второй режим предсказания, соответственно.
• Этап 4: Получить объединенные значения выборок предсказания, соответствующие объединению первых значений предсказания и вторых значений предсказания в соответствии с делением, раскрытым на этапе 1. Процесс объединения выборок из первого предсказания и второго предсказания для получения объединенных значений выборок предсказания блока может содержать операции фильтрации, операции маскирования или копирование выборок.
В этом примере на этапе 1 блок кодирования разделяется на два субблока различными способами. На фиг. 9 показан пример деления кодового блока, линия 1250 деления которого разделяет блок на 2 субблока. Чтобы определить линию 1250, сообщаются два параметра, одним параметром является угол 1210 alpha, а другим параметром является расстояние 1230 dist.
В некоторых вариантах осуществления, как показано на фиг. 9, угол измеряется между осью х и линией деления, тогда как расстояние измеряется длиной вектора, который перпендикулярен линии деления и проходит через центр текущего блока.
В другом примере, на фиг. 10 показан альтернативный способ представления линии деления, где примеры угла и расстояния отличаются от примеров, показанных на фиг. 9.
В некоторых примерах на этапе 4 деление, раскрытое на этапе 1, используется для объединения первых значений предсказания и вторых значений предсказания, для получения конечных значений предсказания.
В этом примере на этапе 4 применяется операция смешивания, чтобы исключить любые артефакты (появление острых краев и скачков вдоль линии деления). Операция смешивания может быть описана как операция фильтрации вдоль линии деления.
На стороне кодера линия деления (параметры, определяющие линию, например, угол и расстояние) определяется на основе функции стоимости, основанной на соотношении "скорость-искажение". Определенные линейные параметры кодируются в битовый поток. На стороне декодера линейные параметры декодируются (получаются) в соответствии с битовым потоком. На стороне декодера линейные параметры используются для объединения первых значений предсказания и вторых значений предсказания, чтобы получить конечные значения предсказания. Этап 1 не требует, чтобы существовали две концепции блока субкодирования, декодер может использовать блок кодирования и параметры линии, чтобы представить две концепции блока субкодирования.
В этом примере в случае 3 видеоканалов, которые содержат компонент яркости и два компонента цветности, первое предсказание и второе предсказание формируются для каждого канала.
Поскольку существует множество возможностей деления блока кодирования на 2 субблока, сигнализация (кодирование) деления (или разделения) требует много битов. Поскольку значения угла и расстояния могут иметь множество различных значений, которые требуют, чтобы в битовом потоке сообщалось слишком много побочной информации, для повышения эффективности кодирования к побочной информации угла и расстояния применяется схема квантования.
Варианты осуществления настоящего изобретения касаются сообщения параметров деления, например, квантованного параметра угла alphaIdx и квантованного параметра расстояния distanceIdx.
В этом примере в схеме квантования значение угла и значение расстояния могут быть квантованы посредством линейного, универсального устройства квантования, соответствующего
alphaIdx = Round(alpha / ∆alpha),
distanceIdx = Round(dist / ∆dist),
где переменная ∆alpha представляет размеры шага квантования для параметра угла линии деления и переменная ∆dist представляет размеры шага квантования для параметра расстояния линии деления. Соответственно, угол alpha и расстояние dist могут быть реконструированы, используя значения alphaIdx и distanceIdx из битового потока, как
alpha = alphaIdx*∆alpha,
dist = distanceIdx*∆dist.
В этом примере, если угловой размер шага квантования равен ∆alpha = 11,25°, значение alphaIdx может быть в диапазоне от 0 до 31 (включая 0 и 31), чтобы охватить разрешенные углы в евклидовой плоскости. В другом примере значение углового размера шага квантования равен ∆alpha = 22,5°, таким образом, значение alphaIdx может быть в диапазоне от 0 до 15 (включая 0 и 15).
В некоторых вариантах осуществления раскрывается способ квантования информации о расстоянии в зависимости от угла в случае, когда для квантования угла используется линейное универсальное устройство квантования, что означает, что значение ∆alpha для заданного блока кодирования (декодирования или кодирования) является постоянным.
Цель раскрытой схемы квантования состоит в том, чтобы равномерно распределить разрешенные линии деления для заданного блока кодирования, который может иметь различные размеры и различные соотношения сторон. Равномерно распределенное пространство параметров квантованного угла и расстояния повышает эффективность кодирования непрямоугольных компонентов и позволяет компактное представление параметров линии деления.
В некоторых вариантах осуществления способ деления прямоугольного блока кодирования с помощью прямой линии, где прямая линия параметризируется посредством пары параметров, представляющих квантованный угол и квантованное значение расстояния, и квантованное значение расстояния получают в соответствии с процессом квантования в зависимости от значения угла и отношения сторон блока кодирования.
В этом примере расстояние может квантоваться таким образом, что будет удовлетворяться заданный диапазон значений, например, диапазон значений от 0 до 3 (включая 0 и 3). В другом примере расстояние может квантоваться для заданного блока таким образом, что линии деления для заданных пар значений angleIdx и distanceIdx равномерно распределяются и линия деления никогда не выходит за пределы области заданного блока кодирования.
На первом этапе максимальное расстояние сmax может быть получено в зависимости от угла, так что все линии деления со значением расстояния 0 < dist < сmax ограничиваются блоком кодирования например, они пересекают границу блока кодирования). Это в качестве примера приведено на фиг. 15 для блока кодирования размером 16×4 выборок яркости.
В этом примере расстояние ρmax может быть получено как функция, в зависимости от угла alphaR и размера блока кодирования в соответствии со следующим:
,
где alphaR является углом, ранее обозначенным как alpha, выраженным в единицах радиан, w является шириной блока и h является высотой блока, выраженными в единицах выборок яркости. В этом примере значение угла, зависящее от размера шага квантования расстояния ∆dist(alpha) может быть получено как
∆dist (alphaR,w,h) = ρmax((alphaR,w,h) / N,
где N-1 является максимальным значением distanceIdx. Это показано в качестве примера на фиг. 16 для значения ∆angle=22.5° и N=4.
В другом примере значение угла, зависящее от размера шага квантования расстояния может быть получено как
∆dist (alphaR,w,h) = ρmax((alphaR,w,h) - ρth) / N,
где ρth является параметром, используемым для модификации пространства между линиями деления для блока кодирования. В этом примере ρth устанавливается равным ρth = 1,5.
В другом примере максимальное расстояние ρmax может быть получено как функция, в зависимости от угла и размера блока кодирования в соответствии со следующим:
,
где alphaR является углом, выраженным в единицах радиан, w является шириной блока и h является высотой блока, выраженными в единицах выборок яркости. Это показано в качестве примера на фиг. 17 для значения ∆angle=22,5° и N=4.
В этом примере значения ∆dist, зависящее от значения параметра, представляющего угол, параметра, представляющего ширину, и параметра, представляющего высоту, может сохраняться в заранее вычисленной поисковой таблице, чтобы избежать повторных вычислений ∆dist во время процесса кодирования или декодирования.
В варианте осуществления значения ∆dist могут масштабироваться и округляться с целью использования целочисленной арифметики в соответствии со следующим:
stepD = Round(∆dist*2prec),
где stepD представляет линейно масштабированный размер шага расстояния и prec является переменной, используемой для регулирования точности процесса масштабирования. В этом примере значение prec устанавливается равным prec = 7.
В этом примере дополнительно сохраняются заранее вычисленные значения stepD, основанные на значении сравнения сторон whRatio, где значение сравнения сторон зависит от ширины и высоты блока кодирования. Дополнительно, ранее вычисленные значения stepD сохраняются, основываясь на (нормализованном) значении угла angleN, которое является индексным значением, относящимся к углам в первом квадранте евклидовой плоскости (например, 0 ≤ angleN*∆alpha ≤ 90°). Пример такой поисковой таблицы, в которой были применены вышеупомянутые упрощения, можно видеть на фиг. 13.
В одном из вариантов осуществления для получения значений предсказания для выборок блока кодирования применяются нижеследующие этапы.
Этап 1: Для выборки в текущем блоке (блоке декодирования или блоке кодирования) вычисляется расстояние до выборки (sample_dist).
В одном из примеров значение расстояния до выборки представляет расстояние по горизонтали или расстояние по вертикали или сочетание расстояний по горизонтали и по вертикали от выборки до линии деления, где линия деления используется для деления блока кодирования на два субблока. Упомянутая выборка представляется координатами (х, у) относительно верхней-левой выборки блока кодирования. Выборка с координатами (х, у) выборки и sample_dist показаны в качестве примеров на фиг. 11 и 12. Субблок не обязательно является прямоугольным и субблок может быть по форме треугольным или трапецеидальным.
В этом примере первый параметр представляет квантованное значение угла (angleIdx) и второй параметр представляет квантованное значение расстояния (distanceIdx). Два параметра описывают линейное уравнение. В этом примере расстояние 1230 может быть получено в соответствии с distanceIdx (второй параметр) и угол 1210 alpha может быть получен в соответствии с angleIdx (первый параметр). Расстояние 1230 может быть расстоянием от линии деления до центра блока кодирования и угол может быть углом между линией деления и горизонтальной (или, эквивалентно, вертикальной) линией, проходящей через центральную точку блока кодирования.
В конкретном примере значение angleIdx и значение distanceIdx получают, основываясь на форме деления на части режима слияния геометрического деления (который указывается посредством merge_gpm_partition_idx). Например, взаимосвязи между этими значениями показаны в таблице 1. Следует понимать, что в данной реализации соотношения могут быть реализованы в соответствии с таблицей 1 или в соответствии с функцией.
Таблица 1. Спецификация angleIdx и distanceIdx, основанная на merge_gpm_partition_idx
В этом примере на этапе 1 блок кодирования на два субблока различными способами. На фиг. 9 показан пример деления кодового блока, линия 1250 деления которого разделяет блок на 2 субблока. Чтобы описать линию 1250, в битовом потоке сообщается один параметр угла alpha 1210.
В некоторых вариантах осуществления, как показано на фиг. 9, угол измеряется между осью х и линией деления, тогда как расстояние измеряется длиной вектора, перпендикулярного линии деления и проходящего через центр текущего блока.
В другом примере, на фиг. 10 показан альтернативный способ представления линии деления, где примеры угла и расстояния отличаются от примеров, показанных на фиг. 9.
Этап 2: Вычисленное sample_dist используется для вычисления весовых коэффициентов, где весовые коэффициенты используются для объединения первого значения предсказания и второго значения предсказания, соответствующих упомянутой выборке. В этом примере весовые коэффициенты обозначаются как sampleWeight1 и sampleWeight2 и относятся к весу, соответствующему первому значению предсказания, и к весу, соответствующему второму значению предсказания.
В этом примере весовые коэффициенты вычисляются в соответствии с нижеследующими функциями
weightIdxL = partFlip ? 32 + sample_dist : 32 − sample_dist;
wValue = Clip3( 0, 8, ( weightIdxL + 4 ) >> 3 ).
В этом примере wValue является sampleWeight1, и 8-wValue является sampleWeight2. Переменная partFlip определяется в соответствии со значением angleIdx. В этом примере partFlip = ( angleIdx >= 13 && angleIdx <= 27 ) ? 0 : 1, или partFlip = ( angleIdx >= 13 && angleIdx <= 27 ) ? 1 : 0.
Этап 3: Объединенное значение выборки предсказания в координатах (х, у) выборки вычисляется в соответствии с первым значением предсказанием в координатах (х, у), вторым значением предсказания в координатах (х, у), sampleWeight1 и sampleWeight2.
В этом примере значение выборки предсказания получают следующим образом:
pbSamples[ x ][ y ]=Clip3( 0, ( 1<<BitDepth ) − 1, ( predSamplesLA[ x ][ y ] * wValue + predSamplesLB[ x ][ y ] * ( 8 − wValue ) + offset1 ) >> shift1 ).
Здесь bitDepth представляет битовую глубину выборки, переменную shift1 получают в соответствии с bitDepth, в этом примере, shift1= Max( 5, 17 − BitDepth ); Переменную offset1 получают в соответствии с shift1, в этом примере, offset1= 1 << ( shift1 − 1 ), predSamplesLA и predSamplesLB являются двумя массивами (nCbW)x(nCbH).
В варианте осуществления, в соответствии с одним из примеров, этап 1 в приведенных выше вариантах осуществления могут содержать следующие этапы:
Этап 1.1: Получают индексное значение параметра угла (alphaN или angleIdx) для текущего блока, значение ширины текущего блока (W), значение высоты текущего блока (H). W и H являются шириной и высотой текущего блока, выраженными количеством выборок. Например, блок кодирования с шириной и высотой, равными 8, является квадратным блоком, содержащим 64 выборки. В другом примере W и H являются шириной и высотой текущего блока, выраженными количеством выборок. Индексное значение параметра угла может быть получено в соответствии с приведенным выше описанием, обращайтесь к таблице 1.
Этап 1.2: Получают значение сравнения whRatio, в соответствии со значением W и значению H, причем значение whRatio представляет значение сравнения между шириной и высотой текущего блока кодирования.
В этом примере whRatio = H / W; или whRatio= W/H.
В этом примере две переменные nCbW и nCbH указывают ширину и высоту текущего блока кодирования, переменная cIdx указывает индекс цветового компонента.
Переменные nW, nH и whRatio получают следующим образом:
nW = ( cIdx = = 0 ) ? nCbW : nCbW * SubWidthC;
nH = ( cIdx = = 0 ) ? nCbH : nCbH * SubHeightC;
whRatio = nH / nW.
В этом примере переменные SubWidthC и SubHeightC указываются в таблице 2, в зависимости от структуры создания выборок формата цветности, которая указывается посредством chroma_format_idc (chroma_format_idc указывает создание выборок цветности относительно выборок яркости) и separate_colour_plane_flag (separate_colour_plane_flag, равный 1, указывает, что три цветовых компонента формата цветности 4:4:4 кодируются отдельно. separate_colour_plane_flag, равный 0, указывает, что цветовые компоненты не кодируются отдельно. Когда separate_colour_plane_flag отсутствует, подразумевается, что он равен 0. Когда separate_colour_plane_flag равен 1, кодированное изображение состоит из трех отдельных компонентов, каждый из которых состоит из кодированных выборок одной цветовой плоскости (Y, Cb или Cr) и использует монохроматический синтаксис кодирования. В этом случае каждая цветовая плоскость связывается с конкретным значением colour_plane_id. Другие значения chroma_format_idc, SubWidthC и SubHeightC могут быть определены в будущем ITU-T | ISO/IEC.
Таблица 2. Значения SubWidthC и SubHeightC, полученные из chroma_format_idc и separate_colour_plane_flag
При монохроматическом создании выборок существует только один массив выборок, который номинально считается массивом яркости.
При создании выборок 4:2:0 каждый из двух массивов цветности имеет половинную высоту, что и массив яркости, и половинную ширину массива яркости.
При создании выборок 4:2:2 каждый из двух массивов цветности имеет одну и ту же высоту, что и массив яркости, и половинную ширину массива яркости.
При создании выборок 4:4:4, в зависимости от значения separate_colour_plane_flag, применяется следующее:
- Если separate_colour_plane_flag равен 0, каждый из двух массивов цветности имеет ту же самую высоту и ширину, что и массив яркости.
- В противном случае, (separate_colour_plane_flag равен 1), три цветовые плоскости обрабатываются отдельно как монохроматические выборочные изображения.
Этап 1.3: Получают значение stepD, соответствующее поисковой таблице, значение alpha и значение whRatio, в этом примере, как показано на фиг. 13, значение alpha (alphaN или angleIdx) и значение whRatio, используются в качестве индексных значений поисковой таблицы. Значение stepD может также быть получено в соответствии с функцией, в которой значение alpha (alphaN или angleIdx) и значение whRatio являются входными данными функции и значение stepD является выходом функции. В этом примере результат функции подобен или является таким же, как поисковая таблица. В этом примере значение stepD представляет размер шага квантования для процесса вычисления расстояния до выборки
В другом примере функция может быть представлена как stepD = ( angleIdx % 16 = = 8 | | ( angleIdx % 16 != 0 && whRatio > 0 ) ) ? 0 : 1.
Этап 1.4: Вычисляют значение sample_dist в соответствии со значением stepD.
В этом примере для вычисления расстояния до выборки (sample_dist) сначала переменные offsetX и offsetY получают следующим образом:
Если stepD равен 0, применяется следующее:
offsetX = ( −nW ) >> 1,
offsetY=((−nH)>>1) +( angleIdx < 16 ? ( distanceIdx * nH ) >> 3 : −((distanceIdx * nH) >> 3 ) ) ;
В противном случае (stepD равен 1), применяется следующее:
offsetX=((−nW)>>1)+ (angleIdx < 16 ? ( distanceIdx * nW ) >> 3 : −((distanceIdx * nW) >> 3 ) );
offsetY = ( − nH ) >> 1;
– Переменные xL и yL получают следующим образом:
xL = ( cIdx = = 0 ) ? x : x * SubWidthC
yL = ( cIdx = = 0 ) ? y : y * SubHeightC
sample_dist = ( ( ( xL + offsetX ) << 1 ) + 1 ) * disLut[ displacementX] +
( ( ( yL + offsetY ) << 1 ) + 1 ) ) * disLut[ displacementY ].
Переменные displacementX и displacementY получаются следующим образом:
hwRatio = cbHeight / cbWidth;
displacementX = angleIdx;
displacementY = ( angleIdx + 8 ) % 32.
Массив disLut представляется в таблице 3 следующим образом:
Таблица 3. Спецификация массива расстояний при геометрическом разделении disLut
В другом варианте осуществления, в соответствии с примером, этап 1 в приведенных выше вариантах осуществления может содержать следующие этапы:
Этап 1.1: Получают значение параметра угла (alphaN или angleIdx) для текущего блока, значение индекса расстояния (distanceIdx), значение ширины текущего блока (W), значение высоты текущего блока (H). W и H являются шириной и высотой текущего блока, выраженными количеством выборок. Например, блок кодирования с шириной и высотой, равными 8, является квадратным блоком, содержащим 64 выборки. В другом примере W и H являются шириной и высотой текущего блока, выраженными количеством выборок. Индексное значение параметра угла может быть получено в соответствии с приведенным выше описанием, обращайтесь к таблице 1.
Этап 1.2: Получают значение сравнения whRatio, в соответстви со значением W и значением H, причем значение whRatio представляет значение сравнения между шириной и высотой текущего блока кодирования.
В этом примере whRatio = H / W; или whRatio= W/H.
В этом примере две переменные nCbW и nCbH указывают ширину и высоту текущего блока кодирования, переменная cIdx указывает индекс цветового компонента.
Переменные nW, nH и whRatio получают следующим образом:
nW = ( cIdx = = 0 ) ? nCbW : nCbW * SubWidthC
nH = ( cIdx = = 0 ) ? nCbH : nCbH * SubHeightC
whRatio = nH / nW.
Этап 1.3: Получают значение stepD, соответствующее поисковой таблице, значение alpha и значение whRatio, в этом примере, как показано на фиг. 13, значение alphaN и значение whRatio используются в качестве индексных значений поисковой таблицы. В этом примере значение stepD представляет размер шага квантования для процесса вычисления расстояния до выборки Следует понимать, что значение stepD может также быть получено в соответствии с функцией, в которой значение alpha (alphaN или angleIdx) и значение whRatio являются входными данными функции и значение stepD является выходом функции. В этом примере результат функции подобен или является таким же, как поисковая таблица. В этом примере значение stepD представляет размер шага квантования для процесса вычисления расстояния до выборки
В другом примере функция может быть представлена как stepD = ( angleIdx % 16 = = 8 | | ( angleIdx % 16 != 0 && whRatio > 0 ) ) ? 0 : 1.
Этап 1.4: Вычисляют значение sample_dist в соответствии со значением stepD, значением distanceIdx, значением угла (alphaN или angleIdx), значением W и значением H.
В этом примере для вычисления расстояния до выборки (sample_dist) сначала переменные offsetX и offsetY получают следующим образом:
Если stepD равен 0, применяется следующее:
offsetX = ( −nW ) >> 1,
offsetY=((−nH)>>1)+( angleIdx < 16 ? ( distanceIdx * nH ) >> 3 : −((distanceIdx * nH ) >> 3 ) ) ;
В противном случае (stepD равен 1), применяется следующее:
offsetX=((−nW)>>1)+( angleIdx < 16 ? ( distanceIdx * nW ) >> 3 : −( ( distanceIdx * nW ) >> 3));
offsetY = ( − nH ) >> 1;
– Переменные xL и yL получают следующим образом:
xL = ( cIdx = = 0 ) ? x : x * SubWidthC
yL = ( cIdx = = 0 ) ? y : y * SubHeightC
sample_dist = (((xL +offsetX ) << 1) + 1)* disLut[ displacementX] +
(((yL + offsetY ) << 1 ) + 1)) * disLut[ displacementY ].
Переменные displacementX и displacementY получаются следующим образом:
hwRatio = cbHeight / cbWidth;
displacementX = angleIdx;
displacementY = ( angleIdx + 8 ) % 32.
Массив disLut представляется в приведенной выше таблице 3.
В этом примере значение whRatio получают, используя формулу:
whRatio = (wIdx >= hIdx) ? wIdx − hIdx : hIdx – wIdx;
где значение wIdx равно log2(W) – 3 и значение hIdx равно log2(H) – 3.
В этом примере значение whRatio вычисляется как whRatio = (H >= W) ? 1 : 0.
В вариантах осуществления настоящего изобретения значение угла alpha может быть получено из битового потока (в декодере). В одном из примеров диапазон значений для угла является квантованным диапазоном значений между 0 и 31 (включая 0 и 31), обозначенным как angleIdx. В одном из примеров квантованное значение угла принимает только 32 различных значения (поэтому значений между 0 и 31 достаточно, чтобы представить, какое значение угла выбирается). В другом примере диапазон значений для значения угла может быть в пределах 0-15, что означает, что другие 16 квантованных значений угла могут быть выбраны. Заметим, что, в целом, значение угла может быть целочисленным значением больше нуля.
В этом примере значение alphaN является индексным значением, которое получают из битового потока, или значение alpha вычисляется, основываясь на значении индикатора, который получают из битового потока. Например, значение alphaN может быть вычислено по формуле:
alphaN= angleIdx - если angleIdx >= 0 && angleIdx <=Lim,
или
alphaN = 2*Lim – angleIdx - если angleIdx > Lim && angleIdx<= 2*Lim,
или
alphaN = angleIdx – 2*Lim - если angleIdx > 2*Lim && angleIdx <=3*Lim,
или
alphaN = 4*Lim – angleIdx - в противном случае.
где angleIdx является значением индикатора, который получают из битового потока. Значение angleIdx может быть целочисленным значением, диапазон значения для angleIdx находится в пределах между 0-31 (включая 0 и 31).
В другом примере, значение alphaN может быть вычислено по одной из следующих формул:
alphaN= angleIdx или
alphaN = 2*Lim – angleIdx или
alphaN = angleIdx − 2*Lim или
alpha N= 4*Lim – angleIdx.
В приведенных выше формулах Lim является заданным постоянным значением, которое связано с количеством квантованных значений угла. Например, если существуют 32 различных квантованных значений угла, Lim может быть равен 8 (4*Lim равно 32). В другом примере Lim может равняться 4, что соответствует всего 16 различным квантованным значениям угла.
В одном из вариантов осуществления значение sample_dist, используя формулу:
sample_dist = ((2*x) − W + K)*f1(alpha) + ((2*y) − H + K))*f2(alpha) − distanceIdx*stepD*scaleStep,
• f1() и f2() являются функциями и alpha является входным значением для функций. В этом примере f1() и f2() реализуются как поисковые таблицы, значение alpha является индексным значением для поисковых таблиц.
• Значение scaleStep равно либо значению ширины блока кодирования (декодирования или кодирования), либо значению высоты блока кодирования.
• х и у являются координатами упомянутой выборки относительно верхней левой выборки блока кодирования.
• K является целочисленным значением смещения. В этом примере значение K равно 1.
В одном из вариантов осуществления функции f1() и f2() реализуются как поисковые таблицы. В этом примере функции f1() и f2() представляют инкрементное изменение значения sample_dist в отношении изменения значений x и y. В некоторых примерах f1(индекс) представляет значение sample_dist, которое изменяется на единицу, увеличивая значение x (единица может быть увеличением, равным 1), где f2(индекс) представляет значение sample_dist, которое изменяется на единицу, увеличивая значение y. Значение индекса может быть получено из значения индикатора в битовом потоке.
В одном из вариантов осуществления значение sample_dist, используя формулу:
sample_dist = ((2*x) − W + K)*f(dispIdxN) + ((2*y) − H + K))*f(dispIdxS) − distanceIdx*stepD*scaleStep, где:
• f() является функцией, в этом примере функцией f(), которая реализуется как просмотровая таблица.
• dispIdxN или dispIdxS являются индексными значениями, получаемыми из битового потока или вычисляемыми на основе значения индикатора в битовом потоке.
• значение scaleStep равно либо значению ширины блока кодирования (декодирования или кодирования), либо значению высоты блока кодирования.
• х и у являются координатами упомянутой выборки относительно верхней левой выборки блока кодирования.
• K является целочисленным значением смещения. В этом примере значение K равно 1.
В одном из вариантов осуществления функции f1() реализуется как поисковая таблица. Функция f1() представляет инкрементное изменение значения sample_dist в отношении изменения значений x и y. В некоторых примерах f1(индекс1) представляет значение sample_dist, которое изменяется на единицу, увеличивая значение x, где f2(индекс) представляет значение sample_dist, которое изменяется на единицу, увеличивая значение y. Значение index1 и index2 являются индексами в таблице (имеющей целочисленное значение больше или равное 0) которые могут быть получены в соответствии с индикатором в битовом потоке.
В этом примере реализация функции f() показана на фиг. 14. В этом примере значение idx является входным параметром (который может быть index1 или index2), а выход функции показан как f(idx). В этом примере f() является реализацией косинусной функции, использующей целочисленную арифметику, где idx (входное индексное значение) представляет квантованное значение угла.
В этом примере значение stepD представляет квантованное значение расстояния для вычисления расстояния до выборки.
В одном из вариантов осуществления, как показано на фиг. 13, значение stepD получают в соответствии со значением whRatio и значением угла (alpha). В этом примере значение stepD может быть получено следующим образом:
stepD = lookupTable[alphaN][whRatio], где значение alphaN является индексным значением, которое получают из битового потока, или значение alphaN вычисляют, основываясь на значении индикатора, которое получают из битового потока. Например, alpha может быть вычислено по следующей формуле:
alphaN= angleIdx - если angleIdx >= 0 && angleIdx <=8, или
alphaN = 16 – angleIdx - если angleIdx > 8 && angleIdx<= 16, или
alphaN = angleIdx – 16 - если angleIdx > 16 && angleIdx<= 24, или
alphaN = 32 – angleIdx - в противном случае,
где angleIdx является индексным значением, которое получают согласно битовому потоку.
В другом примере,
alphaN= angleIdx - 1, или partFlip = (angleIdx >= 0 && angleIdx <= Lim
или
alphaN = 2*Lim – angleIdx - if angleIdx > Lim && angleIdx<= 2*Lim,
или
alphaN = angleIdx – 2*Lim - если angleIdx > 2*Lim && angleIdx <=3*Lim,
или
alphaN = 4*Lim – angleIdx - в противном случае.
Или в другом примере:
alphaN= angleIdx или
alphaN = 2*Lim – angleIdx или
alphaN = angleIdx − 2*Lim или
alphaN = 4*Lim − angleIdx
В приведенных выше формулах Lim является заданным постоянным значением, которое связано с количеством квантованных значений угла. Например, если существуют 32 различных квантованных значений угла, количество Lim может быть равно 8 (4*Lim равно 32). В другом примере Lim может равняться 4, что соответствует всего 16 различным квантованным значениям угла.
В одном из примеров значение sample_dist получают в соответствии с distanceIdx*stepD*scaleStep, где distanceIdx является индексным значением, которое получают в соответствии с битовым потоком, и значение scaleStep получают в соответствии со значением ширины блока или в соответствии со значением высоты блока. Результат умножения представляет расстояние линии деления до центральной точки блока кодирования (которая имеет координаты x=W/2 и y=H/2).
В этом примере просмотровая таблица, которой это соответствует, является заданной таблицей. Заданная таблица обладает следующими преимуществами:
• Получение расстояния выборки до линии деления обычно является сложным, оно требует решения тригонометрических уравнений, что неприемлемо, когда реализуется стандарт видеокодирования, нацеленный на массово производимые потребительские товары.
В некоторых вариантах осуществления расстояние выборки получают в соответствии с просмотровой таблицей (которая может быть заданной), которая заранее вычисляется промежуточные результаты, соответствующие whRatio и alpha, которые уже соответствуют целочисленной арифметике (здесь, в этом примере, все значения stepD являются целыми числами). Этот промежуточный результат, который получают, используя просмотровую таблицу, тщательно выбирается, поскольку:
• Просмотровая таблица содержит результаты промежуточных вычислений для сложных операций (тригонометрические вычисления), поэтому сложность реализации снижается.
• Размер таблицы поддерживается малым (что может потребовать памяти).
В другом примере значение sample_dist получают в соответствии с distanceIdx*(stepD + T)*scaleStep, где T – значение смещения, имеющее целочисленное значение. В этом примере значение T равно 32.
Как показано на фиг. 20, В одиннадцатом варианте осуществления раскрывается способ кодирования, реализуемый устройством кодирования, где упомянутый способ содержит этапы, на которых:
S2001: получают значение параметра угла для текущего блока
В этом примере значение параметра угла может быть получено путем синтаксического анализа значения индекса, кодированного в видеопотоке, или значения параметра угла может быть определено в соответствии со значением синтаксиса , которое синтаксически анализируется из битового потока видео.
Битовый поток может быть получен в соответствии с проводной сетью или беспроводной сетью. Битовый поток может передаваться с веб-сайта, сервера или с другого удаленного источника, используя коаксиальный кабель, оптоволоконный кабель, витую пару, цифровую абонентскую линию (digital subscriber line, DSL) или беспроводные технологии, такие как инфракрасная, радио, микроволновая, WIFI, Bluetooth, LTE или 5G.
В этом варианте осуществления битовый поток является последовательностью битов, например, в форме потока блоков сетевого уровня абстракции (network abstraction layer, NAL) или байтового потока, который формирует представление последовательности блоков доступа (access unit, AU), образующей одну или более кодированных видеопоследовательностей (coded video sequence, CVS).
В некоторых вариантах осуществления для процесса декодирования сторона декодера считывает битовый поток и получает декодированные изображения из битового потока; для процесса кодирования другая сторона создает битовый поток.
Обычно битовый поток будет содержать элементы синтаксиса, которые формируются структурой синтаксиса. элемент синтаксиса: Элемент данных представляется в битовом потоке.
структура синтаксиса: Ноль или большее количество элементов синтаксиса представляют вместе в битовом потоке в определенном порядке.
В конкретном примере форматы битового потока указывают взаимосвязь между потоком блоков сетевого уровня абстракции (network abstraction layer, NAL) и потоком байтов, каждый из которых упоминается как битовый поток.
Битовый поток может быть, например, в одном из двух форматов: формат потока блоков NAL или формат потока байтов. Формат потока блоков NAL концептуально является более "базовым" типом. Формат потока блоков NAL содержит последовательность структур синтаксиса, называемых блоками NAL. Эта последовательность заказывается в следующем порядке. В потоке блоков NAL существуют ограничения, накладываемые на порядок декодирования (и содержание) блоков NAL.
Формат потока байтов может выстраиваться из формата потока блоков NAL, выстраивая блоки NAL в порядке декодирования и снабжая каждый блок NAL начальным кодовым префиксом и нулем или более байтами нулевого значения, чтобы формировать поток байтов. Формат потока блоков NAL может быть извлечен из формата потока байтов путем поиска местоположения уникального шаблона начальных кодовых префиксов внутри этого потока байтов.
Этот пункт указывает вариант осуществления взаимосвязи между исходным и декодированным изображением, которое подается через битовый поток.
Источник видео, который представляется битовым потоком, является последовательностью изображений в порядке декодирования.
В этом примере получают значение индикатора для текущего блока, соответствующего битовому потоку. Значение индикатора используется для получения значения параметра угла.
В варианте осуществления значение индикатора используется для указания формы деления на части режима слияния геометрического деления на части. Например, индикатор может быть merge_gpm_partition_idx[ x0 ][ y0 ], где merge_gpm_partition_idx[ x0 ][ y0 ] указывает форму деления на части режима слияния геометрического деления на части. Индексы x0, y0 массива указывают местоположение (x0, y0 ) верхней-левой выборки яркости рассматриваемого блока кодирования относительно верхней-левой выборки яркости изображения.
Обычно, значение merge_gpm_partition_idx[ x0 ][ y0 ] декодируется из битового потока. В этом примере диапазон значений для merge_gpm_partition_idx[ ][ ] составляет от 0 до 63, включая 0 и 63. В этом примере процесс декодирования для merge_gpm_partition_idx[ ][ ] является «bypass» (обход).
Когда merge_gpm_partition_idx[ x0 ][ y0 ] не присутствует, подразумевается, что он равен 0.
Значение параметра угла для теущего блока получают в соответствии со значением индикатора и заданной просмотровой таблицей.
В варианте осуществления переменная angleIdx угла деления (параметр угла) и переменная расстояния distanceIdx режима геометрического деления устанавливаются в соответствии со значением merge_gpm_partition_idx[ xCb ][ yCb ] (индикатор), как указано в последующей таблице. При реализации это соотношение может быть осуществлено в соответствии с таблицей 1 или в соответствии с функцией.
Таблица 1. Спецификация angleIdx и distanceIdx, основанная на merge_gpm_partition_idx
S2002: получают значение ширины текущего блока и значение высоты текущего блока.
В этом примере W и H являются шириной и высотой текущего блока, выраженными количеством выборок, причем W и H анализируются из битового потока. Например, блок кодирования с шириной и высотой, равными 8, является квадратным блоком, содержащим 64 выборки. В другом примере W и H являются шириной и высотой текущего блока, выраженными количеством выборок.
S2003: вычисляют значение сравнения между значением ширины и значением высоты.
В варианте осуществления значение whRatio представляет сравнение между шириной и высотой текущего блока кодирования.
В этом примере whRatio = H / W; или whRatio= W/H.
В этом примере две переменные nCbW и nCbH указывают ширину и высоту текущего блока кодирования, переменная cIdx указывает индекс цветового компонента.
Переменные nW, nH и whRatio получают следующим образом:
nW = ( cIdx = = 0 ) ? nCbW : nCbW * SubWidthC;
nH = ( cIdx = = 0 ) ? nCbH : nCbH * SubHeightC;
whRatio = nH / nW.
В этом примере переменные SubWidthC и SubHeightC указываются в таблице 2 в зависимости от структуры получения выборок формата цветности, которая указывается через sps_chroma_format_idc and sps_separate_colour_plane_flag.
Таблица 2. Значения SubWidthC и SubHeightC, полученные из sps_chroma_format_idc and sps_separate_colour_plane_flag
При монохроматическом создании выборок существует только один массив выборок, который номинально считается массивом яркости.
При создании выборок 4:2:0 каждый из двух массивов цветности имеет половинную высоту и половинную ширину массива яркости.
При создании выборок 4:2:2 каждый из двух массивов цветности имеет одну и ту же высоту и половинную ширину массива яркости.
При создании выборок 4:4:4, в зависимости от значения sps_separate_colour_plane_flag применяется следующее:
– Если sps_separate_colour_plane_flag равен 0, каждый из двух массивов цветности имеет ту же самую высоту и ширину, что и массив яркости.
– В противном случае, (sps_separate_colour_plane_flag равен 1), три цветовые плоскости обрабатываются отдельно как монохроматические выборочные изображения.
S2004: вычисляют значение расстояния до выборки для выборки в текущем блоке, в соответствии со значением параметра угла и значением сравнения.
В этом варианте этап S2004 содержит:
Этап 1: Получают значение shiftHor, соответствующее просмотровой таблице, значение alpha и значение whRatio.
В этом примере значение alpha (alphaN или angleIdx) и значение whRatio используются в качестве индексных значений просмотровой таблицы. Значение shiftHor может также быть получено в соответствии с функцией, в которой значение alpha (alphaN или angleIdx) и значение whRatio являются входными данными функции и значение shiftHor является выходом функции. В этом примере результат функции подобен или является таким же, как поисковая таблица. В этом примере значение shiftHor представляет размер шага квантования для процесса вычисления расстояния до выборки.
В другом примере функция может представляться как shiftHor = ( angleIdx % 16 = = 8 | | ( angleIdx % 16 != 0 && whRatio ) ) ? 0 : 1.
Этап 2: значение sample_dist вычисляется в соответствии со значением shiftHor.
В этом примере для вычисления расстояния до выборки (sample_dist) сначала переменные offsetX и offsetY получают следующим образом:
Если shiftHor равно 0, применяется следующее:
offsetX = ( −nW ) >> 1,
offsetY = ( ( −nH ) >> 1 ) + ( angleIdx < 16 ? ( distanceIdx * nH ) >> 3 : −( ( distanceIdx * nH ) >> 3 ) ) ;
В противном случае (shiftHor равно 1), применяется следующее:
offsetX = ( ( −nW ) >> 1) + ( angleIdx < 16 ? ( distanceIdx * nW ) >> 3 : −((distanceIdx * nW ) >> 3));
offsetY = ( − nH ) >> 1;
– Переменные xL и yL получают следующим образом:
xL = ( cIdx = = 0 ) ? x : x * SubWidthC
yL = ( cIdx = = 0 ) ? y : y * SubHeightC
sample_dist = ( ( ( xL + offsetX ) << 1 ) + 1 ) * disLut[ displacementX ] + ( ( ( yL + offsetY ) << 1 ) + 1 ) ) * disLut[ displacementY ].
Переменные displacementX и displacementY получаются следующим образом:
hwRatio = cbHeight / cbWidth;
displacementX = angleIdx;
displacementY = ( angleIdx + 8 ) % 32.
Массив disLut представляется в таблице 3.
В некоторых вариантах осуществления в соответствии с геометрической моделью выборки в блоке кодирования рассматриваются как расположенные в двух субблоках. Субблок А или субблок В могут содержать часть (но не все) выборок в текущем блоке кодирования. Субблок А или субблок В могут быть представлены в соответствии со знаком sample_dist каждой из выборок. Sample_dist может быть получен в соответствии с примерами и вариантами осуществления, описанными в других местах.
S2005: Получают значение предсказания для выборки в текущем блоке, соответствующем значению расстояния до выборки.
В одной из реализаций получение значения предсказания для выборки, соответствующего значению расстояния до выборки, содержит этапы, на которых:
вычисляют два весовых коэффициента, соответствующих значению расстояния до выборки;
получают значение предсказания для выборки, соответствующей первому значению предсказания, второму значению предсказания и двум весовым коэффициентам.
В одной из реализаций значение расстояния до выборки представляет расстояние по горизонтали или расстояние по вертикали или сочетание расстояний выборки по горизонтали и по вертикали до линии деления, где линия деления используется для деления блока кодирования на два субблока.
В одном из примеров вычисленное значение sample_dist используется для вычисления весовых коэффициентов, где весовые коэффициенты используются для объединения первого значения предсказания и второго значения предсказания, соответствующих упомянутой выборке. В этом примере весовые коэффициенты обозначаются как sampleWeight1 и sampleWeight2 и относятся к весу, соответствующему первому значению предсказания, и к весу, соответствующему второму значению предсказания.
В этом примере весовые коэффициенты вычисляются в соответствии с нижеследующими функциями
weightIdxL = partFlip ? 32 + sample_dist : 32 − sample_dist;
wValue = Clip3( 0, 8, ( weightIdxL + 4 ) >> 3 ).
В этом примере wValue является sampleWeight1, и 8-wValue является sampleWeight2. Переменная partFlip определяется в соответствии со значением angleIdx. В этом примере partFlip = ( angleIdx >= 13 && angleIdx <= 27 ) ? 0 : 1, или partFlip = ( angleIdx >= 13 && angleIdx <= 27 ) ? 1 : 0.
В этом примере объединенное значение выборки предсказания в координатах (х, у) выборки вычисляется в соответствии с первым значением предсказанием в координатах (х, у), вторым значением предсказания в координатах (х, у), sampleWeight1 и sampleWeight2.
В этом примере значение выборки предсказания получают следующим образом:
pbSamples[ x ][ y ] = Clip3( 0, ( 1 << BitDepth ) − 1, redSamplesLA[ x ][ y ] * wValue + predSamplesLB[ x ][ y ] * ( 8 − wValue ) + offset1 ) >> shift1 ).
Здесь bitDepth представляет битовую глубину выборки, переменную shift1 получают в соответствии с bitDepth, в этом примере, shift1= Max( 5, 17 − BitDepth ); Переменную offset1 получают в соответствии с shift1, в этом примере, offset1= 1 << ( shift1 − 1 ), predSamplesLA и predSamplesLB являются двумя массивами (nCbW)x(nCbH).
Как показано на фиг. 21, раскрывается устройство 2100. Устройство 2100 содержит: модуль 2101 получения параметров, выполненный с возможностью получения значения параметра угла для текущего блока; модуль 2101 получения параметров также выполненный с возможностью получения значения ширины текущего блока и значения высоты текущего блока; модуль вычисления расстояния; модуль 2102 вычисления сравнения, выполненный с возможностью вычисления значения сравнения между значением ширины и значением высоты; модуль 2103 вычисления расстояния до выборки, выполненный с возможностью вычисления значения расстояния до выборки для выборки в текущем блоке, соответствующего значению параметра угла и значению сравнения; модуль 2104 предсказания, выполненный с возможностью получения значения предсказания для выборки в текущем блоке, соответствующем значению расстояния до выборки.
Способ, соответствующий вариантам осуществления изобретения, может выполняться устройством 2100.
Дополнительные признаки и формы осуществления представленных выше способов соответствуют признакам и формам осуществления устройства 2100.
Пример. 1. Способ кодирования, реализуемый устройством декодирования или устройством кодирования, где упомянутый способ содержит этапы, на которых:
получают значение параметра угла для текущего блока;
получают значение ширины текущего блока и значение высоты текущего блока;
вычисляют значение сравнения между значением ширины и значением высоты;
получают первое значение, в соответствии со значением параметра угла и значением сравнения;
вычисляют значение расстояния до выборки для выборки в текущем блоке, в соответствии с первым значением;
получают значение предсказания для выборки в текущем блоке, в соответствии со значением расстояния до выборки.
Пример 2. Способ по примеру 1, в котором первое значение получают в соответствии с заданной просмотровой таблицей, значение параметра угла и значение сравнения используются в качестве индексного значения для заданной просмотровой таблицы.
Пример 3. Способ по примеру 2, в котором заданная просмотровая таблица содержит 9 различных значений угла (0-8).
Пример 4. Способ по примеру 2, в котором заданная просмотровая таблица содержит 5 различных значений угла (0-4).
Пример 5. Способ по любому из примеров 2-4, в котором заданная просмотровая таблица содержит 4 различных значений сравнения (0-3).
Пример 6. Способ по любому из примеров 2-4, в котором заданная просмотровая таблица содержит 5 различных значений сравнения (0-4).
Пример 7. Способ по любому из примеров 2-4, в котором заданная просмотровая таблица содержит 3 различных значений сравнения (0-2).
Пример 8. Способ по любому из примеров 2-7, в котором заданная просмотровая таблица содержит первое значение, соответствующее каждому сочетанию значений угла и значений сравнения.
Пример 9. Способ по любому из примеров 1-8, в котором вычисление значения расстояния до выборки для выборки в текущем блоке, соответствующего первому значению, содержит этапы, на которых:
вычисляют значение расстояния до выборки для выборки в текущем блоке, в соответствии с первым значением и значению параметра угла.
Пример 10. Способ по любому из примеров 1-9, в котором значение сравнения получают согласно следующему:
whRratio = (wIdx >= hIdx) ? wIdx − hIdx : hIdx – wIdx,
где whRatio является значением сравнения, W – значение ширины, H – значение высоты, значение wIdx равно log2(W) – 3, и значение hIdx равно log2(H) – 3.
Пример 11. Способ по любому из примеров 1-9, в котором значение сравнения получают согласно следующему:
whRatio = (W >= H) ? W/H : H/W,
где whRatio – значение сравнения, W – значение ширины, H – значение высоты.
Пример 12. Способ по любому из примеров 1-11, в котором значение расстояния до выборки вычисляют согласно следующему:
sample_dist = ((2*x) − W + K)*f1(alpha) + ((2*y) − H + K))*f2(alpha) − distanceIdx*stepD*scaleStep,
где sample_dist является значением расстояния до выборки, f1() и f2() являются функциями и alpha является значением параметра угла (в этом примере f1() и f2() реализуются как просмотровые таблицы, значение alpha является индексным значением для просмотровых таблиц); значение scaleStep равно либо значению ширины, либо значению высоты; x и y являются координатами выборки относительно верхней-левой выборки текущего блока; и К является целочисленным значением смещения.
Пример 13. Способ по любому из примеров 1-11, в котором значение расстояния до выборки вычисляют согласно следующему:
sample_dist = ((2*x) − W + K)*f(dispIdxN) + ((2*y) − H + K))*f(dispIdxS) − distanceIdx*stepD*scaleStep,
где sample_dist является значением расстояния до выборки, f1() является функцией (в этом примере функция f() реализуется как просмотровая таблица), dispIdxN или dispIdxS являются индексными значениями (в этом примере dispIdxN или dispIdxS получают из битового потока или вычисляют на основе значения индикатора в битовом потоке), значение scaleStep равно либо значению ширины или значению высоты, х и y являются координатами относительно верхней-левой выборки текущего блока; и К является целочисленным значением смещения (в этом примере значение K равно 1).
Пример 14. Декодер (30) или кодер, содержащий схему обработки для выполнения способа, соответствующего любому из примеров 1-13.
Пример 15. Компьютерный программный продукт, содержащий управляющую программу для выполнения способа, соответствующего любому из примеров 1-13.
Пример 16. Декодер или кодер, содержащий:
один или более процессоров; и
считываемый компьютером носитель запоминающего устройства долговременного действия, связанный с процессорами и хранящий программирование для его исполнения процессорами, в котором, программирование, когда исполняется процессорами, конфигурирует декодер для выполнения способа, соответствующего любому из примеров 1-13.
Далее приводится объяснение применений способа кодирования, а также, способа декодирования, как они описаны в представленных выше вариантах осуществления, и использующей их системы.
На фиг. 18 представлена блок-схема системы 3100 предоставления контента для реализации услуги распределения контента. Этот система 3100 поддержки контента содержит устройство 3102 получения изображения, оконечное устройство 3106 и, как вариант, содержит дисплей 3126. Устройство 3102 получения изображения осуществляет связь с оконечным устройством 3106 по каналу 3104 связи. Канал связи может содержать канал 13 связи, описанный выше. Линия 3104 связи содержит, но не ограничивается WI-FI, Ethernet, кабельную линию, беспроводную линию связи (3G/4G/5G), USB или их сочетание любого вида и т.п.
Устройство 3102 получения изображения формирует данные и может кодировать данные по способу кодирования, как представлено в приведенных выше вариантах осуществления. Альтернативно, устройство 3102 получения изображения может распределять данные на потоковый сервер (не показан на чертежах) и сервер кодирует данные и передает кодированные данные оконечному устройству 3106. Устройство 3102 получения изображения содержит, не ограничиваясь только этим, камеру, смартфон или планшет, компьютер или переносной компьютер, систему видеоконференций, PDA, устройство, монтируемое на транспортном средстве, или сочетание любых из них и т.п. Например, устройство 3102 получения изображения может содержать устройство 12 источника, как описано выше. Когда данные содержат в себе видеоданные, причем видеокодер 20, содержащийся в устройстве 3102 получения изображения, реально может выполнять процесс видеокодирования. Когда данные содержат в себе аудиоданные (например, голосовые), аудиокодер, содержащийся в устройстве 3102 получения изображения, реально может выполнять процесс аудиокодирования. Для некоторых практических сценариев устройство 3102 получения изображения распределяет кодированные видеоданные и аудиоданные посредством мультиплексирования их вместе. Для других практических сценариев, например, в системе видеоконференций, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 получения изображения раздельно распределяет кодированные аудиоданные и кодированные видеоданные оконечному устройству 3106.
В системе 3100 предоставления контента оконечное устройство 310 принимает и воспроизводит кодированные данные. Оконечное устройство 3106 может быть устройством с возможностями приема и восстановления данных, таким как смартфон или планшет 3108, компьютером или переносным компьютером 3110, сетевым видеорекордером (NVR)/ цифровым видеорекордером (digital video recorder, DVR) 3112, телевизионным приемником 3114, телевизионной приставкой (set top box, STB) 3116, системой 3118 видеоконференций, системой 3120 видеонаблюдения, персональным цифровым помощником (personal digital assistant, PDA) 3122, устройством 3124, монтируемым на транспортном средстве, или сочетанием любых из них и т.п., способным декодировать вышеупомянутые кодированные данные. Например, оконечное устройство 3106 может содержать устройство 14 назначения, как описано выше. Когда кодированные данные содержат в себе видеоданные, видеокодер 30, содержащийся в оконечном устройстве, имеет приоритет выполнения видеодекодирования. Когда кодированные данные содержат в себе аудиоданные, аудиодекодер 30, содержащийся в оконечном устройстве, имеет приоритет выполнения аудиодекодирования.
Для оконечного устройства, имеющего дисплей, например, смартфон или планшет 3108, компьютер или переносной компьютер 3110, сетевой видеорекордер (NVR)/ цифровой видеорекордер (DVR) 3112, телевизионный приемник 3114, персональный цифровой помощник (PDA) 3122, или устройство 3124, монтируемое на транспортном средстве, оконечное устройство может подавать декодированные данные на его дисплей. Для оконечного устройства, не имеющего дисплея, например, STB 3116, система 3118 видеоконференций или система 3120 видеонаблюдения, внешний дисплей 3116 осуществляет с ними связь и показывает декодированные данные.
Когда любое из устройств в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования изображения или устройство декодирования изображения, показанные в упомянутых выше вариантах осуществления.
На фиг. 19 представлена структура примера оконечного устройства 3106. После того, как оконечное устройство 3106 принимает поток от устройства 3102 получения изображения, блок 3202 протокола анализирует протокол передачи потока. Протокол содержит, не ограничиваясь только этим, протокол потоковой передачи в реальном времени (Real Time Streaming Protocol, RTSP), протокол передачи гипертекста (Hyper Text Transfer Protocol, HTTP), протокол живой потоковой передачи HTTP (HTTP Live streaming protocol, HLS), MPEG-DASH, транспортный протокол передачи в реальном времени (Real-time Transport protocol, RTP), протокол передачи сообщений в реальном времени (Real Time Messaging Protocol, RTMP) или их комбинацию любого вида и т.п.
После того, как блок 3202 обработки протокола обработает поток, формируют потоковый файл. Файл выводят на блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделять мультиплексированные данные на кодированные аудиоданные и кодированные видеоданные. Как описано выше, для некоторых практических сценариев, например, в системе видеоконференций, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208, не проходя через блок 3204 демультиплексирования.
Посредством процесса демультиплексирования формируются элементарный видеопоток (elementary stream, ES), аудио ES и, как вариант, субтитры. Видеодекодер 3206, который содержит видеодекодер 30, как объяснялось в вышеупомянутых вариантах осуществления, декодирует видео ES способом декодирования, показанным в вышеупомянутых вариантах осуществления, чтобы сформировать видеокадр, и подает эти данные на блок 3212 синхронизации. Аудиодекодер 3208 декодирует аудио ES, чтобы сформировать аудиокадр, и подает эти данные на блок 3212 синхронизации. Альтернативно, видеокадр может быть сохранен в буфере (не показан на фиг. 19) перед его подачей на блок 3212 синхронизации. Аналогично, аудиокадр может быть сохранен в буфере (не показан на фиг. 19) перед его подачей на блок 3212 синхронизации.
Блок 3212 синхронизации синхронизирует видеокадр и аудиокадр и предоставляет видео/аудио на видео/аудио дисплей 3214. Например, блок 3212 синхронизации синхронизирует представление видеоинформации и аудиоинформации. Информацию можно кодировать в синтаксисе, используя временные отметки, относящиеся к презентации кодированных аудио- и видеоданных, и временные отметки, относящиеся к передаче самого потока данных.
Если в поток включаются субтитры, декодер 3210 субтитров декодирует субтитры и синхронизирует их видеокадром и аудиокадром и подает данные видео/аудио/субтитров на дисплей 3216 видео/аудио/субтитров.
Настоящее изобретение не ограничивается упомянутой выше системой и любое из таких устройств, как устройство кодирования изображения или устройство декодирования изображения, может быть введено в другую систему, например, в автомобильную систему.
Математические операторы
Математические операторы, используемые в настоящей заявке, подобны тем, которые используются в языке программирования "С". Однако, результаты операций целочисленного деления и арифметических сдвигов определяются более точно и определяются дополнительные операции, такие как возведение в степень и деление действительных значений. Правила нумерации и подсчета обычно начинаются с 0, например, "первый" эквивалентно 0-му, "второй" эквивалентно 1-му и т.д.
Арифметические операторы
Приведенные ниже арифметические операторы определяются следующим образом:
Логические операторы
Приведенные ниже логические операторы определяются следующим образом:
Операторы соотношений
Приведенные ниже операторы соотношений определяются следующим образом:
Когда оператор соотношения применяют к элементу синтаксиса или переменной, которой было присвоено значение "na" (not applicable, не применяется), значение "na" для элемента синтаксиса или переменной рассматривается как отдельное значение. Значение "na" рассматривается как неравное никакому другому значению.
Поразрядные операторы
Приведенные ниже операторы соотношений определяются следующим образом:
Операторы присвоения
Приведенные ниже арифметические операторы определяются следующим образом:
Обозначение диапазона
Нижеследующее обозначение используется для указания диапазона значений.
• x = y..z х принимает целочисленные значения, начиная с у до z, включительно, где x, y и z – целые числа и z больше, чем y.
Математические функции
Определяются нижеследующие математические функции:
•
• Asin( x ) тригонометрическая обратная синусная функция, действующая на аргументе х, который находится в диапазоне от −1,0 до 1,0, включительно, с выходным значением в диапазоне от −π÷2 до π÷2, включительно, в единицах радиан.
• Atan( x ) тригонометрическая обратная тангенсная функция, действующая на аргументе х, с выходным значением в диапазоне от −π÷2 до π÷2, включительно, в единицах радиан.
• x
• x Ceil( x ) - наименьшее целое числе, большее или равное х.
• x Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) − 1, x )
• x Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) − 1, x )
• x
• x Cos( x ) - тригонометрическая косинусная функция, действующая на аргументе х в единицах радиан.
• x Floor( x ) - наибольшее целое числе, меньшее или равное х.
•
Ln( x ) - натуральный логарифм x (логарифм по основанию e, где e – базовая постоянная натурального логарифма 2.718 281 828...).
• x Log2( x )- логарифм х по основанию 2.
• x Log10( x ) – логарифм x по основанию 10.
• x Min( x, y ) =
• x Max( x, y ) =
• x Round( x ) = Sign( x ) * Floor( Abs( x ) + 0.5 )
•
• x Sin( x ) - тригонометрическая синусная функция, действующая на аргументе х в единицах радиан.
• x Sqrt( x ) =
• x Swap( x, y ) = ( y, x )
• x Tan( x ) - тригонометрическая тангенсная функция, действующая на аргументе х в единицах радиан.
Порядок очередности выполнения операций
Когда порядок выполнения операций в выражении не указан явно, используя скобки, применяют следующие правила.
– Операции с более высоким приоритетом вычисляют перед любой операцией более низкого приоритета.
– Операции равного приоритета вычисляются последовательно слева направо.
Приведенная ниже таблица указывает приоритет операций в порядке от самого высшего к самому низшему; более высокое положение в таблице указывает более высокий приоритет
Для тех операций, которые также используются в языке программирования С, порядок приоритетов, используемый в настоящем описании, является таким же, как он используется в языке программирования С.
Таблица: Очередность выполнения операций от наивысшей (вверху таблицы) к наинизшей (внизу таблицы)
Текстовое описание логических операций
В тексте оператор логических операций, как он должен быть описан математически в следующей форме:
if(condition 0)
statement 0
else if(condition 1)
statement 1
…
else/*informative remark on remaining condition*/
statement n
может быть записано следующим образом:
… как следует/…применяется следующее:
– If condition 0, statement 0
– Otherwise, if condition 1, statement 1
– ...
– Otherwise (информационное замечание по остающемуся условию), оператор n
Каждый оператор "If ... иначе, if ... Otherwise, ..." в тексте вводится с помощью "... as follows" или "... the following applies" непосредственно сопровождается "If ... ". Последним условием "If ... иначе, if ... Otherwise, ..." всегда означает "В противном случае, ...". Interleaved "If ... иначе, if ... Otherwise, ...", которые могут идентифицироваться совпадением "... as follows" или "... the following applies" с окончанием "Otherwise, ...".
В тексте оператор логических операций, как он должен быть описан математически в следующей форме:
if(condition 0a && condition 0b)
statement 0
else if(condition 1a||condition 1b)
statement 1
...
else
statement n
может быть записано следующим образом:
... как следует / ... применяется следующее:
– If all of the following conditions are true, statement 0:
– condition 0a
– condition 0b
– Otherwise, if one or more of the following conditions are true, statement 1:
– condition 1a
– condition 1b
– ...
– Otherwise, statement n
В тексте оператор логических операций, как он должен быть описан математически в следующей форме:
if(condition 0)
statement 0
if(condition 1)
statement 1
может быть записано следующим образом:
When condition 0, statement 0
When condition 1, statement 1
Хотя варианты осуществления изобретения были описаны, в первую очередь, основываясь на видеокодировании, следует заметить, что варианты осуществления системы 10 кодирования, кодер 20 и декодер 30 (и, соответственно, система 10) и другие варианты осуществления, описанные здесь, могут также быть выполнены с возможностью применения при обработке фотографий или при кодировании, то есть, при обработке или кодировании индивидуального изображения, независимо от любого предыдущего или последующего изображения, как при видеокодировании. В целом, только блоки 244 (кодер) и 344 (декодер) межкадрового предсказания могут быть недоступны в случае, когда кодирование при обработке изображения ограничивается одиночным изображением 17.
Все другие функциональные возможности (также упоминаемые как инструменты или технологии) видеокодера 20 и видеодекодера 30 могут, в равной степени, использоваться для обработки фотографий, например, вычисление 204/304 остатка, преобразование 206, квантование 208, обратное квантование 210/310, (обратное) преобразование 212/312, деление на части 262/362, внутрикадровое предсказание 254/354, и/или контурная фильтрация 220, 320, энтропийное кодирование 270 и энтропийное декодирование 304.
Варианты осуществления, например, кодера 20 и декодера 30, и функции, описанные здесь, например, со ссылкой на кодер 20 и декодер 30, могут быть реализованы аппаратными средствами, программным обеспечением, встроенным программным обеспечением или любым их сочетанием. При реализации в программном обеспечении функции могут храниться на считываемом компьютером носителе или передаваться через средства связи в виде одной или более команд или кода и исполняться процессором на основе аппаратных средств. Считываемый компьютером носитель может содержать считываемый компьютером носитель запоминающего устройства, соответствующий физическому носителю, такому как носитель запоминающего устройства для хранения данных, или среду связи, содержащую любой носитель, облегчающий передачу компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемый компьютером носитель, в целом, может соответствовать (1) физическому считываемому компьютером носителю запоминающего устройства, являющемуся непереносным, или (2) носителю связи, такому как сигнал или несущая. Носитель запоминающего устройства для хранения данных может быть любым доступным носителем, к которому может получать доступ один или более компьютеров один или более компьютеров или один или более процессоров, чтобы восстанавливать команды, управляющую программу и/или структуры данных для реализации технологий, описанных в настоящем раскрытии. Компьютерный программный продукт может содержать считываемый компьютером носитель.
Для примера, но не для ограничения, такой считываемый компьютером носитель запоминающего устройства может содержать оперативную память (RAM), постоянную память (ROM), электрически стираемую программируемую постоянную память (EEPROM), компакт-диск (CD-ROM) или другое запоминающее устройство на оптических дисках, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения желаемой управляющей программы в форме команд или структур данных и может быть доступен компьютеру. Кроме того, любое соединение соответственно называется считываемым компьютером носителем. Например, если команды передаются с веб-сайта, сервера или от другого удаленного источника, используя коаксиальный кабель, оптический кабель, витую пару, цифровую абонентскую линию (digital subscriber line, DSL) или беспроводные технологии, такие как инфракрасная, радиоволновая или микроволновая, то тогда коаксиальный кабель, оптический кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасная, радиоволновая или микроволновая, содержатся в определении носителя. Однако, следует понимать, что считываемый компьютером носитель запоминающего устройства для хранения данных и носитель запоминающего устройства данных могут не содержать соединения, несущие, сигналы или другие переносные носители, но являться непереносными физическими носителями для хранения данных. Диски содержат компакт-диски (CD)ерные диски, оптические диски, универсальные цифровые диски (DVD), дискеты и диски Blu-ray, где одни диски обычно воспроизводят данные магнитным способом, тогда как другие диски воспроизводят данные оптически с помощью лазеров. Сочетания вышеперечисленного также могут содержаться в рамках объема считываемых компьютером носителей.
Команды могут исполняться одним или более процессорами, такими как один или более цифровых сигнальных процессоров (digital signal processor, DSP), универсальные микропроцессоры, специализированные интегральные схемы (application-specific integrated circuit, ASIC), программируемые логические интегральные схемы (field programmable gate array, FPGA) или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин "процессор", как он используется здесь, может относиться к любой из вышеперечисленных структур или к любой другой структуре, пригодной для реализации описанных здесь технологий. Кроме того, в некоторых вариантах функциональные возможности, представленные в настоящем описании, могут быть обеспечены в рамках специализированных аппаратных средств и/или в модулях программного обеспечения, выполненных с возможностью кодирования и декодирования, или могут содержаться объединенном кодеке. Кроме того, технологии могут быть полностью реализованы в одной или нескольких схемах или логических элементах.
Технологии, описанные в настоящем раскрытии, могут быть реализованы широким разнообразием устройств, в том числе беспроводным мобильным телефоном, интегральной схемой (integrated circuit, IC) или набором IC (например, набором чипов). Различные компоненты, модули или блоки описываются в настоящем раскрытии, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью осуществления раскрытых технологий, но не обязательно требующих реализации с помощью различных аппаратных блоков. Точнее, как описано выше, различные блоки могут объединяться в аппаратный блок кодека или могут обеспечиваться с помощью набора способных к межкадровому взаимодействию аппаратных средств, содержащих один или более процессоров, как описано выше, в сочетании с соответствующим программным обеспечением и встроенным программным обеспечением.
название | год | авторы | номер документа |
---|---|---|---|
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ДЛЯ РЕЖИМА СУББЛОЧНОГО РАЗДЕЛЕНИЯ | 2020 |
|
RU2811983C2 |
ПРОЦЕСС КОДИРОВАНИЯ ДЛЯ РЕЖИМА ГЕОМЕТРИЧЕСКОГО РАЗДЕЛЕНИЯ | 2020 |
|
RU2822450C1 |
СПОСОБ И УСТРОЙСТВО ДЛЯ ХРАНЕНИЯ ИНФОРМАЦИИ О ДВИЖЕНИИ | 2023 |
|
RU2815734C1 |
ВЫВЕДЕНИЕ ВЕСА ВЫБОРКИ ЦВЕТНОСТИ ДЛЯ ГЕОМЕТРИЧЕСКОГО РЕЖИМА РАЗДЕЛЕНИЯ | 2020 |
|
RU2814812C2 |
СПОСОБ И УСТРОЙСТВО ДЛЯ ХРАНЕНИЯ ИНФОРМАЦИИ О ДВИЖЕНИИ | 2019 |
|
RU2793825C1 |
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ, ИСПОЛЬЗУЮЩИЕ ВЫДЕЛЕННЫЙ БУФЕР IBC, И ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ, ОБНОВЛЯЮЩЕЕ КОМПОНЕНТ ЯРКОСТИ И ЦВЕТНОСТИ | 2020 |
|
RU2801326C2 |
СПОСОБ И УСТРОЙСТВО СОГЛАСОВАНИЯ ВЗВЕШЕННОГО ПРЕДСКАЗАНИЯ С НЕПРЯМОУГОЛЬНЫМИ РЕЖИМАМИ СЛИЯНИЯ | 2021 |
|
RU2821011C1 |
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ МЕЖКАДРОВОГО ПРЕДСКАЗАНИЯ | 2020 |
|
RU2809192C2 |
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ, ОТНОСЯЩИЕСЯ К РЕЖИМУ ВНУТРИКАДРОВОГО ПРЕДСКАЗАНИЯ | 2020 |
|
RU2801112C1 |
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ПОЛУЧЕНИЯ ВНУТРИКАДРОВОГО РЕЖИМА ЦВЕТНОСТИ | 2020 |
|
RU2817389C2 |
Изобретение относится к области обработки изображений и, в частности, к предсказанию для деления на части и, более конкретно, для вычисления расстояния до выборки для режимов геометрического деления. Технический результат заключается в повышении степени сжатия при минимальных или отсутствующих влияниях на качество изображения. Предложен способ кодирования, реализуемый устройством кодирования, причем способ содержит этапы, на которых получают значение параметра угла текущего блока; получают значение ширины текущего блока и значение высоты текущего блока; вычисляют значение отношения между значением ширины и значением высоты; вычисляют значение расстояния до выборки для выборки в текущем блоке, в соответствии с первым значением; получают значение предсказания для выборки в текущем блоке, в соответствии со значением расстояния до выборки. 4 н. и 5 з.п. ф-лы, 23 ил., 6 табл.
1. Способ кодирования, реализуемый устройством кодирования, где упомянутый способ содержит этапы, на которых:
получают значение параметра угла для текущего блока;
получают значение индекса расстояния для текущего блока;
получают значения ширины текущего блока и значения высоты текущего блока;
получают первое значение;
вычисляют значение расстояния до выборки для выборки в текущем блоке, в соответствии с первым значением, значением параметра угла, значением индекса расстояния и значением ширины и значением высоты; и
получают значение предсказания для выборки в текущем блоке, в соответствии со значением расстояния до выборки.
2. Способ по п. 1, в котором вычисление значения расстояния до выборки для выборки в текущем блоке, соответствующего первому значению, содержит:
вычисляют значение расстояния между выборками для выборки в текущем блоке, в соответствии с первым значением.
3. Способ по п. 1, в котором вычисление значения расстояния до выборки для выборки в текущем блоке, соответствующего первому значению, содержит этап, на котором:
вычисляют значение расстояния до выборки в текущем блоке, в соответствии с первым значением, значение параметра угла, значение индекса расстояния, значение ширины и значение высоты.
4. Способ по любому из пп. 1-3, в котором значение расстояния до выборки представляет расстояние по горизонтали или расстояние по вертикали или сочетание расстояний по горизонтали и по вертикали для выборки до линии деления, где линия деления используется для деления блока кодирования на два субблока.
5. Способ по любому из пп. 1-4, в котором получение значения предсказания для выборки в текущем блоке, соответствующего значению расстояния до выборки, содержит этапы, на которых:
вычисляют два весовых коэффициента, соответствующих значению расстояния между выборками;
получают значение предсказания для выборки, в соответствии с первым значением предсказания, второму значению предсказания и двум весовым коэффициентам.
6. Способ по любому из пп. 1-4, в котором значение параметра угла является целым значением и диапазон значений для значений параметра угла составляет диапазон между 0 и 31, включая 0 и 31.
7. Видеокодер, содержащий схему обработки для выполнения способа, соответствующего любому из пп. 1-6.
8. Видеокодер, содержащий:
один или более процессоров; и
считываемый компьютером носитель запоминающего устройства долговременного использования, связанный с процессорами и хранящий программирование для его исполнения процессорами, в котором, программирование, когда исполняется процессорами, конфигурирует видеокодер для выполнения способа, соответствующего любому из пп. 1-6.
9. Машиночитаемый носитель, связанный с процессорами и хранящий программирование для его исполнения процессорами, в котором, программирование, когда исполняется процессорами, конфигурирует видеокодер для выполнения способа, соответствующего любому из пп. 1-6.
US 2011200111 A1, 2011.08.18 | |||
BENJAMIN BROSS et al | |||
Кипятильник для воды | 1921 |
|
SU5A1 |
Станок для придания концам круглых радиаторных трубок шестигранного сечения | 1924 |
|
SU2019A1 |
RU-LING LIAO еt al | |||
Печь-кухня, могущая работать, как самостоятельно, так и в комбинации с разного рода нагревательными приборами | 1921 |
|
SU10A1 |
Авторы
Даты
2024-09-17—Публикация
2020-06-23—Подача