Перекрестные ссылки на родственные заявки
Настоящая заявка на выдачу патента претендует на приоритет заявки PCT No. PCT/EP2019/075519, поданной 23 сентября 2019 г. Описание указанной заявки на выдачу патента включено сюда посредством ссылки во всей своей полноте.
Область техники, к которой относится изобретение
Варианты настоящей заявки (раскрытия) относятся, в общем, к области обработки изображения и, более конкретно, к модификации фильтров в общей процедуре внутрикадрового прогнозирования для планарного режима.
Уровень техники
Кодирование видео (кодирование и декодирование видео) используется в широчайшем спектре цифровых приложений видео, например, в цифровом телевизионном вещании, в передаче видео через Интернет и через сети мобильной связи, в разговорных приложения, работающих в реальном времени, таких как видео чаты, видео конференц-связь, в области дисков DVD и дисков «Блю-рей» (Blu-ray), системах получения и редактирования видео контента и в записывающих видеокамерах для приложений обеспечения безопасности.
Количество данных видео, необходимых для описания даже относительно короткого видеоролика, может быть весьма существенным, что может привести к затруднениям при потоковой или иной передаче данных через сеть связи с ограниченной полосой пропускания. Поэтому данные видео обычно сжимают перед тем, как передавать их по современным телекоммуникационным сетям. Размер ролика может также быть проблемой, когда нужно сохранить этот видеоролик в запоминающем устройстве, поскольку объем ресурсов памяти может быть ограничен. Устройства сжатия видео часто используют программное обеспечение и/или оборудование в источнике видео для кодирования данных видео прежде их передачи или записи в запоминающем устройстве, уменьшая тем самым количество данных, необходимых для представления изображений цифрового видео. После этого, в пункте назначения принимают сжатые данные посредством устройства расширения (декомпрессии) видео, которое декодирует данные видео. В условиях ограниченности сетевых ресурсов и все возрастающей потребности в получении видео более высокого качества, желательно разработать усовершенствованные способы сжатия и расширения видео, которые позволили бы повысить коэффициент сжатия ценой незначительного или даже вообще отсутствующего ущерба для качества изображения.
Способы прогнозирования могут играть важную роль при кодировании изображений и видео вследствие их способности уменьшить избыточность сигнала на основе ранее закодированных отсчетов. К основным технологиям прогнозирования относятся внутрикадровое прогнозирование для эффективного кодирования пространственной избыточности и прогнозирование с компенсацией движения для кодирования межкадровой временной избыточности. Однако внутрикадровое прогнозирование в планарном режиме оказывается излишне усложненным для некоторых блоков.
Раскрытие сущности изобретения
Согласно ряду вариантов настоящей заявки предложены устройства и способы кодирования (т.е. кодирования или декодирования, соответственно) в соответствии с независимыми пунктами Формулы изобретения.
Упомянутые выше и другие цели настоящего изобретения достигаются с применением предмета независимых пунктов Формулы изобретения. Другие формы реализации настоящего изобретения ясны из зависимых пунктов Формулы, настоящего описании и чертежей.
Согласно первому аспекту настоящее изобретение относится к способу декодирования или кодирования. Этот способ осуществляется в устройстве для декодирования или кодирования. Этот способ содержит: вычисление величины вертикальной составляющей прогнозируемого внутрикадровым способом отсчета, входящего в блок изображения, где эту величину вертикальной составляющей predV[ x ][ y ] генерируют посредством линейного фильтра, использующего отсчеты из строк опорных отсчетов сверху и снизу, где строку отсчетов снизу заполняют с использованием отсчета, расположенного в точке с координатами (-1, nTbH) относительно верхнего левого отсчета текущего блока. Например, predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ), где predV[ x ][ y ] представляет величину вертикальной составляющей в точке с координатами x = 0..nTbW − 1 и y = 0..nTbH – 1, nTbH представляет высоту рассматриваемого блока, nTbW представляет ширину этого блока, и p[ x ][ -1 ] представляет соседние отсчеты при x = 0..nTbW.
Способ далее содержит: вычисление величины горизонтальной составляющей прогнозируемого внутрикадровым способом отсчета, где эту величину горизонтальной составляющей predH[ x ][ y ] генерируют посредством линейного фильтра, использующего отсчеты из столбцов опорных отсчетов слева и справа, где столбец отсчетов справа генерируют с использованием отсчета, расположенного в точке с координатами (nTbW, -1) относительно верхнего левого отсчета текущего блока.
Например, predH[ x ][ y ] = (( nTbW − 1 − x ) * p[ −1 ][ y ] + (x + 1) * p[ nTbW ][ −1 ] ) << Log2 (nTbH), где predH[ x ][ y ] представляет величину горизонтальной составляющей в точке с координатами x = 0..nTbW − 1 и y = 0..nTbH – 1, nTbH представляет высоту рассматриваемого блока, nTbW представляет ширину этого блока, и p[ -1 ][ y ] представляет соседние отсчеты при y = −1..nTbH.
Этот способ далее содержит: генерирование прогнозируемого внутрикадровым способом отсчета predSamples[ x ][ y ] на основе величины вертикальной составляющей и величины горизонтальной составляющей. Такой прогнозируемый внутрикадровым способом отсчет также называется спрогнозированным отсчетом.
Когда высота блока равна 1, формула для величины вертикальной составляющей predV[ x ][ y ] упрощается до predV[ x ][ y ] = (( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ), и формула для величины горизонтальной составляющей predH[ x ][ y ] упрощается до predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ).
Согласно второму аспекту настоящее изобретение относится к способу декодирования или кодирования. Этот способ осуществляется декодирующим или кодирующим устройством. Способ содержит: получение значений высоты и ширины текущего прогнозируемого блока без применения операции усечения; вычисление величины вертикальной составляющей прогнозируемого внутрикадровым способом отсчета на основе высоты и ширины прогнозируемого блока; вычисление величины горизонтальной составляющей прогнозируемого внутрикадровым способом отсчета на основе высоты и ширины прогнозируемых блоков; и генерирование прогнозируемого внутрикадровым способом отсчета на основе величины вертикальной составляющей и величины горизонтальной составляющей.
Способ согласно первому аспекту настоящего изобретения может быть осуществлен устройством согласно третьему аспекту настоящего изобретения. Дополнительные признаки и формы осуществления устройства согласно третьему аспекту настоящего изобретения соответствуют признакам и формам осуществления способа согласно первому аспекту настоящего изобретения.
Способ согласно второму аспекту настоящего изобретения может быть осуществлен устройством согласно четвертому аспекту настоящего изобретения. Дополнительные признаки и формы осуществления устройства согласно четвертому аспекту настоящего изобретения соответствуют признакам и формам осуществления способа согласно второму аспекту настоящего изобретения.
Согласно пятому аспекту настоящее изобретение относится к устройству для декодирования или кодирования потока данных видео, которое содержит процессор и запоминающее устройство. Запоминающее устройство сохраняет команды, при выполнении которых процессор осуществляет способ согласно первому аспекту или второму аспекту.
Согласно шестому аспекту, предложен читаемый компьютером носитель для хранения информации, сохраняющий команды, при выполнении которых один или более процессоров, конфигурируются для кодирования данных видео. При выполнении этих команд один или более процессоров осуществляют способ согласно первому или второму аспекту, либо какому-либо из возможных вариантов этих первого или второго аспектов.
Согласно седьмому аспекту, настоящее изобретение относится к компьютерной программе, содержащей программный код для осуществления способа согласно первому или второму аспекту, либо какому-либо из возможных вариантов этих первого или второго аспектов при выполнении этого программного кода на компьютере.
Согласно восьмому аспекту, настоящее изобретение относится к устройству для внутрикадрового прогнозирования изображения в планарном режиме, которое содержит:
вычислительный модуль, конфигурированный для вычисления величины вертикальной составляющей прогнозируемого внутрикадровым способом отсчета, входящего в блок изображения. Величину вертикальной составляющей predV[ x ][ y ] генерируют с применением линейного фильтра, использующего отсчеты из строк опорных отсчетов сверху и снизу, где строку отсчетов снизу заполняют с использованием отсчета, расположенного в точке с координатами (-1, nTbH) относительно верхнего левого отсчета текущего блока. Например, predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ), где predV[ x ][ y ] представляет величину вертикальной составляющей при x = 0..nTbW − 1 и y = 0..nTbH – 1, nTbH представляет высоту рассматриваемого блока, nTbW представляет ширину этого блока, и p[ x ][ -1 ] представляет соседние отсчеты с координатой x = 0..nTbW.
Вычислительный модуль далее конфигурирован для вычисления величины горизонтальной составляющей прогнозируемого внутрикадровым способом отсчета, где величину горизонтальной составляющей predH[ x ][ y ] генерируют с применением линейного фильтра с использованием отсчетов из столбцов опорных отсчетов слева и справа, где столбец отсчетов справа заполняют с использованием отсчета, расположенного в точке с координатами (nTbW, -1) относительно верхнего левого отсчета текущего блока.
Например, predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ) , где predH[ x ][ y ] представляет величину горизонтальной составляющей при x = 0..nTbW − 1 и y = 0..nTbH – 1, nTbH представляет высоту рассматриваемого блока, nTbW представляет ширину этого блока, и p[ -1 ][ y ] представляет соседние отсчеты с координатой y = −1..nTbH.
Устройство далее содержит модуль прогнозирования (903), конфигурированный для генерации прогнозируемого внутрикадровым способом отсчета на основе величины вертикальной составляющей и величины горизонтальной составляющей.
Варианты настоящего изобретения не осуществляет операцию усечения nW = Max( nTbW, 2 ) и операцию усеченния nH = Max( nTbH, 2 ) прежде вычисления вертикальной и горизонтальной составляющих. Поэтому прогнозирование с применением планарного режима упрощается. Соответственно, эффективность кодирования или декодирования повышается.
Подробности одного или более вариантов установлены на прилагаемых чертежах и в описании ниже. Другие признаки, цели и преимущества будут ясны из настоящего описания, чертежей и Формулы изображения.
Краткое описание чертежей
В последующем варианты настоящего изобретения описаны более подробно со ссылками на прилагаемые рисунки и чертежи, на которых:
Фиг. 1A представляет блок-схему, показывающую пример системы кодирования видео, конфигурированной для осуществления вариантов настоящего изобретения;
Фиг. 1B представляет блок-схему, показывающую другой пример системы кодирования видео, конфигурированной для осуществления вариантов настоящего изобретения;
Фиг. 2 представляет блок-схему, показывающую пример кодирующего устройства для видео, конфигурированного для осуществления вариантов настоящего изобретения;
Фиг. 3 представляет блок-схему, показывающую пример структуры декодирующего устройства для видео, конфигурированного для осуществления вариантов настоящего изобретения;
Фиг. 4 представляет блок-схему, иллюстрирующую пример кодирующего устройства или декодирующего устройства;
Фиг. 5 представляет блок-схему, иллюстрирующую другой пример кодирующего устройства или декодирующего устройства;
Фиг. 6 представляет упрощенную схему, иллюстрирующую внутрикадровое прогнозирование в планарном режиме согласно стандарту кодирования VVC;
Фиг. 7 представляет упрощенную схему, иллюстрирующую внутрикадровое прогнозирование в планарном режиме для блока размером Nx1;
Фиг. 8 показывает логическую схему, иллюстрирующую способ внутрикадрового прогнозирования в планарном режиме для текущего блока в процессе кодирования видео;
Фиг. 9 иллюстрирует конфигурацию устройства кодирования видео;
Фиг. 10 представляет блок-схему, показывающую пример структуры системы 3100 передачи контента, реализующей сервис передачи контента; и
Фиг. 11 представляет блок-схему, показывающую пример структуры терминала.
В последующем описании идентичные позиционные обозначения присвоены идентичным или по меньшей мере функционально эквивалентным признакам, если только в явном виде не специфицировано иное.
Осуществление изобретения
В последующем описании, ссылки сделаны на прилагаемые чертежи, составляющие часть настоящего описания и показывающие посредством иллюстрации конкретные аспекты вариантов изобретения или конкретные аспекты, в которых могут быть использованы варианты настоящего изобретения. Понятно, что варианты настоящего изобретения могут быть использованы в других аспектах и содержать структурные или логические изменения, не показанные на чертежах. Поэтому последующее подробное описание не следует рассматривать в ограничительном смысле, а объем настоящего изобретения определен прилагаемой Формулой изобретения.
Например, понятно, что описание в связи с каким-либо рассматриваемым способом может также оставаться справедливым для соответствующего устройства или системы, конфигурированной для осуществления этого способа, и наоборот. Например, если рассматриваются один или более этапов какого-то конкретного способа, соответствующее устройство может содержать один или более модулей, например, функциональных модулей, для осуществления рассматриваемых одного или более этапов способа (например, один модуль, осуществляющий один или более этапов, либо несколько модулей, каждый из которых осуществляет один или более этапов), даже если такие один или более модулей не описаны или не иллюстрированы на чертежах в явной форме. С другой стороны, например, если конкретное устройство описано на основе одного или более модулей, например, функциональных модулей, соответствующий способ может содержать один этап для осуществления функций одного или более модулей (например, один этап, осуществляющий функции одного или более модулей, либо несколько этапов, на каждом из которых осуществляют функции одного или более модулей), даже если такие один или более этапов не описаны или не иллюстрированы на чертежах в явной форме. Далее, понятно, что признаки различных вариантов и/или аспектов, рассматриваемые здесь, можно комбинировать одни с другими, если только специально не отмечено иное.
Термин «кодирование видео» обычно обозначает обработку последовательности изображений, составляющих видео или последовательность видео. В области кодирования видео вместо термина «картинка» (“picture”) могут быть в качестве синонимов использованы термины «кадр» (“frame”) или «изображение» (“image”). Кодирование видео (или кодирование в общем) состоит из двух частей – собственно кодирование видео и декодирование видео. Собственно кодирование видео осуществляется на стороне источника и обычно содержит обработку (например, посредством сжатия) изображений исходного видео с целью уменьшения объема данных, требуемых для представления изображений видео (для более эффективного хранения и/или передачи). Декодирование видео осуществляется на стороне пункта назначения (адресата) и обычно содержит обратную обработку по сравнению с обработкой в кодирующем устройстве с целью реконструкции изображений видео. Варианты, ссылающиеся на «кодирование» изображений видео (или изображений вообще), следует понимать как относящиеся к «собственно кодированию» или к «декодированию» изображений видео или соответствующих последовательностей видео. Комбинация кодирующей части и декодирующей части также называется «кодек» (кодирование и декодирование) (CODEC (Coding and Decoding)).
В случае кодирования видео без потерь, могут быть реконструированы исходные изображения видео, т.е. реконструированные изображения видео имеют такое же качество, как и исходные изображения видео (в предположении отсутствия потерь при передаче или других потерь данных в процессе хранения или передачи). В случае кодирования видео с потерями, осуществляется дальнейшее сжатие данных, например, посредством квантования, с целью уменьшения объема данных, представляющих изображение видео, которые после этого уже не могут быть полностью реконструированы в декодирующем устройстве, т.е. качество реконструированных изображений видео оказывается ниже или хуже по сравнению с качеством исходных изображений видео.
Существует ряд стандартов кодирования видео, принадлежащих группе «гибридных видео кодеков с потерями» (т.е. комбинирующих пространственное и временное прогнозирование в области отсчетов и двумерное (2D) кодирование с преобразованием для применения квантования в области преобразования). Каждое изображение в последовательности видео обычно разбивают на множество не накладывающихся один на другой блоков, и кодирование обычно осуществляют на уровне блоков. Другими словами, в кодирующем устройстве видео обычно обрабатывают, т.е. кодируют, на уровне блоков (видео блоков), например, с использованием пространственного (внутрикадрового) прогнозирования и/или временного (межкадрового) прогнозирования для генерации блока прогнозирования для текущего блока (блока, обрабатываемого/подлежащего обработке в текущий момент) с целью получения блока остатка, преобразования этого блока остатка и квантования блока остатка в области преобразования с целью уменьшения объема данных, которые нужно передать, (сжатия данных), тогда как в декодирующем устройстве к кодированному или сжатому блоку применяют обработку, обратную по отношению к обработке в кодирующем устройстве, с целью реконструкции текущего блока для представления. Более того, кодирующее устройство дублирует процессорный контур декодирующего устройства, так что оба устройства будут генерировать идентичные прогнозируемые блоки (например, блоки с внутрикадровым и межкадровым прогнозированием) и/или реконструированные блоки для обработки, т.е. кодирования, последующих блоков.
В следующих вариантах системы 10 кодирования видео рассмотрены кодирующее устройство 20 для видео и декодирующее устройство 30 для видео на основе Фиг. 1 – 3.
Фиг. 1A представляет упрощенную блок-схему примера системы 10 кодирования, например, системы 10 кодирования видео (или, короче, системы 10 кодирования), которая может использовать технологию согласно настоящей заявке. Кодирующее устройство 20 для видео (или, короче, кодирующее устройство 20) и декодирующее устройство 30 для видео (или, короче, декодирующее устройство 30) системы 10 кодирования видео представляют примеры устройств, которые могут быть конфигурированы для осуществления способов согласно различным примерам, описываемым в настоящей заявке.
Как показано на Фиг. 1A, система 10 кодирования содержит устройство-источник 12, конфигурированное для передачи кодированных данных 21 изображения, например, устройству-адресату 14 (устройству пункта назначения) для декодирования кодированных данных 21 изображения.
Устройство-источник 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 связи, постпроцессор 28 (или постпроцессорный модуль 32) и дисплейное устройство 34.
Интерфейс 28 связи устройства-адресата 14 конфигурирован для приема кодированных данных 21 изображения (или какой-либо далее обработанной версии этих данных), например, напрямую от устройства-источника 12 или из какого-либо другого источника, например от запоминающего устройства, такого как запоминающее устройство для хранения кодированных данных изображения, и передачи этих кодированных данных 21 изображения декодирующему устройству 30.
Интерфейс 22 связи и интерфейс 28 связи могут быть конфигурированы для передачи или приема кодированных данных 21 изображения или кодированных данных 21 по прямой линии связи между устройством-источником 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 diodes (OLED)), плазменный дисплей, проектор, микро LED-дисплей, жидкокристаллический дисплей на кремнии (liquid crystal on silicon (LCoS)), цифровой процессор оптических сигналов (digital light processor (DLP)) или другой дисплей какого-либо типа.
Хотя на Фиг. 1A устройство-источник 12 и устройство-адресат 14 показаны как отдельные устройства, различные варианты этих устройств могут также содержать оба устройства – устройство-источник 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 для видео, может быть интегрировано как часть комбинированного кодирующего устройства/ декодирующего устройства (CODEC) в одном устройстве, например, как показано на Фиг. 1B.
Устройство-источник 12 и устройство-адресат 14 могут представлять собой какие-либо из широкого спектра устройств, включая ручные и стационарные устройства, например, компьютеры типа «ноутбук» или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, видеокамеры, настольные компьютеры, приставки, телевизоры, дисплейные устройства, цифровые медиа плееры, игровые видео консоли, потоковые видео устройства (такие как серверы контентных услуг или серверы доставки контента), приемник программ вещания, передатчик программ вещания, или другое подобное устройство и может использовать операционную систему какого-либо типа или совсем не использовать операционную систему. В некоторых случаях, устройство-источник 12 и устройство-адресат 14 могут быть оборудованы для радиосвязи. Таким образом, эти устройство-источник 12 и устройство-адресат 14 могут быть устройствами радиосвязи.
В некоторых случаях, система 10 кодирования видео, иллюстрированная на Фиг. 1A, является просто примером, а технология согласно настоящему изобретению может быть применена к системам кодирования видео (например, собственно кодирования видео или декодирования видео), которые необязательно содержат какую-либо передачу данных между кодирующим и декодирующим устройствами. В других примерах, данные вызывают из локального запоминающего устройства, передают в потоковом режиме через сеть связи или выполняют другую подобную операцию. Кодирующее устройство для видео может кодировать данные и сохранять их в запоминающем устройстве, и/или декодирующее устройство для видео может вызывать и декодировать данные из запоминающего устройства. В некоторых примерах, кодирование и декодирование осуществляются устройствами, которые не поддерживают связь одно с другим, а просто кодируют данные и записывают их в запоминающем устройстве и/или вызывают и декодируют данные из запоминающего устройства.
Для удобства описания, варианты настоящего изобретения описаны здесь, например, со ссылками на стандарт высокоэффективного видео кодирования (High-Efficiency Video Coding (HEVC)) или на эталонное программное обеспечение для стандарта универсального видео кодирования (Versatile Video coding (VVC)), стандарта видео кодирования следующего поколения, разрабатываемого совместной рабочей группой по видео кодированию (Joint Collaboration Team on Video Coding (JCT-VC)), основанной группой экспертов по видео кодированию (Video Coding Experts Group (VCEG)) союза ITU-T и группой экспертов по кинематографии (Motion Picture Experts Group (MPEG)) организации ISO/IEC. Даже рядовой специалист в рассматриваемой области должен понимать, что варианты настоящего изобретения не ограничиваются стандартами кодирования HEVC или VVC.
Кодирующее устройство и способ кодирования
На Фиг. 2 показана упрощенная блок-схема примера кодирующего устройства 20 для видео, конфигурированного для осуществления технологии согласно настоящему изобретению. В примере, показанном на Фиг. 2, кодирующее устройство 20 для видео содержит вход 201 (или входной интерфейс 201), модуль 204 вычисления остатка, процессорный модуль 206 преобразования, модуль 208 квантования, модуль 210 обратного квантования и процессорный модуль 212 обратного преобразования, модуль 214 реконструкции, модуль 220 контурного фильтра, буфер 230 декодированного изображения (decoded picture buffer (DPB)), модуль 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 может также называться текущим изображением или изображением, подлежащим кодированию (в частности, при кодировании видео, чтобы отличать текущее изображение от других изображений, например от ранее кодированных и/или декодированных изображений в той же самой последовательности видео, т.е. в последовательности видео, которая содержит также текущее изображение).
Изображение (цифровое) представляет собой или может рассматриваться в качестве двумерного массива или матрицы отсчетов, каждый из которых имеет некую величину интенсивности. Любой отсчет в массиве может также называться пикселем (pixel) (сокращенная форма от «элемента изображения» (picture element)) или pel. Число отсчетов в горизонтальном и вертикальном направлении (или по оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовых составляющих, т.е. изображение может быть представлено или может содержать три массива отсчетов. В формате или в цветовом пространстве RGB изображение содержит соответствующие массивы отсчетов красного, зеленого и синего цвета. Однако при кодировании видео каждый пиксель обычно представляют в формате или цветовом пространстве яркости и цветности, например, YCbCr, который содержит яркостную составляющую, обозначаемую буквой Y, (иногда вместо Y используется также буква L) и две цветностные составляющие, обозначаемые как Cb и Cr. Яркостная (luminance) (или сокращенно luma) составляющая Y представляет яркость или интенсивность уровня серого (например, как в полутоновом изображении), тогда как две цветностные (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), либо блоками дерева кодирования (coding tree block (CTB)) или единицами дерева кодирования (coding tree unit (CTU)) (в стандартах кодирования H.265/HEVC и VVC). Модуль разбиения изображения может быть конфигурирован для использования одного и того же размера блоков для всех изображений последовательности видео и соответствующей сетки, определяющей размер блоков, либо для изменения размера блоков между изображениями, или подмножествами или группами изображений и разбиения каждого изображения на соответствующие блоки.
В дальнейших вариантах, кодирующее устройство для видео может быть конфигурировано для приема блока 203 изображения 17 напрямую, например, одного, нескольких или всех блоков, составляющих изображение 17. Этот блок 203 изображения может также называться текущим блоком изображения или блоком изображения, подлежащим кодированию.
Аналогично изображению 17, блок 203 изображения опять представляет собой или может рассматриваться в качестве двумерного массива или матрицы отсчетов, каждый из которых имеет некую величину интенсивности (величины отсчетов), хотя размеры этого массива меньше размеров массива для изображения 17. Другими словами, блок 203 может содержать, например, один массив отсчетов (например, массив яркостной составляющей в случае черно-белого изображения 17, либо массив яркостной или цветностной составляющей в случае цветного изображения) или три массива отсчетов (например, массив яркостной составляющей и два массива цветностных составляющих в случае цветного изображения 17), либо какое-либо другое число массивов и/или другие типы массивов в зависимости от применяемого цветового формата. Число отсчетов в горизонтальном и вертикальном направлении (или по оси) блока 203 определяет размер блока 203. Соответственно, блок может представлять собой, например, массив отсчетов размером MxN (M-столбцов на N-строк) или массив размером MxN коэффициентов преобразования.
Варианты кодирующего устройства 20 для видео, как показано на Фиг. 2, могут быть конфигурированы для кодирования изображения 17 блок за блоком, например, для каждого блока 203 осуществляется кодирование и прогнозирование.
Варианты кодирующего устройства 20 для видео, как показано на Фиг. 2, могут быть далее конфигурированы для разбиения и/или кодирования изображения с использованием срезов (слоев) (также называемых видео срезами (слоями)), где изображение может быть разбито на или кодировано с использованием одного или более срезов (слоев) (обычно не накладывающихся один на другой), и каждый слой может содержать один или более блоков (например, единиц CTU).
Варианты кодирующего устройства 20 для видео, как показано на Фиг. 2, могут быть далее конфигурированы для разбиения и/или кодирования изображения с использованием групп плиток (также называемых группами плиток видео) и/или плиток (также называемых плитками видео), где изображение может быть разбито на или кодировано с использованием одной или более групп плиток (обычно не накладывающихся одна на другую), и каждая группа плиток может содержать, например, один или более блоков (например, единиц CTU) или одну или более плиток, где каждая плитка, например, может быть прямоугольной формы и может содержать один или более блоков (например, единиц CTU), например, полных или частичных блоков.
Вычисление остатка
Модуль 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 такие целочисленные аппроксимации обычно масштабированы с некоторым коэффициентом. Для сохранения нормы блока остатка, обрабатываемого посредством прямого и обратного преобразования, применяют дополнительные масштабные коэффициенты как часть процедуры преобразования. Эти масштабные коэффициенты обычно выбирают на основе определенных ограничений, таких как масштабные коэффициенты, являющиеся степенями двойки, для операций сдвига, битовая глубина (разрядность) коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т.п. Конкретные масштабные коэффициенты, специфицируют, например, для обратного преобразования, например, посредством процессорного модуля 212 обратного преобразования (и соответствующего обратного преобразования, например, посредством процессорного модуля 312 обратного преобразования в декодирующем устройстве 30 для видео), и соответствующие масштабные коэффициенты для прямого преобразования, например, посредством процессорного модуля 206 преобразования, в кодирующем устройстве 20 могут быть специфицированы соответственно.
Варианты кодирующего устройства 20 для видео (соответственно, процессорный модуль 206 преобразования) могут быть конфигурированы для передачи на выход параметров преобразования, например, типа преобразования или преобразований, например, напрямую, либо в кодированном или в сжатом виде через модуль 270 энтропийного кодирования, так что, например, декодирующее устройство 30 для видео может принять и использовать эти параметры преобразования для декодирования.
Квантование
Модуль 208 квантования может быть конфигурирован для квантования коэффициентов 207 преобразования с целью получения квантованных коэффициентов 209, например, посредством применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 могут также называться квантованными коэффициентами 209 преобразования или квантованными коэффициентами 209 остатка.
Процедура квантования может уменьшить битовую глубину (разрядность), ассоциированную с некоторыми или со всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования может быть в процессе квантования округлен в меньшую сторону до m-битового коэффициента преобразования, где n больше m. Степень квантования можно модифицировать путем регулирования параметра квантования (quantization parameter (QP)). Например, при скалярном квантовании можно применять различное масштабирование для достижения более «тонкого» или более грубого квантования. Шаг квантования меньшего размера соответствует более «тонкому» квантованию, тогда как шаг квантования большего размера соответствует более грубому квантованию. Применимый размер шага квантования может быть обозначен параметром квантования (QP). Этот параметр квантования может представлять собой, например, индекс к предварительно заданному множеству применимых размеров шага квантования. Например, маленькие параметры квантования могут соответствовать «тонкому» квантованию (маленькие размеры шага квантования), а большие параметры кантования могут соответствовать грубому квантованию (большие размеры шага квантования) или наоборот. Процедура квантования может содержать деление на величину размера шага квантования, и соответствующая и/или обратная процедура – деквантование, например, посредством модуля 210 обратного квантования, может содержать умножение на величину размера шага квантования. Варианты согласно некоторым стандартам, например, стандарту кодирования HEVC, могут быть конфигурированы для использования параметра квантования с целью определения размера шага квантования. В общем случае, размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации с фиксированной запятой для уравнения, содержащего операцию деления. Для квантования и деквантования могут быть введены дополнительные масштабные коэффициенты для восстановления нормы блока остатка, которая могла быть модифицирована вследствие использования масштабирования в аппроксимации с фиксированной запятой применительно к уравнению для размера шага квантования и параметра квантования. В одном из примеров реализации масштабирование обратного преобразования и деквантования может быть комбинировано. В альтернативном варианте могут быть использованы специализированные таблицы квантования, передаваемые в виде сигнализации от кодирующего устройства декодирующему устройству, например, в потоке битов данных. Квантование представляет собой операцию с потерями, причем потери растут при увеличении размера шага квантования.
Варианты кодирующего устройства 20 для видео (соответственно модуль 208 квантования) могут быть конфигурированы для передачи на выход параметров квантования (QP), например, напрямую, либо в кодированном виде через модуль 270 энтропийного кодирования, так что, например, декодирующее устройство 30 для видео может принять и применить параметры квантования для декодирования.
Обратное квантование
Модуль 210 обратного квантования конфигурирован для применения процедуры обратного квантования относительно модуля 208 квантования к квантованным коэффициентам с целью получения деквантованных коэффициентов 211, например, посредством применения схемы, обратной схеме квантования, применяемой модулем 208 квантования, на основе или с использованием такого же размера шага квантования, как в модуле 208 квантования. Деквантованные коэффициенты 211 могут также называться деквантованными коэффициентами 211 остатка и соответствовать – хотя они обычно не являются идентичными коэффициентам преобразования вследствие потерь при квантовании, – коэффициентам 207 преобразования.
Обратное преобразование
Процессорный модуль 212 обратного преобразования конфигурирован для применения обратного преобразования относительно преобразования, применяемого процессорным модулем 206 преобразования, например обратного дискретного косинусного преобразования (DCT) или обратного дискретного синусного преобразования (DST). Либо другого обратного преобразования с цель получения реконструированного блока 213 остатка (или соответствующих деквантованных коэффициентов 213) в области отсчетов. Реконструированный блок 213 остатка может называться блоком 213 преобразования.
Реконструкция
Модуль 214 реконструкции (например, сумматор 214) конфигурирован для суммирования блока 213 преобразования (т.е. реконструированного блока 213 остатка) с блоком 265 прогнозирования с целью получения реконструированного блока 215 в области отсчетов, например, посредством суммирования – отсчет за отсчетом, – величин отсчетов реконструированного блока 213 остатка с величинами отсчетов блока 265 прогнозирования.
Фильтрация
Модуль 220 контурного фильтра (или коротко «контурный фильтр» 220) конфигурирован для фильтрации реконструированного блока 215 с целью получения фильтрованного блока 221, или в общем случае, для фильтрации реконструированных отсчетов с целью получения фильтрованных отсчетов. Модуль контурного фильтра конфигурирован, например, для сглаживания переходов между пикселями или повышения качества видео иным способом. Этот модуль 220 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, нелинейный фильтр с адаптивным смещением (sample-adaptive offset (SAO)), либо один или более других фильтров, например, двусторонний фильтр, адаптивный контурный фильтр (adaptive loop filter (ALF)), фильтры для увеличения резкости, сглаживающие фильтры или коллаборативные фильтры, или какая-либо комбинация таких фильтров. Хотя модуль 220 контурного фильтра показан на Фиг. 2 как внутриконтурный фильтр, этот модуль 220 контурного фильтра может быть реализован в качестве постконтурного фильтра. Фильтрованный блок 221 может также называться фильтрованным реконструированным блоком 221.
Варианты кодирующего устройства 20 для видео (соответственно модуль 220 контурного фильтра) могут быть конфигурированы для передачи на выход параметров контурного фильтра (таких как информация о нелинейной фильтрации с адаптивным смещением), например, напрямую, либо в кодированном виде через модуль 270 энтропийного кодирования, так что, например, декодирующее устройство 30 может принимать и применять те же самые параметры контурного фильтра или соответствующих контурных фильтров при декодировании.
Буфер декодированного изображения
Буфер 230 декодированного изображения (DPB) может представлять собой запоминающее устройство, сохраняющее опорные изображения, или, в общем случае, данные опорных изображений, для кодирования данных видео посредством кодирующего устройства 20 для видео. Буфер DPB 230 может быть образован какими-либо из широкого спектра запоминающих устройств, такими как динамическое запоминающее устройство с произвольной выборкой (динамическое ЗУПВ (dynamic random access memory (DRAM))), включая синхронное динамическое ЗУПВ (synchronous DRAM (SDRAM)), магниторезистивное ЗУПВ (magnetoresistive RAM (MRAM)), резистивное ЗУПВ (resistive RAM (RRAM)) или запоминающие устройства других типов. Буфер 230 декодированного изображения (DPB) может быть конфигурирован для сохранения одного или более фильтрованных блоков 221. Буфер 230 декодированного изображения может быть далее конфигурирован для сохранения других ранее фильтрованных блоков, например, ранее реконструированных и фильтрованных блоков 221, из того же самого текущего изображения или из других изображений, например, ранее реконструированных изображений, и может предоставлять полные ранее реконструированные, т.е. декодированные, изображения (и соответствующие опорные блоки и отсчеты) и/или частично реконструированное текущее изображение (и соответствующие опорные блоки и отсчеты), например, для межкадрового прогнозирования. Буфер 230 декодированного изображения (DPB) может быть также конфигурирован для сохранения одного или более нефильтрованных реконструированных блоков 215, либо вообще нефильтрованных реконструированных отсчетов, например, если реконструированный блок 215 не был фильтрован в модуле 220 контурного фильтра, или какой-либо другой дополнительно обработанной версии реконструированных блоков или отсчетов.
Выбор режима (разбиение и прогнозирование)
Модуль 260 выбора режима содержит модуль 262 разбиения, модуль 244 межкадрового прогнозирования и модуль 254 внутрикадрового прогнозирования и этот модуль 260 конфигурирован для приема или получения данных исходного изображения, например, исходного блока 203 (текущего блока 203 из текущего изображения 17), и данных реконструированного изображения, например, фильтрованных и/или нефильтрованных реконструированных отсчетов или блоков того же самого (текущего) изображения и/или из одного или более ранее декодированных изображений, например, из буфера 230 декодированного изображения или других буферов (например, буфера строк, не показанного). Эти реконструированные данные изображения используются в качестве опорных данных изображения для прогнозирования, например, межкадрового или внутрикадрового прогнозирования, с целью получения блока 265 прогнозирования или предиктора 265.
Модуль 260 выбора режима может быть конфигурирован для определения или выбора разбиения для режима прогнозирования текущего блока (включая отсутствие разбиения) и режима прогнозирования (например, режима внутрикадрового или межкадрового прогнозирования) и генерации соответствующего блока 265 прогнозирования, который используется для вычисления блока 205 остатка и для реконструкции указанного реконструированного блока 215.
Варианты модуля 260 выбора режима могут быть конфигурированы для выбора режима разбиения и прогнозирования (например, из совокупности режимов, поддерживаемых модулем 260 выбора режима или доступных для него), который обеспечивает наилучшее согласование или другими словами минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), либо минимальные сигнализационные издержки (минимальные сигнализационные издержки означают лучшее сжатие для передачи или хранения), либо этот режим учитывает или балансирует оба этих фактора – минимальный остаток и минимальные издержки. Модуль 260 выбора режима может быть конфигурирован для определения режима разбиения и прогнозирования на основе оптимизации соотношения между скоростью передачи данных и искажениями (rate distortion optimization (RDO)), т.е. для выбора режима прогнозирования, обеспечивающего минимальные искажения в функции скорости передачи данных. Термины типа «наилучший», «минимальный», «оптимальный» и т.д. в этом контексте не обязательно относятся к общему («глобальному») «наилучшему», «минимальному», «оптимальному» и т.п., а могут также относиться к выполнению критерия завершения или выбора, типа того, что некая величина превосходит или падает ниже пороговой величины, или других ограничений, ведущих к потенциально «субоптимальному выбору», но позволяющих уменьшить сложность и сократить время обработки данных.
Другими словами, модуль 262 разбиения может быть конфигурирован для разбиения блока 203 на единицы разбиения или субблоки меньшего размера (которые снова образуют блоки), например, путем итеративного использования разбиения по схеме дерева квадратов (quad-tree (QT)), разбиения по схеме двоичного дерева (binary-tree (BT)) или разбиения по схеме троичного дерева (triple-tree (TT)) или какой-либо комбинации этих схем разбиения, и для осуществления, например, прогнозирования для каждой единицы разбиения блока или субблока, где процедура выбора режима содержит выбор структуры дерева для разбитого блока 203, и указанные режимы прогнозирования применяются к каждой из единиц разбиения блока или к каждому субблоку.
В последующем, разбиение (например, посредством модуля 260 разбиения) и прогнозирование (посредством модуля 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 отсчетов яркостной составляющей, два соответствующих блока CTB отсчетов цветностных составляющих изображения, имеющего три массива отсчетов, либо блок CTB отсчетов черно-белого изображения или изображения, кодированного с использованием трех раздельных цветовых плоскостей и синтаксических структур, используемых для кодирования отсчетов. Соответственно, блок дерева кодирования (CTB) может представлять собой блок размером NxN отсчетов для некоторого значения N, так что разделение составляющей на блоки CTB является разбиением. Единица кодирования (CU) может представлять собой или содержать блок кодирования отсчетов яркостной составляющей, два соответствующих блока кодирования отсчетов цветностной составляющей изображения, содержащего три массива отсчетов, или блок кодирования отсчетов черно-белого изображения или изображения, кодированного с использованием трех раздельных цветовых плоскостей и синтаксических структур, используемых для кодирования отсчетов. Соответственно, блок кодирования (CB) может представлять собой блок размером MxN отсчетов для некоторых значений M и N, так что разделение блока CTB на блоки кодирования является разбиением.
В ряде вариантов, например, согласно стандарту кодирования HEVC, единица дерева кодирования (CTU) может быть разбита на единицы CU с использованием структуры дерева квадратов, обозначенной как дерево кодирования. Решение о том, следует ли кодировать какую-то область изображения с использованием межкадрового (временного) или внутрикадрового (пространственного) прогнозирования, принимается на уровне единиц CU. Каждая единица CU может быть далее разбита на одну, две или четыре единицы PU в соответствии с типом разбиения на единицы PU. Внутри одной единицы PU применяется один и тот же процесс прогнозирования, а относящуюся к этому информацию передают декодирующему устройству на основе единиц PU. После получения блока остатка в результате применения процедуры прогнозирования на основе типа разбиения на единицы PU, единица CU может быть разбита на единицы преобразования (TU) в соответствии с другой структурой дерева квадратов, аналогичной дереву кодирования для единицы CU.
В некоторых вариантах, например, согласно самой последней разрабатываемой сегодня версии стандарта кодирования, которая называется универсальным видео кодированием (Versatile Video Coding (VVC)), для разбиения блока кодирования применяется, например, комбинированное разбиение по схеме дерева квадратов и двоичного дерева (Quad-tree and binary tree (QTBT)). В структуре блоков дерева QTBT единица CU может иметь либо квадратную, либо прямоугольную форму. Например, единицу дерева кодирования (CTU) сначала разбивают согласно структуре дерева квадратов. Концевые узлы («листья») дерева квадратов далее разбивают в соответствии со структурой двоичного дерева или троичного (либо тройного) дерева. Концевые узлы дерева разбиения называются единицами кодирования (CU), и эта сегментация используется для процедур прогнозирования и преобразования без какого-либо дальнейшего разбиения. Это означает, что единицы CU, единицы PU и единицы TU имеют одинаковый размер блоков в структуре блоков кодирования дерева QTBT. Вместе со структурой блоков дерева QTBT могут быть использованы несколько видов разбиений, например разбиение по схеме тройного (троичного) дерева.
В одном из примеров, модуль 260 выбора режима в кодирующем устройстве 20 для видео может быть конфигурирован для осуществления какой-либо комбинации способов разбиения, описываемых здесь.
Как описано выше, кодирующее устройство 20 для видео конфигурировано для определения или выбора наилучшего или оптимального режима прогнозирования из множества (например, предварительно заданного) режимов прогнозирования. Это множество режимов прогнозирования может содержать, например, режимы межкадрового прогнозирования и/или режимы внутрикадрового прогнозирования.
Внутрикадровое прогнозирование
Множество режимов внутрикадрового прогнозирования может содержать 35 разных режимов внутрикадрового прогнозирования, например, ненаправленные режимы, как DC-режим (или средний) и планарный режим, или направленные режимы, например, как определено в стандарте кодирования HEVC, либо может содержать 67 различных режимов внутрикадрового прогнозирования, например, ненаправленные режимы, как DC-режим (или средний) и планарный режим, или направленные режимы, например, как определено в стандарте кодирования VVC.
Модуль 254 внутрикадрового прогнозирования конфигурирован для использования реконструированных отсчетов соседних блоков из одного и того же текущего изображения блока 265 при внутрикадровом прогнозировании в соответствии с одним из режимов внутрикадрового прогнозирования из множества режимов внутрикадрового прогнозирования.
Модуль 254 внутрикадрового прогнозирования (или вообще модуль 260 выбора режима) далее конфигурирован для передачи параметров внутрикадрового прогнозирования (или вообще информации, указывающей выбранный режим внутрикадрового прогнозирования для рассматриваемого блока) модулю 270 энтропийного кодирования в форме синтаксических элементов 266 для включения в кодированные данные 21 изображения, так что, например, декодирующее устройство 30 для видео может принять и использовать эти параметры прогнозирования при декодировании.
Межкадровое прогнозирование
Множество (или возможные) режимов межкадрового прогнозирования зависит от доступных опорных изображений (т.е. предшествующих по меньшей мере частично декодированных изображений, например, сохраняемых в буфере DPB 230) и других параметров межкадрового прогнозирования, например, используется ли опорное изображение целиком или только его часть, например, область окна поиска вокруг области текущего блока, в опорном изображении для поиска наилучшим образом согласованного опорного блока, и/или, применяется ли интерполяция пикселей, например, интерполяция с точностью половины (half/semi-pel) пикселя и/или четверти пикселя, или нет.
В дополнение к приведенным выше режимам прогнозирования могут быть применены режим пропуска и/или прямой режим.
Модуль 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)), схемы контекстно-адаптивного кодирования в коде переменной длины (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 декодированного изображения (DPB), 330, модуль 360 применения режима, модуль 344 межкадрового прогнозирования и модуль 354 внутрикадрового прогнозирования. Модуль 344 межкадрового прогнозирования может представлять собой или содержать модуль компенсации движения. Декодирующее устройство 30 для видео может, в некоторых примерах, осуществлять декодирующий проход, в общем обратный кодирующему проходу, описываемому применительно к кодирующему устройству 20 для видео, показанному на Фиг. 2.
Как поясняется в отношении кодирующего устройства 20, модуль 210 обратного квантования, процессорный модуль 212 обратного преобразования, модуль 214 реконструкции, контурный фильтр 220, буфер 230 декодированного изображения (DPB), модуль 344 межкадрового прогнозирования и модуль 354 внутрикадрового прогнозирования также называются модулями, составляющими «встроенное декодирующее устройство» в кодирующем устройстве 20 для видео. Соответственно, модуль 310 обратного квантования может быть идентичным по функциям модулю обратного квантования 210, процессорный модуль 312 обратного преобразования может быть идентичным по функциям процессорному модулю 212 обратного преобразования, модуль 314 реконструкции может быть идентичным по функциям модулю 214 реконструкции, контурный фильтр 320 может быть идентичным по функциям контурному фильтру 220, и буфер 330 декодированного изображения может быть идентичным по функциям буферу 230 декодированного изображения. Поэтому пояснения, приведенные для соответствующих модулей и функций кодирующего устройства 20 для видео, подходят также к соответствующим модулям и функциям декодирующего устройства 30 для видео.
Энтропийное декодирование
Модуль 304 энтропийного декодирования конфигурирован для синтаксического анализа потока битов данных 21 (или вообще кодированных данных 21 изображения) и осуществления, например, энтропийного декодирования кодированных данных 21 изображения с целью получения, например, квантованных коэффициентов 309 и/или декодированных параметров кодирования (не показаны на Фиг. 3), например, какие-либо или все параметры межкадрового прогнозирования (например, индекс опорного изображения и вектора движения), параметр внутрикадрового прогнозирования (например, режим внутрикадрового прогнозирования или индекс), параметры преобразования, параметры квантования, параметры контурного фильтра и/или другие синтаксические элементы. Модуль 304 энтропийного декодирования может быть конфигурирован для применения алгоритмов или схем декодирования, соответствующих схемам кодирования, как это рассматривается в отношении модуля 270 энтропийного кодирования в кодирующем устройстве 20. Модуль 304 энтропийного декодирования может быть далее конфигурирован для предоставления параметров межкадрового прогнозирования, параметра внутрикадрового прогнозирования и/или других синтаксических элементов модулю 360 применения режима и других параметров другим модулям в декодирующем устройстве 30. Декодирующее устройство 30 для видео может принимать синтаксические элементы на уровне слоев (срезов) видео и/или уровне блоков видео. В дополнение или в качестве альтернативы слоям (срезам) и соответствующим синтаксическим элементам могут быть приняты и/или использованы группы плиток и/или плитки и соответствующие синтаксические элементы.
Обратное квантование
Модуль 310 обратного квантования может быть конфигурирован для приема параметров квантования (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 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, нелинейный фильтр с адаптивным смещением (SAO), либо один или более других фильтров, например, двусторонний фильтр, адаптивный контурный фильтр (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 для видео может строить списки опорных изображений, Список 0 и Список 1 (List 0 и List 1), с использованием способов построения по умолчанию на основе опорных изображений, сохраняемых в буфере DPB 330. То же самое или аналогичное может быть применено в вариантах, использующих группы плиток (например, группы плиток видео) и/или плитки (например, плитки видео) в дополнение или в качестве альтернативы для слоев (например, слоев видео), например, видео может быть кодировано с использованием групп плиток и/или плиток I, P или B типа.
Модуль 360 применения режима конфигурирован для определения информации прогнозирования для видео блока из текущего слоя видео посредством синтаксического анализа векторов движения или относящейся к ним информации и других синтаксических элементов, и использует эту информацию прогнозирования для генерации блоков прогнозирования для текущего видео блока, декодируемого в настоящий момент. Например, модуль 360 применения режима использует некоторые из принятых синтаксических элементов для определения режима прогнозирования (например, внутрикадрового или межкадрового прогнозирования), применяемого для кодирования видео блоков из слоя видео, типа слоя для межкадрового прогнозирования (например, B-слой, P-слой или GPB-слой), информации о построении для одного или более списков опорных изображений для рассматриваемого слоя, векторов движения для каждого видео блока, кодированного в режиме межкадрового прогнозирования, информации о статусе межкадрового прогнозирования для каждого видео блока, кодированного в режиме межкадрового прогнозирования, из рассматриваемого слоя и другой информации, необходимой для декодирования видео блоков из текущего слоя видео. То же самое или аналогичное может быть применено в вариантах, использующих группы плиток (например, группы плиток видео) и/или плитки (например, плитки видео) в дополнение или в качестве альтернативы для слоев (например, слоев видео), например, видео может быть кодировано с использованием групп плиток и/или плиток I, P или B типа.
Варианты декодирующего устройства 30 для видео, как показано на Фиг. 3, могут быть конфигурированы для разбиения и/или декодирования изображения с использованием слоев (срезов) (также называемых слоями видео), где изображение может быть разбито на или декодировано с использованием одного или более слоев (срезов) (обычно не накладывающихся один на другой), и при этом каждый слой может содержать один или более блоков (например, единиц CTU).
Варианты декодирующего устройства 30 для видео, как показано на Фиг. 3, могут быть конфигурированы для разбиения и/или декодирования изображения с использованием групп плиток (также называемых группами плиток видео) и/или плиток (также называемых плитками видео), и каждая группа плиток может содержать, например, один или более блоков (например, единиц CTU) или одну или более плиток, где каждая плитка может, например, быть прямоугольной формы и может содержать один или более блоков (например, единиц CTU), например, полных или частичных блоков.
Для декодирования кодированных данных 21 изображения могут быть использованы и другие варианты декодирующего устройства 30 для видео. Например, это декодирующее устройство 30 может генерировать выходной поток видео без применения модуля 320 контурной фильтрации. Например, декодирующее устройство 30, построенное не на основе преобразования, может осуществлять обратное квантование сигнала остатка напрямую, без применения процессорного модуля 312 обратного преобразования для определенных блоков или кадров. В другом варианте реализации, декодирующее устройство 30 для видео может иметь модуль 310 обратного квантования и процессорный модуль 312 обратного преобразования, комбинированные в одном модуле.
Следует понимать, что в кодирующем устройстве 20 и в декодирующем устройстве 30, результат обработки данных на любом текущем этапе может быть далее обработан и затем передан на следующий этап. Например, после интерполяционной фильтрации, определения вектора движения или контурной фильтрации над результатом такой интерполяционной фильтрации, определения вектора движения или контурной фильтрации может быть выполнена дополнительная операция, такая как усечение или сдвиг.
Следует отметить, что дополнительные операции могут быть применены к найденным векторам движения для текущего блока (включая, но не ограничиваясь, векторы движения контрольных точек для аффинного режима, векторы движения субблоков в аффинном и планарном режимах, в режиме прогнозирования ATMVP, временные векторы движения и т.п.). Например, величина вектора движения ограничена заданным диапазоном в соответствии с представляющими ее битами. Если представляющие биты для вектора движения определены параметром bitDepth, тогда указанный диапазон составляет -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, где символ “^” обозначает возведение в степень. Например, если параметр bitDepth установлен равным 6, диапазон составляет -32768 ~ 32767; если параметр bitDepth установлен равным 18, диапазон составляет -131072~131071. Например, величина найденного в результате определения вектора движения (например, векторов MV для четырех субблоков размером 4x4 каждый в одном блоке размером 8x8) ограничена таким образом, что максимальная величина разности между целыми частями векторов MV четырех субблоков размером не превышает N пикселей, например, не более 1 пикселя. Здесь предлагаются два способа для ограничения векторов движения в соответствии с параметром bitDepth.
Способ 1: удаление бита MSB (самый старший бит) переполнения посредством следующих операций
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 представляет собой горизонтальную составляющую вектора движения для блока или субблока изображения, mvy представляет собой вертикальную составляющую вектора движения для блока или субблока изображения, и ux и uy обозначают промежуточные величины;
Например, если величина mvx составляет -32769, тогда после применения формул (1) и (2), результирующая величина составит 32767. В компьютерной системе десятичные числа хранятся в виде дополнения до двух. Дополнение до двух для числа -32769 равно 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)
где vx представляет собой горизонтальную составляющую вектора движения блока или субблока, vy представляет собой вертикальную составляющую вектора движения блока или субблока; x, y и z соответствуют трем входным величинам процедуры усечения вектора MV и функция усечения Clip3 определена следующим образом:
Clip3( x, y, z ) =
На Фиг. 4 представлена упрощенная схема устройства 400 для кодирования видео согласно одному из вариантов настоящего изобретения. Это устройство 400 для кодирования видео подходит для реализации предлагаемых вариантов, как они рассматриваются здесь. В одном из вариантов, это устройство 400 для кодирования видео может представлять собой декодирующее устройство, такое как декодирующее устройство 30 для видео, показанное на Фиг. 1A, или кодирующее устройство, такое как кодирующее устройство 20 для видео, показанное на Фиг. 1A.
Это устройство 400 для кодирования видео содержит входящие порты 410 (или входные порты 410) и приемные модули (Rx) 420 для приема данных; процессор, логический модуль или центральный процессор (central processing unit (CPU)) 430 для обработки данных; передающие модули (Tx) 440 и исходящие порты 450 (или выходные порты 450) для передачи данных; и запоминающее устройство 460 для сохранения данных. Это устройство 400 для кодирования видео может также содержать оптоэлектрические (optical-to-electrical (OE)) компоненты и электрооптические (electrical-to-optical (EO)) компоненты, соединенные с входящими портами 410, приемные модули 420, передающие модули 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 показана здесь в виде единственной шины, эта шина 512 может быть составлена из нескольких шин. Далее, вторичное запоминающее устройство 514 может быть напрямую соединено с другими компонентами устройства 500, либо оно может быть доступно через сеть связи и может содержать один интегральный модуль, такой как карта памяти, или более модулей, таких как несколько карт памяти. Устройство 500 может, таким образом, быть реализовано в самом широком спектре конфигураций.
Исходные положения для внутрикадрового прогнозирования
Для захвата произвольных направлений края, присутствующих в естественном видео, число направленных режимов внутрикадрового прогнозирования в документе VTM6 увеличено от 33, как это используется в стандарте кодирования HEVC, до 65. Планарный режим и DC-режим остаются теми же самыми. В частности, величины для всех режимов внутрикадрового прогнозирования определены в Табл. 8-1:
Таблица 8-1 – Спецификации режимов внутрикадрового прогнозирования и ассоциированные имена
Внутрикадровое прогнозирование для планарного режима
После завершения процедуры фильтрации опорных отсчетов, как это определено в документе «Универсальное видео кодирование» (Проект 6)» (Versatile Video Coding (Draft 6)) Объединенной группы исследований в области видео (Joint Video Experts Team (JVET)), созданной подразделениями ITU-T SG 16 WP 3 и ISO/IEC JTC 1/SC 29/WG 11 (доступно по адресу http://phenix.it-sudparis.eu/jvet/, документ no: JVET-O2001-vE) спецификаций кодирования (VVC Specification), опорные отсчеты становятся готовы к использованию. Имея эти опорные отсчеты, можно генерировать прогнозируемый внутрикадровым способом отсчет (который может также называться спрогнозированным внутрикадровым способом отсчетом). Если режимом внутрикадрового прогнозирования для текущего блока является планарный режим или DC-режим, определена соответствующая процедура внутрикадрового прогнозирования. Если режим внутрикадрового прогнозирования является угловым режимом (т.е. ни планарным режимом, ни DC-режимом), тогда активизируется прогнозирование в угловом режиме.
Планарный режим является часто используемым режимом внутрикадрового прогнозирования. На Фиг. 6 показана идея для внутрикадрового прогнозирования, когда ширина и высота блока прогнозирования установлены равными N. Спрогнозированный отсчет составлен из горизонтальной составляющей и вертикальной составляющей. Горизонтальная составляющая представляет собой линейно взвешенную комбинацию соответствующих левого и правого опорных отсчетов (см. часть «a» на Фиг. 6). Вертикальная составляющая представляет собой линейно взвешенную комбинацию соответствующих верхнего и нижнего опорных отсчетов (часть «b» на Фиг. 6). Отметим, что правый столбец в «a» заполнен верхним правым опорным отсчетом p[N][-1], и нижняя строка, показанная в части «b», заполнена нижним левым опорным отсчетом p[-1][N]. Отсчет p[0][0] расположен в верхнем левом углу текущего (прогнозируемого) блока. После генерации этих горизонтальной и вертикальной составляющих, спрогнозированный выходной отсчет представляет собой взвешенную комбинацию горизонтальной и вертикальной составляющих (часть «c» на Фиг. 6).
Более конкретно, прогнозирование в планарном режиме определено следующим образом:
Спецификация режима INTRA_PLANAR внутрикадрового прогнозирования
Входными данными для этой процедуры являются:
- переменная nTbW, специфицирующая ширину блока преобразования,
- переменная nTbH, специфицирующая высоту блока преобразования,
- соседние отсчеты p[ x ][ y ], при x = −1, y = −1..nTbH и x = 0..nTbW, y = −1.
Выходными данными этой процедуры являются спрогнозированными отсчетами predSamples[ x ][ y ], при x = 0..nTbW − 1, y = 0..nTbH − 1.
Переменные nW и nH определены следующим образом:
nW = Max( nTbW, 2 ) (8-135)
nH = Max( nTbH, 2 ) (8-136)
Величины спрогнозированных отсчетов predSamples[ x ][ y ], при x = 0..nTbW − 1 и y = 0..nTbH − 1, определены следующим образом:
predV[ x ][ y ] = ( ( nH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nW ) (8-137)
predH[ x ][ y ] = ( ( nW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nH ) (8-138)
predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nW * nH ) >> (Log2 ( nW ) + Log2 ( nH ) + 1 ) (8-139)
В этом примере, для отсчета, который нужно спрогнозировать в точке с координатами (x, y):
- p[-1][y] представляет соответствующий опорный отсчет из столбца слева
- p[nTbW][-1] представляет соответствующий опорный отсчет из столбца справа. Отметим, что опорные отсчеты из столбца справа являются одинаковыми и заполнены с использованием отсчета p[nTbW][-1]. Этот отсчет p[nTbW][-1] представляет собой отсчет, расположенный в точке пересечения столбца опорных отсчетов справа и строки опорных отсчетов сверху.
- p[x][-1] представляет соответствующий опорный отсчет из строки сверху.
- p[-1][nTbH] представляет соответствующий опорный отсчет из строки снизу. Отметим, что опорные отсчеты из строки снизу являются одинаковыми и заполнены с использованием отсчета p[-1][nTbH]. Этот отсчет p[-1][nTbH] представляет собой отсчет, расположенный в точке пересечения строки опорных отсчетов снизу и столбца опорных отсчетов слева.
На Фиг. 7 показаны позиции этих опорных отсчетов, и выходной опорный отсчет predSamples[ x ][ y ] соответствует отсчетам в текущем блоке прогнозирования, который окружен штриховым прямоугольником. Нижний штриховой прямоугольник используется для иллюстрации отсчетов p(0,0)-p(15,0), расположенных в текущем блоке прогнозирования. Опорные отсчеты, показанные сплошной линией, соседствуют с текущим блоком прогнозирования. В примере, показанном на Фиг. 7, отсчеты с p(-1)(-1) по p(-1,1), и с p(0,-1) по p(15)(-1), являются опорными отсчетами. Переменные nTbW и nTbH представляют ширину и высоту блока прогнозирования, соответственно. В этом конкретном примере, текущий блок (блок прогнозирования или блок преобразования) имеет высоту nTbH в один пиксель. Блок прогнозирования представляет собой прямоугольный блок отсчетов размером MxN, полученный в результате межкадрового прогнозирования или внутрикадрового прогнозирования, где M и N являются ненулевыми положительными целыми числами. Аналогично, блок преобразования представляет собой прямоугольный блок отсчетов размером KxL, полученный в результате преобразования, где K и L являются ненулевыми положительными целыми числами. Обычно после генерации блока прогнозирования генерируют блок преобразования, имеющий тот же самый размер и расположенный в том же месте, посредством преобразования (или обратного преобразования при декодировании). Однако размер и расположение блока прогнозирования могут не всегда совпадать с размером и расположением ассоциированного с ним блока преобразования.
Предполагается, что внутрикадровое прогнозирование в планарном режиме является излишне усложненным, особенно для блоков с высотой равной 1.
В текущих спецификациях стандарта кодирования VVC в планарном режиме для каждого спрогнозированного отсчета требуется выполнить пять операций перемножения и три операции сдвига. В эти пять операций перемножения входят две операции для генерации вертикальной составляющей, две операции для генерации горизонтальной составляющей и одна операция для вычисления выходного отсчета. Эти три операции сдвига распределены по одной для генерации вертикальной и горизонтальной составляющих и одна для генерации выходного отсчета (predSamples)
Текущие спецификации кодирования VVC также обеспечивают генерирование вертикальной и горизонтальной составляющих с использованием билинейного фильтра путем обеспечения, что минимальная высота (nH) и минимальная ширина (nW) в уравнении 8-139 равны двум.
В некоторых вариантах настоящего изобретения предлагается упростить прогнозирование в планарном режиме для блока с высотой равной 1. А именно, для этого типа блока для генерации вертикальной составляющей с использованием строки опорных отсчетов снизу, заполненной с использованием отсчета p[-1][nTbH]. Конкретнее, генерирование вертикального отсчета вычисляют в соответствии со следующим уравнением:
predV[ x ][ y ] = (( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nW ) (8-137’)
predH[ x ][ y ] = ( ( nW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) (8-138’)
predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nW ) >> (Log2 ( nW ) +1 ) (8-139’)
При таком подходе, при прогнозировании в планарном режиме требуются только три операции перемножения и две операции сдвига для блоков с высотой, равной единице (nTbH=1).
В одном из вариантов, прогнозирование в планарном режиме модифицируют следующим образом:
Спецификация режима INTRA_PLANAR внутрикадрового прогнозирования
Входными данными для этой процедуры являются:
- переменная nTbW, специфицирующая ширину блока преобразования,
- переменная nTbH, специфицирующая высоту блока преобразования,
- соседние отсчеты p[ x ][ y ], при x = −1, y = −1..nTbH и x = 0..nTbW, y = −1.
Выходными данными этой процедуры являются спрогнозированными отсчетами predSamples[ x ][ y ], при x = 0..nTbW − 1, y = 0..nTbH − 1.
Переменные nW и nH определены как применение операций усечения к величинам nTbW и nTbH, соответственно:
nW = Max( nTbW, 2 ) (8135)
nH = Max( nTbH, 2 ) (8136)
Величины прогнозируемых отсчетов predSamples[ x ][ y ], при x = 0..nTbW − 1 и y = 0..nTbH − 1, определяют следующим образом:
Если nTbH равно 1:
predV[ x ][ y ] = (( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nW ) (8-137’)
predH[ x ][ y ] = ( ( nW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) (8-138’)
predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nW ) >> (Log2 ( nW ) +1 ) (8-139’)
в противном случае (nTbH не равно 1):
predV[ x ][ y ] = ( ( nH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nW ) (8-137)
predH[ x ][ y ] = ( ( nW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nH ) (8-138)
predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nW * nH ) >> (Log2 ( nW ) + Log2 ( nH ) + 1 ) (8-139)
В другом варианте, прогнозирование в планарном режиме модифицируют следующим образом:
Входными данными для этой процедуры являются:
- переменная nTbW, специфицирующая ширину блока преобразования,
- переменная nTbH, специфицирующая высоту блока преобразования,
- соседние отсчеты p[ x ][ y ], при x = −1, y = −1..nTbH и x = 0..nTbW, y = −1.
Выходными данными этой процедуры являются спрогнозированными отсчетами predSamples[ x ][ y ], при x = 0..nTbW − 1, y = 0..nTbH − 1.
Величины прогнозируемых отсчетов predSamples[ x ][ y ], при x = 0..nTbW − 1 и y = 0..nTbH − 1, определяют следующим образом:
predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ) (8-137’’)
predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ) (8-138’’)
predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nTbW * nTbH ) >> (Log2 ( nTbW ) + Log2 ( nTbH ) + 1 ) (8-139’’)
Фактически, равенства в ветвях «если-иначе» (if-else) в первом варианте могут быть объединены в равенства, как показано в этом варианте. По сравнению с равенствами с 8-137 по 8-139 сложность остается той же самой, однако операции усечения для величин nTbW и nTbH исключены.
В приведенных выше вариантах, переменная nTbW может представлять ширину блока прогнозирования или блока преобразования. Как отмечено выше, в соответствии с некоторыми вариантами, размер блока преобразования и размер блока прогнозирования могут быть одинаковыми. Однако описание такими примерами не исчерпывается.
В приведенных выше вариантах, переменная nTbH может представлять высоту блока прогнозирования или блока преобразования.
В частности, предложены следующие способы и варианты, реализуемые декодирующим или кодирующим устройством. Декодирующее устройство может представлять собой декодирующее устройство 30 для видео, показанное на Фиг. 1A, или декодирующее устройство 30, показанное на Фиг. 3. Кодирующее устройство может представлять собой кодирующее устройство 20 для видео, показанное на Фиг. 1A, или кодирующее устройство 20, показанное на Фиг. 2.
Согласно варианту 800 (см. Фиг. 8), устройство в блоке 801 определяет, что режим внутрикадрового прогнозирования для текущего блока является планарным режимом. Этот текущий блок может представлять собой блок прогнозирования или блок преобразования
Устройство может также определить, равна ли высота или ширина этого блока 1. Строка опорных отсчетов снизу для этого блока может быть заполнена с использованием отсчета p[-1][ nTbH], и/или столбец опорных отсчетов справа может быть заполнен с использованием отсчета p[ nTbW ][ −1 ].
В блоке 802, устройство вычисляет величину вертикальной составляющей прогнозируемого внутрикадровым способом отсчета текущего блока.
Эту величину вертикальной составляющей predV[ x ][ y ] генерируют с применением линейного фильтра, использующего отсчеты из строк опорных отсчетов сверху и снизу, где строку опорных отсчетов снизу заполняют с использованием отсчета, расположенного в точке с координатами (-1, nTbH) относительно верхнего левого отсчета текущего блока. Например, predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ), где predV[ x ][ y ] представляет величину вертикальной составляющей при x = 0..nTbW − 1 и y = 0..nTbH – 1, nTbH представляет высоту блока, nTbW представляет ширину блока, и p[ x ][ -1 ] представляет соседние отсчеты при x = 0..nTbW.
В частности, когда высота блока равна 1, predV[ x ][ y ] = (( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ).
Когда ширина блока равна 1, predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ).
Согласно приведенному выше описанию, ширина блока равна nTbW, и высота блока равна nTbH. Прежде вычисления величины predV[ x ][ y ] не применяются ни операция усечения nW = Max( nTbW, 2 ), ни операция усечения nH = Max( nTbH, 2 ).
В блоке 803, устройство вычисляет величину горизонтальной составляющей прогнозируемого внутрикадровым способом отсчета текущего блока.
Эту величину горизонтальной составляющей predH[ x ][ y ] генерируют с применением линейного фильтра, использующего отсчеты из столбцов опорных отсчетов слева и справа, где столбец отсчетов справа заполняют с использованием отсчета, расположенного в точке с координатами (nTbW, -1) относительно верхнего левого отсчета текущего блока.
Например, величина predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ) , где predH[ x ][ y ] представляет величину горизонтальной составляющей при x = 0..nTbW − 1 и y = 0..nTbH – 1, nTbH представляет высоту блока, nTbW представляет ширину блока, и p[ -1 ][ y ] представляет соседние отсчеты при y = −1..nTbH.
В частности, когда высота блока равна 1, predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ).
Когда ширина блока равна 1, predH[ x ][ y ] = ( ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ).
Аналогично, прежде вычисления величины predH[ x ][ y ] не применяются ни операция усечения nW = Max( nTbW, 2 ), ни операция усечения nH = Max( nTbH, 2 ).
Нет никаких ограничений относительно последовательности выполнения блоков 802 и 803. Другими словами, функции блока 802 можно осуществлять прежде, в то же самое время или после блока 803.
В блоке 804 устройство генерирует прогнозируемый внутрикадровым способом отсчет на основе величины вертикальной составляющей и величины горизонтальной составляющей.
Например, прогнозируемый внутрикадровым способом отсчет вычисляют как:
predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nTbW * nTbH ) >> (Log2 ( nTbW ) + Log2 ( nTbH ) + 1 ).
В приведенных выше вариантах показана подробная информация относительно внутрикадрового прогнозирования в планарном режиме.
Фиг. 9 иллюстрирует варианты устройства 900. Это устройство 900 может представлять собой декодирующее устройство 30 для видео, показанное на Фиг. 1A, или декодирующее устройство 30, показанное на Фиг. 3, либо оно может представлять собой кодирующее устройство 20 для видео, показанное на Фиг. 1A, или кодирующее устройство 20, показанное на Фиг. 2. Устройство 900 может быть использовано для реализации варианта 800 или других вариантов, рассмотренных выше.
Устройство 900 для внутрикадрового прогнозирования в планарном режиме содержит решающий модуль 901, вычислительный модуль 902 и прогнозирующий модуль 903. Решающий модуль 901 конфигурирован для определения, что режим внутрикадрового прогнозирования для рассматриваемого блока является планарным. Вычислительный модуль 902 конфигурирован для вычисления величины вертикальной составляющей прогнозируемого внутрикадровым способом отсчета, входящего в рассматриваемый блок изображения. Эту величину вертикальной составляющей predV[ x ][ y ] генерируют с применением линейного фильтра, использующего отсчеты из строк опорных отсчетов сверху и снизу, строку отсчетов снизу заполняют с использованием отсчета, расположенного в точке с координатами (-1, nTbH) относительно верхнего левого отсчета текущего блока. Например, predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ), где predV[ x ][ y ] представляет величину вертикальной составляющей при x = 0..nTbW − 1 и y = 0..nTbH – 1, nTbH представляет высоту блока, nTbW представляет ширину блока, и p[ x ][ -1 ] представляет соседние отсчеты при x = 0..nTbW.
Вычислительный модуль далее конфигурирован для вычисления величины горизонтальной составляющей прогнозируемого внутрикадровым способом отсчета, где эту величину горизонтальной составляющей predH[ x ][ y ] генерируют посредством линейного фильтра с использованием отсчетов из столбцов опорных отсчетов слева и справа, где столбец отсчетов справа заполняют с использованием отсчета, расположенного в точке с координатами (nTbW, -1) относительно верхнего левого отсчета текущего блока.
Например, величина predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ) , где predH[ x ][ y ] представляет величину горизонтальной составляющей при x = 0..nTbW − 1 и y = 0..nTbH – 1, nTbH представляет высоту блока, nTbW представляет ширину блока, и p[ -1 ][ y ] представляет соседние отсчеты при y = −1..nTbH.
Когда высота блока равна 1, вычислительный модуль (902) конфигурирован для вычисления величины вертикальной составляющей и величины горизонтальной составляющей в соответствии с:
predV[ x ][ y ] = (( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ) ,
predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ).
Когда ширина блока равна 1, вычислительный модуль (902) конфигурирован для вычисления величины вертикальной составляющей и величины горизонтальной составляющей в соответствии с:
predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] )
predH[ x ][ y ] = ( ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ).
Прогнозирующий модуль 903 конфигурирован для генерации прогнозируемого внутрикадровым способом отсчета на основе величины вертикальной составляющей и величины горизонтальной составляющей. Например, прогнозирующий модуль (903) конфигурирован для генерации прогнозируемого внутрикадровым способом отсчета в соответствии с:
predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nTbW * nTbH ) >> (Log2 ( nTbW ) + Log2 ( nTbH ) + 1 ).
Устройство может далее содержать модуль заполнения (904). Этот модуль заполнения (904) конфигурирован для заполнения строки опорных отсчетов снизу от рассматриваемого блока или блока преобразования с использованием отсчета p[-1][ nTbH], в частности, когда высота рассматриваемого блока или блока преобразования равна 1, или заполнения столбца опорных отсчетов справа от рассматриваемого блока с использованием отсчета p[ nTbW ][ −1 ], в частности, когда ширина рассматриваемого блока равна 1.
Как обсуждается выше, в обычных случаях, относящихся к внутрикадровому прогнозированию в планарном режиме, определение отсчетов блока прогнозирования оказывается слишком усложненным для некоторых блоков. Прежде вычисления величины вертикальной составляющей и величины горизонтальной составляющей должны быть получены две переменные nW и nH путем применения операций усечения к переменным nTbW и nTbH. Некоторые варианты настоящего изобретения не осуществляют операцию усечения nW = Max( nTbW, 2 ) и операцию усечения nH = Max( nTbH, 2 ) прежде вычисления вертикальной и горизонтальной составляющих. Поэтому прогнозирование с применением планарного режима упрощается. Соответственно, эффективность кодирования или декодирования увеличивается.
Более того, здесь предложены следующие варианты.
Вариант 1. Согласно одному из аспектов настоящее изобретение относится к
способу декодирования или кодирования. Этот способ осуществляется декодирующим или кодирующим устройством. Способ содержит: вычисление величины вертикальной составляющей спрогнозированного внутрикадровым способом отсчета с использованием строки опорных отсчетов снизу от блока прогнозирования без использования столбца опорных отсчетов слева от блока прогнозирования, когда высота блока прогнозирования равна 1; вычисление величины горизонтальной составляющей спрогнозированного внутрикадровым способом отсчета; и генерирование спрогнозированного внутрикадровым способом отсчета на основе величины вертикальной составляющей и величины горизонтальной составляющей.
Вариант 2. Способ согласно варианту 1, отличающийся тем, что величину вертикальной составляющей predV[ x ][ y ] вычисляют с использованием:
predV[ x ][ y ] = (( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nW ),
где x = 0..nTbW – 1, y = 0..nTbH – 1, nTbH представляет высоту блока прогнозирования или блока преобразования, nTbW представляет ширину блока прогнозирования или блока преобразования, и nW представляет усеченную величину после применения усечения к ширине блока прогнозирования.
Вариант 3. Способ согласно варианту 1 или 2, отличающийся тем, что величину горизонтальной составляющей predH[ x ][ y ] вычисляют с использованием:
predH[ x ][ y ] = ( ( nW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] );
где x = 0..nTbW – 1, y = 0..nTbH – 1, nTbH представляет высоту блока прогнозирования или блока преобразования, nTbW представляет ширину блока прогнозирования или блока преобразования, и nW представляет усеченную величину, полученную после применения усечения к ширине блока прогнозирования .
Вариант 4. Способ согласно какому-либо одному из вариантов 1 – 3, отличающийся тем, что the спрогнозированный внутрикадровым способом отсчет predSamples[ x ][ y ] генерируют с использованием:
predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nW ) >> (Log2 ( nW ) +1 ).
Вариант 5. Способ согласно какому-либо одному из вариантов 1 – 4, отличающийся тем, что строку опорных отсчетов снизу заполняют с использованием отсчета p[-1][ nTbH].
Вариант 6. Согласно другому аспекту настоящее изобретение относится к способу декодирования или кодирования. Этот способ осуществляется декодирующим или кодирующим устройством. Способ содержит: получение высоты и ширины текущего блока прогнозирования без применения операции усечения; вычисление величины вертикальной составляющей спрогнозированного внутрикадровым способом отсчета на основе высоты и ширины блока прогнозирования; вычисление величины горизонтальной составляющей спрогнозированного внутрикадровым способом отсчета на основе высоты и ширины блока прогнозирования; и генерирование спрогнозированного внутрикадровым способом отсчета на основе величины вертикальной составляющей и величины горизонтальной составляющей.
Вариант 7. Способ согласно варианту 6, отличающийся тем, что величину вертикальной составляющей predV[ x ][ y ] вычисляют с использованием:
predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ) ,
где x = 0..nTbW – 1, y = 0..nTbH – 1, nTbH представляет высоту блока прогнозирования или блока преобразования, nTbW представляет ширину блока прогнозирования или блока преобразования.
Вариант 8. Способ согласно варианту 6 или 7, отличающийся тем, что величину горизонтальной составляющей predH[ x ][ y ] вычисляют с использованием:
predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ) ;
где x = 0..nTbW – 1, y = 0..nTbH – 1, nTbH представляет высоту блока прогнозирования или блока преобразования, nTbW представляет ширину блока прогнозирования или блока преобразования.
Вариант 9. Способ согласно какому-либо одному из вариантов 6 – 8, отличающийся тем, что спрогнозированный внутрикадровым способом отсчет predSamples[ x ][ y ] генерируют с использованием:
predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nTbW * nTbH ) >> (Log2 ( nTbW ) + Log2 ( nTbH ) + 1 ).
Вариант 10. Способ согласно какому-либо одному из вариантов 5 – 9, отличающийся тем, что строку опорных отсчетов снизу от блока прогнозирования заполняют с использованием p[-1][ nTbH].
Вариант 11. Способ согласно какому-либо одному из вариантов 5 – 10, отличающийся тем, что ширину блока прогнозирования получают без применения операции усечения nW = Max( nTbW, 2 ).
Вариант 12. Способ согласно какому-либо одному из вариантов 5 – 11, отличающийся тем, что высоту блока прогнозирования получают без применения операции усечения nH = Max( nTbH, 2 ).
В дальнейшем приведено пояснение приложения способа кодирования, равно как и способа декодирования, как показано в приведенных выше вариантах, и системы с использованием этих способов.
На Фиг. 10 представлена блок-схема, показывающая систему 3100 доставки контента для реализации сервиса распределения контента. Эта система 3100 доставки контента содержит устройство 3102 захвата изображения, терминал 3106, и, в качестве опции, содержит дисплей 3126. Устройство 3102 захвата изображения осуществляет связь с терминалом 3106 по линии 3104 связи. Эта линия связи может содержать канал 13 связи. описываемый выше. Линия 3104 связи может представлять собой, без ограничений, линию WIFI, Этернет, кабель, беспроводную линию (поколения 3G/4G/5G), шину USB или какую-либо комбинацию этих линий или подобных им.
Устройство 3102 захвата изображения генерирует данные и может кодировать данные с применением способа кодирования, как показано в приведенных выше вариантах. В качестве альтернативы, устройство 3102 захвата изображения может распределять данные потоковому серверу (не показан на чертежах), и сервер кодирует данные и передает эти данные терминалу 3106. Устройство 3102 для захвата изображения может представлять собой, не ограничиваясь этим, видеокамеру, смартфон или планшет, компьютер или портативный компьютер, систему видеоконференции, персональный цифровой помощник (PDA), установленное на автомобиле устройство или комбинацию таких устройств и им подобных. Например, устройство 3102 захвата изображения может представлять собой устройство-источник 12, как описано выше. Когда эти данные содержат видео, кодирующее устройство 20 для видео, входящее в устройство 3102 для захвата изображения, может фактически осуществлять кодирующую обработку этого видео. Когда эти данные содержат аудио (т.е. речь), кодирующее устройство для аудио, входящее в устройство 3102 захвата изображения, может фактически осуществлять кодирующую обработку аудио. Для некоторых практических сценариев, устройство 3102 для захвата изображения распределяет кодированные данные видео и аудио путем мультиплексирования их одни с другими. Для других практических сценариев, например, в системе видеоконференций, кодированные данные аудио и кодированные данные видео не мультиплексируют. Устройство 3102 распределяет кодированные данные аудио и кодированные данные видео терминалу 3106 по отдельности.
В системе 3100 доставки контента терминал 3106 принимает и воспроизводит кодированные данные. Терминал 3106 может представлять собой устройство, способное принимать и восстанавливать данные, такое как смартфон или планшет 3108, компьютер или портативный компьютер 3110, сетевой видеорегистратор (network video recorder (NVR))/ цифровой видеорегистратор (digital video recorder (DVR)) 3112, телевизор (TV) 3114, приставку (set top box (STB)) 3116, систему 3118 видеоконференций, систему 3120 видеонаблюдения, персональный цифровой помощник (personal digital assistant (PDA)) 3122, устанавливаемое на автомобиле устройство 3124, либо комбинацию каких-либо из этих устройств или других подобных устройств, способных декодировать упомянутые выше кодированные данные. Например, терминал 3106 может содержать устройство-адресат 14, как описано выше. Когда кодированные данные содержат видео, декодирующее устройство 30 для видео, входящее в терминал, имеет приоритет для декодирования видео. Когда кодированные данные содержат аудио, декодирующее устройство для аудио, входящее в терминал, имеет приоритет для осуществления декодирующей обработки аудио.
Если терминал имеет собственный дисплей, например, смартфон или планшет 3108, компьютер или портативный компьютер 3110, сетевой видеорегистратор (NVR)/ цифровой видеорегистратор (DVR) 3112, телевизор (TV) 3114, персональный цифровой помощник (PDA) 3122 или устанавливаемое на автомобиле устройство 3124, этот терминал может передавать декодированные данные своему дисплею. Если терминал не имеет своего дисплея, например, приставка STB 3116, система 3118 для видеоконференций или система 3120 видеонаблюдения, с этим терминалом соединяют внешний дисплей 3126 для приема и демонстрации декодированных данных.
Когда каждое устройство в этой системе осуществляет кодирование или декодирование, может быть использовано кодирующее устройство для изображений или декодирующее устройство для изображений, как показано в приведенных выше вариантах.
На Фиг. 11 представлена схема, показывающая структуру примера терминала 3106. После того, как терминал 3106 примет поток данных от устройства 3102 для захвата изображений, модуль 3202 обработки протокола анализирует протокол передачи потока. Этот протокол может представлять собой, без ограничений, потоковый протокол реального времени (Real Time Streaming Protocol (RTSP)), гипертекстовый транспортный протокол (Hyper Text Transfer Protocol (HTTP)), потоковый протокол HTTP реального времени (HTTP Live streaming protocol (HLS)), протокол динамических настраиваемых передач по HTTP (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. В качестве альтернативы, видео кадр может быть сохранен в буфере (не показан на Фиг. 11) прежде передачи этого кадра синхронному модулю 3212. Аналогично, аудио кадр может быть сохранен в буфере (не показан на Фиг. 11) прежде передачи этого кадра синхронному модулю 3212.
Синхронный модуль 3212 синхронизирует видео кадр и аудио кадр и передает видео/аудио в адрес видео/аудио дисплея 3214. Например, синхронный модуль 3212 синхронизирует представление видео и аудио информации. Информация может быть кодирована в синтаксисе с использованием меток времени, относящихся к представлению кодированных аудио данных и визуальных данных, и меток времени, относящихся к доставке самого потока данных.
Если в потоке присутствуют субтитры, декодирующее устройство 3210 субтитров декодирует эти субтитры и синхронизирует их с видео кадром и с аудио кадром, после чего передает видео/аудио/субтитры дисплею 3216 видео/аудио/субтитров.
Настоящее изобретение не исчерпывается описанной выше системой, так что либо кодирующее устройство для изображений, либо декодирующее устройство для изображений согласно приведенным выше вариантам может быть встроено в другую систему, например, в автомобильную систему.
Математические операторы
Математические операторы, используемые в настоящей заявке, аналогичны операторам, применяемым в языке программирования «C». Однако результаты операций целочисленного деления и арифметического сдвига определены более точно, а также определены дополнительные операции, такие как возведение в степени и деление действительных чисел. Соглашения о нумерации и подсчете обычно начинаются с нуля, например, «первый» эквивалентен 0-му, «второй» эквивалентен 1-му и т.д.
Арифметические операторы
Арифметические операторы ниже определены следующим образом:
Логические операторы
Логические операторы ниже определены следующим образом:
x && y булевый логический оператор «И» ("and") над величинами x и y
x | | y булевый логический оператор «ИЛИ» ("or") над величинами x и y
! булевый логический оператор «НЕ» ("not")
x ? y : z Если x является «ИСТИННЫМ» ( TRUE) или не равно 0, оператор принимает значение y; в противном случае оператор принимает значение z.
Реляционные операторы
Логические операторы ниже определены следующим образом:
> Больше чем
>= Не меньше
< Меньше чем
<= Не больше
= = Равно
!= Не равно
Когда реляционный оператор применяется к синтаксическому элементу или переменной, которой было присвоено значение "na" (не применимо (not applicable)), это значение "na" рассматривается как четко определенное отдельное значение для синтаксического элемента или переменной. Это значение "na" считается неравным никакой другой величине.
Поразрядные операторы
Поразрядные операторы ниже определены следующим образом:
& Поразрядное «И» ("and"). При работе с целочисленными аргументами оперирует над представлением целого числа в дополнительном до двойки коде. При работе с двоичным аргументом, содержащим меньшее число битов, чем другой аргумент, более короткий аргумент расширяют путем добавления равных нулю более старших битов.
| Поразрядное «ИЛИ» ("or"). При работе с целочисленными аргументами оперирует над представлением целого числа в дополнительном до двойки коде. При работе с двоичным аргументом, содержащим меньшее число битов, чем другой аргумент, более короткий аргумент расширяют путем добавления равных нулю более старших битов.
^ Поразрядное «исключающее ИЛИ» ("exclusive or"). При работе с целочисленными аргументами оперирует над представлением целого числа в дополнительном до двойки коде. При работе с двоичным аргументом, содержащим меньшее число битов, чем другой аргумент, более короткий аргумент расширяют путем добавления равных нулю более старших битов.
x >> y Арифметический сдвиг вправо представления целого числа x в дополнительном до двойки коде на y двоичных разрядов. Эта функция определена только для неотрицательных целых значений y. Биты, смещенные в позиции самых старших битов (most significant bit (MSBs)) в результате сдвига вправо, имеют значения, равные значениям битов MSB числа x до выполнения операции сдвига.
x << y Арифметический сдвиг влево представления целого числа x в дополнительном до двойки коде на y двоичных разрядов. Эта функция определена только для неотрицательных целых значений y. Биты, смещенные в позиции самых младших битов (least significant bit (LSB)) в результате сдвига влево, имеют значения, равные 0.
Операторы присвоения
Арифметические операторы ниже определены следующим образом:
= Оператор присвоения
+ + Увеличение, т.е. x+ + эквивалентно x = x + 1; при использовании в индексе массива оценивается величиной переменной прежде операции увеличения.
− − Уменьшение, т.е. x− − эквивалентно x = x − 1; при использовании в индексе массива оценивается величиной переменной прежде операции уменьшения.
+= Увеличение на указанную величину, т.е. x += 3 эквивалентно x = x + 3, и
x += (−3) эквивалентно x = x + (−3).
−= Уменьшение на указанную величину, т.е. x −= 3 эквивалентно x = x − 3, и
x −= (−3) эквивалентно x = x − (−3).
Обозначение диапазона
Следующая нотация используется для специфицирования диапазона величин:
x = y..z x принимает целочисленные значения от y до z, включительно, причем x, y и z являются целыми числами и z больше чем y.
Математические функции
Здесь определены следующие математические функции:
Abs( x ) =
Asin( x ) – тригонометрическая функция обратного синуса, оперирующая над аргументом x, находящимся в диапазоне от −1.0 до 1.0, включительно, а выходное значение функции лежит в диапазоне от −π÷2 до π÷2, включительно, в единицах радиан
Atan( x ) - тригонометрическая функция обратного тангенса, оперирующая над аргументом x, находящимся в диапазоне от −π÷2 до π÷2, включительно, в единицах радиан
Atan2( y, x ) =
Ceil( x ) наименьшее целое число не меньше x.
Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) − 1, x )
Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) − 1, x )
Clip3( x, y, z ) =
Cos( x ) – тригонометрическая функция косинуса, оперирующая над аргументом x в единицах радиан.
Floor( x ) наибольшее целое число не больше x.
GetCurrMsb( a, b, c, d ) =
Ln( x ) – натуральный логарифм x (логарифм по основанию «e», где «e» – постоянная основания натуральных логарифмов, равная 2.718 281 828...).
Log2( x ) логарифм x по основанию 2.
Log10( x ) логарифм x по основанию 10 (десятичный логарифм).
Min( x, y ) =
Max( x, y ) =
Round( x ) = Sign( x ) * Floor( Abs( x ) + 0.5 )
Sign( x ) =
Sin( x ) – тригонометрическая функция синуса, оперирующая над аргументом x в единицах радиан
Sqrt( x ) =
Swap( x, y ) = ( y, x )
Tan( x ) – тригонометрическая функция тангенса, оперирующая над аргументом x в единицах радиан
Порядок приоритетности операций
Когда порядок выполнения операций (приоритетность) в выражении не обозначен в явном виде с использованием скобок, применяются следующие правила:
– Операции с более высоким приоритетом выполняются прежде любой операции с более низким приоритетом.
– Операции с одинаковой приоритетности выполняются последовательно слева направо.
Таблица ниже специфицирует приоритетность операций от наивысшей к наинизшей; более высокая позиция в таблица обозначает более высокую приоритетность.
Для тех операторов, которые используются также в языке программирования «C»,
порядок приоритетности, применяемый в настоящей спецификации, является таким же, какой используется в языке программирования «C».
Таблица: Приоритетность операций от наивысшей (в верхней части таблицы) до наинизшей (в нижней части таблицы)
Текстовое описание логических операций
В тексте формулирование логических операций приведено, как если бы оно было описано математически в следующей форме:
if( условие 0 )
операция или утверждение 0
else if( условие 1 )
операция или утверждение 1
...
else /* информативная ремарка об оставшемся условии */
операция или утверждение n
может быть описано следующим образом:
... как описано далее / ... применяется следующее:
– Если имеет место условие 0, выполняется операция или утверждение 0
– Иначе, если имеет место условие 1, выполняется операция или утверждение 1
– ...
– Иначе (информативная ремарка об оставшемся условии), выполняется операция или утверждение n
Каждое утверждение в тексте типа «если… иначе, если… иначе, …» вводится словами «…как описано далее» или «…применяется следующее», за которыми сразу же следует «Если…». Последним условием в списке «Если…Иначе, если…Иначе» всегда является «Иначе…». Перемежающиеся утверждения «Если … Иначе, если … Иначе…» могут быть идентифицированы путем согласования «… как описано далее» или «…применяется следующее» с конечным «Иначе…» ".
В тексте формулирование логических операций приведено, как если бы оно было описано математически в следующей форме:
if( условие 0a && условие 0b )
операция или утверждение 0
else if( условие 1a | | условие 1b )
операция или утверждение 1
...
else
операция или утверждение n
может быть описано следующим образом:
... как описано далее / ... применяется следующее:
– Если все последующие условия являются истинными (true), операция или утверждение 0:
– условие 0a
– условие 0b
– Иначе, если одно или более из следующих условий являются истинными (true), операция или утверждение 1:
– условие 1a
– условие 1b
– ...
– Иначе, операция или утверждение n
В тексте формулирование логических операций приведено, как если бы оно было описано математически в следующей форме:
if( условие 0 )
операция или утверждение 0
if( условие 1 )
операция или утверждение 1
может быть описано следующим образом:
Когда условие 0, операция или утверждение 0
Когда условие 1, операция или утверждение 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 или беспроводные технологии, такие как инфракрасное излучение, радиоволны и волны СВЧ-диапазона, входят в определение носителя. Однако следует понимать, что в понятие читаемого компьютером носителя для хранения данных и носителя для хранения данных не входят соединения, волны несущих, сигналы или другие переходные (временные) средства, а напротив, сюда относятся энергонезависимые постоянные материальные носители для хранения информации. Под термином «диск» (disk или disc), как он используется здесь, понимают компакт-диск (compact disc (CD)), лазерный диск, оптический диск, цифровой универсальный диск (digital versatile disc (DVD)), гибкий (флоппи) диск или диск Блю-рей (Blu-ray), при этом disk обычно воспроизводит данные магнитным способом, а disc воспроизводит данные оптически с применением лазера. Комбинации перечисленных устройств также следует включать в объем понятия «читаемый компьютером носитель».
Команды могут быть выполнены одним или более процессорами, такими как один или более цифровых процессоров сигнала (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Соответственно, термин «процессор», как он используется здесь, может обозначать какую-либо из приведенных выше структур или какую-либо другую структуру, подходящую для реализации описываемых здесь технологий. Кроме того, в некоторых аспектах, описываемые здесь функциональные возможности могут быть реализованы посредством специализированных аппаратных и/или программных модулей, конфигурированных для кодирования и декодирования, или встроенных в комбинированный кодек. Кроме того, эти технологии могут быть полностью реализованы в одной или более схем или логических элементов.
Технологии, предлагаемые настоящим изобретением могут быть реализованы в широком спектре устройств или оборудования, включая радиотелефон, интегральную схему (integrated circuit (IC)) или комплект таких схем IC (например, чипсет). Различные компоненты, модули или узлы рассматриваются в настоящем описании с целью подчеркнуть функциональные аспекты устройств, конфигурированных для осуществления различных способов, но не обязательно требуют реализации в виде разных аппаратных модулей. Напротив, как описано выше, различные модули могут быть объединены в аппаратуре кодека или реализованы в виде набора взаимодействующих аппаратных модулей, включая один или более процессоров, как описано выше, в сочетании с подходящим загружаемым и/или встроенным программным обеспечением.
Изобретение относится к области обработки изображения. Технический результат – упрощение прогнозирования с использованием планарного режима и увеличение эффективности кодирования и декодирования за счет обработки вертикальных и горизонтальных составляющих. Для этого предложен способ осуществления кодирования. Этот способ содержит следующие этапы: получение высоты и ширины текущего блока без применения операции усечения; вычисление величины вертикальной составляющей прогнозируемого внутрикадровым способом отсчета на основе высоты и ширины блока прогнозирования; вычисление величины горизонтальной составляющей прогнозируемого внутрикадровым способом отсчета на основе высоты и ширины указанного блока; и генерирование прогнозируемого внутрикадровым способом отсчета на основе величины вертикальной составляющей и величины горизонтальной составляющей. 14 н. и 16 з.п. ф-лы, 12 ил., 2 табл.
1. Способ внутрикадрового прогнозирования в планарном режиме при высоте блока, равной 1, содержащий этапы, на которых:
вычисляют величину вертикальной составляющей predV[x][y] прогнозируемого внутрикадровым способом отсчета, входящего в указанный блок, причем величина указанной вертикальной составляющей predV[x][y] равна predV[x][y] = ((y + 1) * p[−1][nTbH]) << Log2 (nTbW);
вычисляют величину горизонтальной составляющей predH[x][y] прогнозируемого внутрикадровым способом отсчета, причем величина указанной горизонтальной составляющей predH[x][y] равна predH[x][y] = ((nTbW − 1 − x) * p[−1][y] + (x + 1) * p[nTbW][−1] ); и
генерируют прогнозируемый внутрикадровым способом отсчет на основе величины вертикальной составляющей и величины горизонтальной составляющей,
где nTbH представляет высоту блока, nTbW представляет ширину блока, p[x][y] представляет соседние отсчеты при x = −1, y = −1..nTbH и x = 0..nTbW, y = −1, причем указанный блок представляет собой блок преобразования или блок прогнозирования.
2. Способ по п. 1, в котором прогнозируемый внутрикадровым способом отсчет вычисляют по формуле:
predSamples[x][y] = (predV[x][y] + predH[x][y] + nTbW) >> (Log2 (nTbW) +1).
3. Способ по п. 1 или 2, в котором строку опорных отсчетов снизу от блока заполняют с использованием отсчета p[-1][nTbH].
4. Способ по любому из пп. 1-3, в котором ширину блока прогнозирования получают без применения операции усечения nW = Max(nTbW, 2).
5. Способ по любому из пп. 1-4, в котором высоту блока прогнозирования получают без применения операции усечения nH = Max(nTbH, 2).
6. Способ внутрикадрового прогнозирования в планарном режиме при ширине блока, равной 1, содержащий этапы, на которых:
вычисляют величину вертикальной составляющей predV[x][y] прогнозируемого внутрикадровым способом отсчета, входящего в указанный блок, причем величина указанной вертикальной составляющей predV[x][y] равна predV[x][y] = ((nTbH − 1 − y) * p[x][−1] + (y + 1) * p[−1][nTbH]);
вычисляют величину горизонтальной составляющей predH[x][y] прогнозируемого внутрикадровым способом отсчета, причем величина указанной горизонтальной составляющей predH[x][y] равна predH[x][y] = ((x + 1) * p[nTbW][−1]) << Log2 (nTbH); и
генерируют прогнозируемый внутрикадровым способом отсчет на основе величины вертикальной составляющей и величины горизонтальной составляющей,
где nTbH представляет высоту блока, nTbW представляет ширину блока, p[x][y] представляет соседние отсчеты при x = −1, y = −1..nTbH и x = 0..nTbW, y = −1, причем указанный блок представляет собой блок преобразования или блок прогнозирования.
7. Способ по п. 6, в котором прогнозируемый внутрикадровым способом отсчет вычисляют по формуле:
predSamples[x][y] = (predV[x][y] + predH[x][y] + nTbW * nTbH) >> ( Log2 (nTbW)+ Log2 (nTbH) + 1).
8. Способ по п. 6 или 7, в котором в котором строку опорных отсчетов справа от блока заполняют с использованием отсчета p[nTbW][−1].
9. Способ по любому из пп. 6-8, в котором ширину блока прогнозирования получают без применения операции усечения nW = Max(nTbW, 2).
10. Способ по любому из пп. 6-9, в котором высоту блока прогнозирования получают без применения операции усечения nH = Max(nTbH, 2).
11. Кодирующее устройство (20), содержащее процессорную схему для осуществления способа по любому из пп. 1-5.
12. Кодирующее устройство (20), содержащее процессорную схему для осуществления способа по любому из пп. 6-10.
13. Декодирующее устройство (30), содержащее процессорную схему для осуществления способа по любому из пп. 1-5.
14. Декодирующее устройство (30), содержащее процессорную схему для осуществления способа по любому из пп. 6-10.
15. Машиночитаемый носитель информации, хранящий инструкции, вызывающие, при выполнении одним или более процессорами, осуществление способа по любому из пп. 1-5.
16. Машиночитаемый носитель информации, хранящий инструкции, вызывающие, при выполнении одним или более процессорами, осуществление способа по любому из пп. 6-10.
17. Декодирующее устройство, содержащее:
один или более процессоров; и
энергонезависимый машиночитаемый носитель информации, соединенный с процессорами и хранящий программы для выполнения процессорами, вызывающие, при исполнении процессорами, выполнение, декодирующим устройством, способа по любому из пп. 1-5.
18. Декодирующее устройство, содержащее:
один или более процессоров; и
энергонезависимый машиночитаемый носитель информации, соединенный с процессорами и хранящий программы для выполнения процессорами, вызывающие, при исполнении процессорами, выполнение, декодирующим устройством, способа по любому из пп. 6-10.
19. Кодирующее устройство, содержащее:
один или более процессоров; и
энергонезависимый машиночитаемый носитель информации, соединенный с процессорами и хранящий программы для выполнения процессорами, вызывающие, при исполнении процессорами, выполнение, кодирующим устройством, способа по любому из пп. 1-5.
20. Кодирующее устройство, содержащее:
один или более процессоров; и
энергонезависимый машиночитаемый носитель информации, соединенный с процессорами и хранящий программы для выполнения процессорами, вызывающие, при исполнении процессорами, выполнение, кодирующим устройством, способа по любому из пп. 6-10.
21. Устройство внутрикадрового прогнозирования в планарном режиме при высоте блока, равной 1, содержащее:
вычислительный модуль (902) для:
вычисления величины вертикальной составляющей predV[x][y] прогнозируемого внутрикадровым способом отсчета, входящего в указанный блок, причем величина указанной вертикальной составляющей predV[x][y] равна predV[x][y] = ((y + 1) * p[−1][nTbH] ) << Log2 (nTbW);
вычисления величины горизонтальной составляющей predH[x][y] прогнозируемого внутрикадровым способом отсчета, причем величина указанной горизонтальной составляющей predH[x][y] равна predH[x][y] = ((nTbW − 1 − x) * p[−1][y] + (x + 1) * p[nTbW][−1] ); и
модуль прогнозирования (903) для генерирования прогнозируемого внутрикадровым способом отсчета на основе величины вертикальной составляющей и величины горизонтальной составляющей,
где nTbH представляет высоту блока, nTbW представляет ширину блока, p[x][y] представляет соседние отсчеты при x = −1, y = −1..nTbH и x = 0..nTbW, y = −1, причем указанный блок представляет собой блок преобразования или блок прогнозирования.
22. Устройство по п. 21, в котором модуль прогнозирования (903) выполнен с возможностью генерирования прогнозируемого внутрикадровым способом отсчета predSamples[x][y] по формуле:
predSamples[x][y] = (predV[x][y] + predH[x][y] + nTbW) >> (Log2 (nTbW) +1).
23. Устройство по п. 21 или 22, дополнительно содержащее модуль заполнения (904), причем модуль заполнения (904) выполнен с возможностью заполнения строки опорных отсчетов снизу от рассматриваемого блока с использованием отсчета p[-1][nTbH].
24. Устройство по любому из пп. 21-23, в котором ширину блока прогнозирования получают без применения операции усечения nW = Max(nTbW, 2).
25. Устройство по любому из пп. 21-24, в котором высоту блока прогнозирования получают без применения операции усечения nH = Max(nTbH, 2).
26. Устройство по любому из пп. 21-25, характеризующееся тем, что представляет собой декодирующее устройство или кодирующее устройство.
27. Устройство внутрикадрового прогнозирования в планарном режиме при ширине блока, равной 1, содержащее:
вычислительный модуль (902) для:
вычисления величины вертикальной составляющей predV[x][y] прогнозируемого внутрикадровым способом отсчета, входящего в указанный блок, причем величина указанной вертикальной составляющей predV[x][y] равна predV[x][y] = ((nTbH − 1 − y) * p[x][−1] + (y + 1) * p[−1][nTbH]); и
вычисления величины горизонтальной составляющей predH[x][y] прогнозируемого внутрикадровым способом отсчета, причем величина указанной горизонтальной составляющей predH[x][y] равна predH[x][y] = ((x + 1) * p[nTbW][−1]) << Log2 (nTbH); и
модуль прогнозирования (903) для генерирования прогнозируемого внутрикадровым способом отсчета на основе величины вертикальной составляющей и величины горизонтальной составляющей,
где nTbH представляет высоту блока, nTbW представляет ширину блока, p[x][y] представляет соседние отсчеты при x = −1, y = −1..nTbH и x = 0..nTbW, y = −1, причем указанный блок представляет собой блок преобразования или блок прогнозирования.
28. Устройство по п. 27, в котором модуль прогнозирования (903) выполнен с возможностью генерирования прогнозируемого внутрикадровым способом отсчета predSamples[x][y] по формуле:
predSamples[x][y] = (predV[x][y] + predH[x][y] + nTbH) >> (Log2 (nTbH) + 1).
29. Устройство по п. 27 или 28, дополнительно содержащее модуль заполнения (904), причем модуль заполнения (904) выполнен с возможностью заполнения строки опорных отсчетов справа от рассматриваемого блока с использованием отсчета p[nTbW][−1].
30. Устройство по любому из пп. 27-29, характеризующееся тем, что представляет собой декодирующее устройство или кодирующее устройство.
BROSS B et al, "Versatile Video Coding (Draft 6)", 15 | |||
JVET meeting; 20190703 - 20190712; Gothenburg; (the Joint Video Exploration Team of ISO/IEC JTC1/SC29/WG11 and ITU-T SG.16 ), JVET-O2001, опубл | |||
Видоизменение прибора с двумя приемами для рассматривания проекционные увеличенных и удаленных от зрителя стереограмм | 1919 |
|
SU28A1 |
US 10284844 B1, |
Авторы
Даты
2024-06-14—Публикация
2020-09-23—Подача