RU2788631C2 - Methods and systems for exponential partitioning - Google Patents
Methods and systems for exponential partitioning Download PDFInfo
- Publication number
- RU2788631C2 RU2788631C2 RU2021112401A RU2021112401A RU2788631C2 RU 2788631 C2 RU2788631 C2 RU 2788631C2 RU 2021112401 A RU2021112401 A RU 2021112401A RU 2021112401 A RU2021112401 A RU 2021112401A RU 2788631 C2 RU2788631 C2 RU 2788631C2
- Authority
- RU
- Russia
- Prior art keywords
- block
- rectangular
- exponential
- split
- region
- Prior art date
Links
- 238000000034 method Methods 0.000 title abstract description 22
- 238000000638 solvent extraction Methods 0.000 title abstract description 21
- 230000011664 signaling Effects 0.000 claims description 15
- 238000005192 partition Methods 0.000 claims description 11
- 238000009499 grossing Methods 0.000 claims 2
- 230000006835 compression Effects 0.000 abstract description 23
- 238000007906 compression Methods 0.000 abstract description 23
- 238000005516 engineering process Methods 0.000 abstract description 4
- 230000006837 decompression Effects 0.000 abstract description 2
- 239000000126 substance Substances 0.000 abstract 1
- 230000033001 locomotion Effects 0.000 description 51
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 241000023320 Luma <angiosperm> Species 0.000 description 10
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 10
- 238000013139 quantization Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 238000003066 decision tree Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
Images
Abstract
Description
Область техники, к которой относится изобретениеThe technical field to which the invention belongs
Настоящее изобретение относится, в общем, к области технологий сжатия и распаковки цифрового видео, включая декодирование и кодирование. В частности, настоящее изобретение направлено на способ и системы для экспоненциального разбиения единиц кодирования.The present invention relates generally to the field of digital video compression and decompression technologies, including decoding and encoding. In particular, the present invention is directed to a method and systems for exponentially splitting coding units.
Уровень техникиState of the art
Видеокодек может включать в себя электронную схему или программное обеспечение, которое сжимает или распаковывает цифровое видео. Он может конвертировать несжатое видео в сжатый формат и наоборот. В контексте сжатия видео устройство, которое сжимает видео (и/или выполняет некоторые его функции), как правило, может называться кодером, и устройство, которое распаковывает видео (и/или выполняет некоторые его функции), может называться декодером.A video codec may include electronic circuitry or software that compresses or decompresses digital video. It can convert uncompressed video to compressed format and vice versa. In the context of video compression, a device that compresses the video (and/or performs some of its functions) can generally be called an encoder, and a device that decompresses the video (and/or performs some of its functions) can be called a decoder.
Формат сжатых данных может соответствовать стандартной спецификации сжатия видео. Сжатие может осуществляться с потерями, так как в сжатом видео отсутствует некоторая информация, присутствующая в исходном видео. Следствием этого может быть то, что распакованное видео может иметь более низкое качество, чем исходное несжатое видео, так как недостаточно информации для точного восстановления исходного видео.The compressed data format may follow a standard video compression specification. Compression can be lossy because the compressed video lacks some of the information that was present in the original video. The consequence of this may be that the decompressed video may be of lower quality than the original uncompressed video, as there is not enough information to accurately reconstruct the original video.
Могут существовать сложные взаимосвязи между качеством видео, объемом данных, используемых для представления видео (например, определяемых скоростью передачи данных), сложностью алгоритмов кодирования и декодирования, чувствительностью к потерям и ошибкам данных, простотой редактирования, произвольным доступом, сквозной задержкой (например, запаздыванием) и т.п.There can be complex relationships between video quality, amount of data used to represent the video (e.g. determined by bit rate), complexity of encoding and decoding algorithms, sensitivity to data loss and error, ease of editing, random access, end-to-end delay (e.g. latency) etc.
Раскрытие сущности изобретенияDisclosure of the essence of the invention
В одном аспекте изобретения декодер может включать в себя схему, которая может быть выполнена с возможностью приема битового потока. В варианте осуществления схема может быть дополнительно выполнена с возможностью определения того, включен ли режим экспоненциального разбиения, и для разбиения блока на первую область и вторую область в соответствии с кривой линией. В варианте осуществления схема также может быть выполнена с возможностью восстановления пиксельных данных блока с использованием кривой линии, где первая область и вторая область могут быть непрямоугольными.In one aspect of the invention, a decoder may include circuitry that may be configured to receive a bit stream. In an embodiment, the circuit may be further configured to determine if the exponential split mode is enabled and to split the block into a first region and a second region according to a curved line. In an embodiment, the circuit may also be configured to reconstruct the pixel data of the block using a curved line, where the first region and the second region may be non-rectangular.
Декодер может дополнительно включать в себя один или несколько из следующих признаков, взятых по отдельности или в сочетании. В варианте осуществления режим экспоненциального разбиения может сигнализироваться в битовом потоке. В варианте осуществления кривая линия, разбивающая блок на первую область и вторую область, может быть охарактеризована заданным шаблоном. В другом варианте осуществления кривая линия, разбивающая блок на первую область и вторую область, может быть охарактеризована заданным значением коэффициента. Кроме того, в варианте осуществления режим экспоненциального разбиения доступен для размеров блоков, больших или равных 8×8 выборкам яркости. В другом варианте осуществления восстановление пиксельных данных может включать в себя вычисление предиктора для первой области с использованием ассоциированного вектора движения, содержащегося в битовом потоке. В другом варианте осуществления декодер также может включать в себя процессор энтропийного декодера, который может быть выполнен с возможностью приема битового потока и декодирования битового потока в квантованные коэффициенты. Декодер также может включать в себя процессор обратного квантования и обратного преобразования, который может быть выполнен с возможностью обработки квантованных коэффициентов, включая выполнение обратного дискретного косинусного преобразования. Кроме того, декодер может включать в себя фильтр удаления блочности, буфер кадров; и процессор интрапрогнозирования. В варианте осуществления битовый поток может включать в себя параметр, указывающий то, включен ли режим экспоненциального разбиения для блока. В другом варианте осуществления блок может образовывать часть дерева квадрантов плюс бинарное дерево решений. Кроме того, блок может быть нелистовым узлом квадродерева плюс бинарное дерево решений. В варианте осуществления блок может быть единицей дерева кодирования или единицей кодирования. В другом варианте осуществления первая область может быть единицей кодирования или единицей прогнозирования. The decoder may further include one or more of the following features, taken alone or in combination. In an embodiment, the exponential split mode may be signaled in the bitstream. In an embodiment, the curved line dividing the block into a first region and a second region may be characterized by a predetermined pattern. In another embodiment, the curved line dividing the block into a first region and a second region may be characterized by a predetermined coefficient value. Furthermore, in an embodiment, the exponential split mode is available for block sizes greater than or equal to 8x8 luma samples. In another embodiment, recovering the pixel data may include calculating a predictor for the first region using an associated motion vector contained in the bitstream. In another embodiment, the decoder may also include an entropy decoder processor that may be configured to receive a bitstream and decode the bitstream into quantized coefficients. The decoder may also include an inverse quantization and inverse transform processor, which may be configured to process the quantized coefficients, including performing an inverse discrete cosine transform. In addition, the decoder may include a deblocking filter, a frame buffer; and an intra-prediction processor. In an embodiment, the bitstream may include a parameter indicating whether the exponential split mode is enabled for the block. In another embodiment, the block may form part of a quadtree plus a binary decision tree. In addition, a block can be a non-leaf quadtree node plus a binary decision tree. In an embodiment, a block may be a coding tree unit or a coding unit. In another embodiment, the first region may be a coding unit or a prediction unit.
В дополнительном аспекте изобретения способ может включать в себя прием, декодером, битового потока и определение, упомянутым декодером, того, включен ли режим экспоненциального разбиения. Способ также может включать в себя определение, декодером, кривой линии, разбивающей блок на первую область и вторую область, а также восстановление, декодером, пиксельных данных блока и использование кривой линии.In a further aspect of the invention, the method may include receiving, by a decoder, a bitstream and determining, by said decoder, whether exponential split mode is enabled. The method may also include determining, by the decoder, a curved line dividing the block into a first region and a second region, and recovering, by the decoder, the pixel data of the block, and using the curved line.
Способ может дополнительно включать в себя один или несколько из следующих признаков, взятых по отдельности или в сочетании. В варианте осуществления режим экспоненциального разбиения может сигнализироваться в битовом потоке. В другом варианте осуществления кривая линия, разбивающая блок на первую и вторую области, может быть охарактеризована заданным шаблоном. В варианте осуществления кривая линия, разбивающая блок на первую область и вторую область, может быть охарактеризована заданным значением коэффициента. В варианте осуществления режим экспоненциального разбиения может быть доступен для размеров блоков, больших или равных 8×8 выборкам яркости. В другом варианте осуществления восстановление пиксельных данных может включать в себя вычисление предиктора для первой области с использованием ассоциированного вектора движения, содержащегося в битовом потоке. В другом варианте осуществления декодер может включать в себя процессор энтропийного декодера, который может быть выполнен с возможностью приема битового потока и декодирования битового потока в квантованные коэффициенты. Декодер также может включать в себя процессор обратного квантования и обратного преобразования, который может быть выполнен с возможностью обработки квантованных коэффициентов, включая выполнение обратного дискретного косинусного преобразования. Кроме того, декодирование может включать в себя фильтр удаления блочности, буфер кадров и процессор интрапрогнозирования. В варианте осуществления битовый поток может включать в себя параметр, указывающий то, включен ли режим экспоненциального разбиения для блока. В другом варианте осуществления блок может образовывать часть дерева квадрантов плюс бинарное дерево решений. Кроме того, блок может быть нелистовым узлом квадродерева плюс бинарное дерево решений. В другом варианте осуществления блок может быть единицей дерева кодирования или единицей кодирования. В варианте осуществления первая область может быть единицей кодирования или единицей прогнозирования.The method may further include one or more of the following features, taken alone or in combination. In an embodiment, the exponential split mode may be signaled in the bitstream. In another embodiment, the curved line that divides the block into first and second regions may be characterized by a predetermined pattern. In an embodiment, the curved line dividing the block into a first region and a second region may be characterized by a predetermined coefficient value. In an embodiment, the exponential split mode may be available for block sizes greater than or equal to 8×8 luma samples. In another embodiment, recovering the pixel data may include calculating a predictor for the first region using an associated motion vector contained in the bitstream. In another embodiment, the decoder may include an entropy decoder processor that may be configured to receive a bitstream and decode the bitstream into quantized coefficients. The decoder may also include an inverse quantization and inverse transform processor, which may be configured to process the quantized coefficients, including performing an inverse discrete cosine transform. In addition, decoding may include a deblocking filter, a frame buffer, and an intra prediction processor. In an embodiment, the bitstream may include a parameter indicating whether the exponential split mode is enabled for the block. In another embodiment, the block may form part of a quadtree plus a binary decision tree. In addition, a block can be a non-leaf quadtree node plus a binary decision tree. In another embodiment, a block may be a coding tree unit or a coding unit. In an embodiment, the first region may be a coding unit or a prediction unit.
В данном документе описаны также энергонезависимые компьютерные программные продукты (то есть физически воплощенные компьютерные программные продукты), которые хранят инструкции, которые при их исполнении одним или несколькими процессорами данных одной или нескольких вычислительных систем предписывают по меньшей мере одному процессору данных выполнять операции. Аналогичным образом, описаны также компьютерные системы, которые могут включать в себя один или несколько процессоров данных и память, подключенную к одному или нескольким процессорам данных. Память может временно или постоянно хранить инструкции, которые предписывают по меньшей мере одному процессору выполнять одну или несколько операций, описанных в данном документе. Кроме того, способы могут быть реализованы одним или несколькими процессорами данных либо в одной вычислительной системе, либо распределены между двумя или более вычислительными системами. Такие вычислительные системы могут быть соединены и могут обмениваться данными и/или командами, или другими инструкциями и т.п. через одно или несколько соединений, включая соединение по сети (например, Интернет, беспроводную глобальную вычислительную сеть, локальную вычислительную сеть, глобальную сеть, проводную сеть и т.п.), через прямое соединение между одной или несколькими вычислительными системами и т.д.This document also describes non-volatile computer program products (i.e., physically embodied computer program products) that store instructions that, when executed by one or more data processors of one or more computing systems, cause at least one data processor to perform operations. Similarly, computer systems are also described, which may include one or more data processors and memory coupled to one or more data processors. The memory may temporarily or permanently store instructions that cause at least one processor to perform one or more of the operations described herein. In addition, the methods may be implemented by one or more data processors, either on a single computer system or distributed across two or more computer systems. Such computing systems may be connected and may exchange data and/or commands or other instructions and the like. via one or more connections, including a network connection (eg, the Internet, a wireless wide area network, a local area network, a wide area network, a wired network, etc.), a direct connection between one or more computing systems, etc.
Подробности одного или нескольких вариантов предмета изобретения, описанного в данном документе, изложены ниже в подробном описании изобретения со ссылкой на сопроводительные чертежи. Другие признаки и преимущества предмета изобретения, описанного в данном документе, будут очевидны из описания и чертежей, а также из формулы изобретения.Details of one or more embodiments of the subject matter described herein are set forth below in the detailed description of the invention with reference to the accompanying drawings. Other features and advantages of the subject matter described herein will be apparent from the description and drawings, as well as from the claims.
Краткое описание чертежейBrief description of the drawings
Фиг.1 – схема, иллюстрирующая пример блочного разбиения;1 is a diagram illustrating an example of a block partition;
фиг.2 – схема, иллюстрирующая пример геометрического разбиения;figure 2 is a diagram illustrating an example of a geometric partition;
фиг.3A – схема, иллюстрирующая пример экспоненциального разбиения согласно некоторым аспектам текущего предмета изобретения, которое позволяет повысить эффективность сжатия;3A is a diagram illustrating an example of exponential splitting, according to some aspects of the current subject matter, which improves compression efficiency;
фиг.3B – ряд графиков, иллюстрирующих примерные шаблонные экспоненциальные разбиения;3B is a series of graphs illustrating exemplary template exponential splits;
фиг.3C – примерные кривые, связанные с 4-мя заданными коэффициентами, которые могут определять примерную экспоненциальную функцию;3C are exemplary curves associated with 4 predetermined coefficients that may define an exemplary exponential function;
фиг.3D – другой примерный блок, показывающий разные начальные индексы P1 и конечные индексы P2, которые разбивают прямоугольный блок;3D is another exemplary block showing different start indices P1 and end indices P2 that break up a rectangular block;
фиг.4 – блок-схема системы, иллюстрирующая пример видеокодера, способного выполнять экспоненциальное разбиение;4 is a system block diagram illustrating an example of a video encoder capable of exponential splitting;
фиг.5A – блок-схема процесса, иллюстрирующая примерный процесс кодирования видео с экспоненциальным разбиением согласно некоторым аспектам текущего предмета изобретения, которое позволяет снизить сложность кодирования при одновременном повышении эффективности сжатия;FIG. 5A is a flowchart illustrating an exemplary exponentially split video encoding process according to some aspects of the current subject matter, which can reduce encoding complexity while improving compression efficiency;
фиг.5B – блок-схема процесса, иллюстрирующая примерный процесс кодирования видео с экспоненциальным разбиением с использованием параметров разбиения согласно некоторым аспектам текущего предмета изобретения;FIG. 5B is a flowchart illustrating an exemplary exponentially split video encoding process using split parameters in accordance with some aspects of the current subject matter;
фиг.5C – блок-схема процесса, иллюстрирующая примерный процесс кодирования видео с экспоненциальным разбиением с использованием адаптивного дискретного косинусного преобразования формы согласно некоторым аспектам текущего предмета изобретения;5C is a flowchart illustrating an exemplary exponentially split video coding process using an adaptive discrete cosine shape transform in accordance with some aspects of the current subject matter;
фиг.6 – блок-схема системы, иллюстрирующая примерный декодер, способный декодировать битовый поток с использованием экспоненциального разбиения;6 is a system block diagram illustrating an exemplary decoder capable of decoding a bitstream using exponential splitting;
фиг.7 – блок-схема процесса, иллюстрирующая примерный процесс декодирования битового потока с использованием экспоненциального разбиения;7 is a flowchart illustrating an exemplary bitstream decoding process using exponential splitting;
фиг.8 – пример разбиения кадра на основе квадродерева плюс бинарное дерево;Fig.8 - an example of splitting a frame based on a quadtree plus a binary tree;
фиг.9 – пример экспоненциального разбиения на уровне CU квадродерева плюс бинарное дерево, показанного на фиг.8;Fig. 9 is an example of exponential splitting at the CU level of the quadtree plus binary tree shown in Fig. 8;
фиг.10 – изображение, содержащее яблоко, которое не может быть эффективно разбито прямолинейными сегментами;Fig. 10 is an image containing an apple that cannot be broken up efficiently by straight line segments;
фиг.11 – схема, иллюстрирующая другой примерный блок, разбитый согласно экспоненциальному разбиению.11 is a diagram illustrating another exemplary block split according to exponential splitting.
фиг.12 – схема, иллюстрирующая наследование параметров экспоненциального разбиения текущим блоком от соседнего в пространстве блока;Fig.12 is a diagram illustrating the inheritance of exponential splitting parameters by the current block from a neighboring block in space;
фиг.13 – примеры соседних в пространстве блоков для текущего блока; иFig.13 - examples of neighboring blocks in space for the current block; and
фиг.14 – примерный текущий блок со соседним во времени блоком, от которого текущий блок наследует параметры экспоненциального разбиения.14 shows an exemplary current block with a time-adjacent block from which the current block inherits exponential splitting parameters.
Одинаковые ссылочные позиции на различных чертежах обозначают одинаковые элементы.Like reference numerals throughout the various drawings refer to like elements.
Осуществление изобретенияImplementation of the invention
Некоторые реализации текущего предмета изобретения относятся к экспоненциальному разбиению. При экспоненциальном разбиении прямоугольный блок может быть разбит на непрямоугольные области с помощью кривой по сравнению с прямолинейным отрезком. Использование кривой для разбиения блоков позволяет разбиению более точно следовать за границами объекта, что приводит к более низкой ошибке прогнозирования компенсации движения, меньшим остаткам и, таким образом, к повышению эффективности сжатия. В некоторых реализациях кривая может быть охарактеризована экспоненциальной функцией. Кривая (например, экспоненциальная функция) может быть определена с использованием заданных коэффициентов и/или шаблонов, которые можно сигнализировать в битовом потоке для использования декодером. В некоторых реализациях экспоненциальное разбиение может быть доступно для выборок яркости размером, равным 8×8 или более. При разбиении прямоугольных блоков с помощью кривой можно достичь большей эффективности сжатия для определенных объектов, чем в технологиях, ограниченных разбиением с помощью прямолиниейного отрезка, например, с помощью геометрического разбиения.Some implementations of the current subject matter relate to exponential splitting. With exponential splitting, a rectangular block can be split into non-rectangular regions using a curve versus a straight line segment. Using a curve to break blocks allows the break to more closely follow object boundaries, resulting in lower motion compensation prediction error, smaller residuals, and thus better compression efficiency. In some implementations, the curve may be characterized by an exponential function. A curve (eg, an exponential function) may be defined using predetermined coefficients and/or patterns that may be signaled in the bitstream for use by a decoder. In some implementations, exponential splitting may be available for luma samples of size 8x8 or larger. When splitting rectangular blocks using a curve, you can achieve greater compression efficiency for certain objects than technologies that are limited to splitting using a straight line segment, such as using geometric splitting.
Кроме того, некоторые реализации текущего предмета изобретения относятся к прогнозированию параметров экспоненциального разбиения с использованием пространственных и/или временных опорных блоков. В некоторых реализациях для данного текущего блока переменная слияния с экспоненциальным разбиением может сигнализироваться, указывая то, что данный текущий блок может наследовать все или некоторые из этих параметров экспоненциального разбиения от другого блока. Этот другой блок может быть смежным в пространстве или во времени. Позволяя блокам наследовать параметры экспоненциального разбиения от других блоков, объем сигнализации в битовом потоке может быть уменьшен, что позволяет обеспечить большую эффективность сжатия.In addition, some implementations of the current subject matter relate to predicting exponential splitting parameters using spatial and/or temporal reference blocks. In some implementations, for a given current block, an exponential split merge variable may be signaled to indicate that the current block may inherit all or some of these exponential split parameters from another block. This other block may be contiguous in space or time. By allowing blocks to inherit exponential splitting parameters from other blocks, the amount of signaling in the bitstream can be reduced, allowing greater compression efficiency.
Кроме того, некоторые реализации текущего предмета изобретения могут включать в себя выполнение адаптивного дискретного косинусного преобразования формы (SADCT) для областей (например, блоков), которые были разбиты на непрямоугольные области с помощью кривой по сравнению с прямолинейным отрезком. Если к блоку применяется экспоненциальное разбиение, существует вероятность того, что результирующие области (например, разбиения) приведут к тому, что одна область будет иметь низкую ошибку прогнозирования, а другая область будет иметь высокую ошибку прогнозирования. Соответственно, текущий предмет изобретения может включать в себя выполнение SADCT для области, имеющей низкую ошибку прогнозирования. За счет выполнения SADCT для области, имеющей низкую ошибку прогнозирования, можно повысить эффективность сжатия. И в некоторых реализациях во время декодирования может выполняться обратное SADCT для одной области, разбитой с использованием экспоненциального разбиения. В некоторых реализациях обратное SADCT может сигнализироваться в битовом потоке как выбор дополнительного преобразования к полному блочному дискретному косинусному преобразованию (DCT) для отрезка с низкой ошибкой прогнозирования. В некоторых реализациях обратное SADCT может выполняться на основе параметров экспоненциального разбиения и без явной сигнализации в битовом потоке, которая предусматривает выполнение обратного SADCT.In addition, some implementations of the current subject matter may include performing an adaptive discrete cosine shape transform (SADCT) on regions (eg, blocks) that have been decomposed into non-rectangular regions with a curve versus a straight line segment. If an exponential split is applied to a block, there is a possibility that the resulting regions (eg, splits) will result in one region having a low prediction error and another region having a high prediction error. Accordingly, the current subject matter may include performing a SADCT on a region having a low prediction error. By performing SADCT on a region having a low prediction error, compression efficiency can be improved. And, in some implementations, during decoding, an inverse SADCT may be performed on a single region split using exponential splitting. In some implementations, the inverse SADCT may be signaled in the bitstream as the choice of an additional transform to the full block discrete cosine transform (DCT) for a segment with low prediction error. In some implementations, the reverse SADCT may be performed based on exponential split parameters and without explicit signaling in the bitstream that requires the reverse SADCT to be performed.
Компенсация движения может включать в себя подход к прогнозированию видеокадра или его части, принимая во внимание предыдущие и/или будущие кадры, с учетом движения камеры и/или объектов в видео. Ее можно использовать при кодировании и декодировании видеоданных для сжатия видео, например, при кодировании и декодировании с использованием стандарта экспертной группы по вопросам движущегося изображения (MPEG)-2 (также называемого усовершенствованным кодированием видео (AVC)). Компенсация движения позволяет описать картину в терминах преобразования опорного изображения в текущее изображение. Опорное изображение может быть предыдущим или будущим изображением во времени по сравнению с текущим изображением. В случае, когда изображения можно точно синтезировать из ранее переданных и/или сохраненных изображений, можно повысить эффективность сжатия.Motion compensation may include an approach to predicting a video frame, or a portion thereof, given previous and/or future frames, given the movement of the camera and/or objects in the video. It can be used in encoding and decoding video data for video compression, such as encoding and decoding using the Moving Picture Experts Group (MPEG)-2 (also referred to as advanced video coding (AVC)) standard. Motion compensation allows you to describe the picture in terms of the transformation of the reference image into the current image. The reference picture may be a previous or future picture in time compared to the current picture. In the case where images can be accurately synthesized from previously transmitted and/or stored images, the compression efficiency can be improved.
Блочное разбиение может относиться к способу кодирования видео для поиска областей аналогичного движения. Некоторая форма блочного разбиения может быть найдена в стандартах видеокодеков, включая MPEG-2, H.264 (также называемый AVC или MPEG-4, часть 10) и H.265 (также называемый высокоэффективным кодированием видео (HEVC)). В примерных подходах блочного разбиения неперекрывающиеся блоки видеокадра могут быть разбиты на прямоугольные подблоки для поиска блочных разбиений, которые содержат пиксели с аналогичным движением. Этот подход может хорошо работать тогда, когда все пиксели блочного разбиения имеют аналогичное движение. Движение пикселей в блоке можно определить относительно ранее закодированных кадров.Block division may refer to a video encoding method to find areas of similar motion. Some form of block partitioning can be found in video codec standards, including MPEG-2, H.264 (also called AVC or MPEG-4 Part 10), and H.265 (also called High Efficiency Video Coding (HEVC)). In exemplary block partitioning approaches, non-overlapping blocks of a video frame may be partitioned into rectangular sub-blocks to search for block partitions that contain pixels with similar motion. This approach can work well when all the pixels in the block partition have the same motion. The movement of pixels in a block can be determined relative to previously encoded frames.
На фиг.1 показана схема, иллюстрирующая пример блочного разбиения пикселей согласно варианту осуществления. Исходное прямоугольное изображение или блок 100, который может быть непосредственно подблоком (например, узлом в дереве кодирования), может быть разбит на прямоугольные подблоки. Например, на этапе 110 блок 100 разбивается на два прямоугольных подблока 110a и 110b. Затем подблоки 110a и 110b могут обрабатываться по отдельности. В качестве другого примера, на этапе 120 блок 100 разбивается на четыре прямоугольных подблока 120a, 120b, 120c и 120d. Сами подблоки могут дополнительно разбиваться до тех пор, пока не будет определено, что пиксели внутри подблоков совместно используют одно и то же движение, не будет достигнут минимальный размер блока или не будут выполнены другие критерии. Когда пиксели в подблоке имеют аналогичное движение, вектор движения может описывать движение всех пикселей в этой области.Fig. 1 is a diagram illustrating an example of pixel blocking according to an embodiment. The original rectangular image or block 100, which may be directly a sub-block (eg, a node in an encoding tree), may be split into rectangular sub-blocks. For example, at
Некоторые подходы к кодированию видео могут включать в себя геометрическое разбиение, при котором прямоугольный блок (например, показанный на фиг.1) дополнительно разбивается прямолинейным отрезком на две области, которые могут быть непрямоугольными. Например, на фиг.2 показана схема, иллюстрирующая пример геометрического разбиения. Примерный прямоугольный блок 200 (который может иметь ширину M пикселей и высоту N пикселей и обозначаться как M×N пикселей) может быть разбит вдоль прямолинейного отрезка P1P2 205 на две области (область 0 и область 1). Когда пиксели в области 0 имеют одинаковое движение, вектор движения может описывать движение всех пикселей в этой области. Вектор движения может использоваться для сжатия области 0. Аналогичным образом, когда пиксели в области 1 имеют аналогичное движение, ассоциированный вектор движения может описывать движение пикселей в области 1. Такое геометрическое разбиение может сигнализироваться в приемник (например, декодер) путем кодирования позиций P1 и P2 (или представлений позиций P1 и P2) в битовом потоке видео.Some video coding approaches may include geometric partitioning, in which a rectangular block (eg, shown in FIG. 1) is further partitioned by a straight line segment into two regions, which may not be rectangular. For example, FIG. 2 is a diagram illustrating an example of a geometric partition. The exemplary rectangular block 200 (which may be M pixels wide and N pixels high and referred to as M×N pixels) may be split along the straight
При кодировании видеоданных с использованием геометрического разбиения может быть определен прямолинейный отрезок 205 (или, более конкретно, точки P1 и P2). Но прямолинейный отрезок может не иметь возможности разбить блок таким образом, чтобы отражать границы объекта. В результате разбиение с использованием прямолинейных отрезков не позволяет обеспечить эффективное разбиение блока (например, таким образом, чтобы любой результирующий остаток был маленьким). Это может иметь значение "истина" в случаях, когда блок может содержать пиксели (например, выборки яркости), представляющие объект или границу, имеющую кривую (например, непрямую) границу. Например, обратимся теперь к фиг.10, на которой представлено изображение, содержащее яблоко, которое не может быть эффективно разбито с помощью прямолинейных отрезков. Яблоко включает в себя несколько прямоугольных блоков, указывающих участки изображения, при этом, если они разбиты с использованием прямолинейного отрезка в соответствии с геометрическим разбиением, разбиение не может точно следовать за границей объекта (например, яблока).When encoding video data using geometric partitioning, a straight line segment 205 (or, more specifically, points P1 and P2) can be defined. But a straight line segment may not be able to break the block in such a way as to reflect the boundaries of the object. As a result, splitting using straight line segments does not allow efficient block splitting (eg, such that any resulting remainder is small). This may be true in cases where the block may contain pixels (eg, luminance samples) representing an object or border having a curved (eg, non-straight) border. For example, let us now turn to Fig. 10, which shows an image containing an apple that cannot be effectively broken using straight line segments. The apple includes several rectangular boxes indicating areas of the image, however, if they are split using a straight line segment in accordance with the geometric split, the split cannot exactly follow the boundary of the object (for example, an apple).
Некоторые реализации текущего предмета изобретения включают в себя разбиение прямоугольного блока на непрямоугольные области с помощью кривой по сравнению с прямолинейным отрезком. Использование кривой для разбиения блоков позволяет разбиениям более точно следовать за границами объекта, что приводит к более низкой ошибке прогнозирования, меньшим остаткам и, таким образом, к повышению эффективности сжатия. В некоторых реализациях кривая может быть охарактеризована экспоненциальной функцией. Кривая (например, экспоненциальная функция) может быть представлена с использованием заданных коэффициентов и/или индексов, которые могут сигнализироваться в битовом потоке для использования декодером. В некоторых реализациях экспоненциальное разбиение может быть доступно для блоков, больших или равных 8×8 выборкам яркости. За счет разбиения прямоугольных блоков кривой линией в текущем предмете изобретения можно достичь большей эффективности сжатия для определенных объектов, чем в технологиях, ограниченных разбиением прямолинейными отрезками, например, геометрическим разбиением.Some implementations of the current subject matter include breaking up a rectangular block into non-rectangular regions with a curve versus a straight line segment. Using a curve for block splitting allows the splits to more closely follow object boundaries, resulting in lower prediction error, smaller residuals, and thus better compression efficiency. In some implementations, the curve may be characterized by an exponential function. The curve (eg, exponential function) may be represented using predetermined coefficients and/or indices, which may be signaled in the bitstream for use by the decoder. In some implementations, exponential splitting may be available for blocks greater than or equal to 8×8 luma samples. By splitting rectangular blocks with a curved line in the current subject matter, greater compression efficiency can be achieved for certain objects than technologies limited to straight line segmenting, such as geometric splitting.
На фиг.3A показана схема, иллюстрирующая пример экспоненциального разбиения согласно некоторым аспектам текущего предмета изобретения, которое позволяет повысить эффективность сжатия. Прямоугольный блок 300 включает в себя пиксели (например, выборки яркости). Прямоугольный блок 300 может иметь, например, размер 8×8 пикселей (например, выборки яркости) или более.FIG. 3A is a diagram illustrating an example of exponential splitting, according to some aspects of the current subject matter, which can improve compression efficiency.
Как показано на фиг.3A, прямоугольный блок 300 может быть разбит на две области (например, область 0 и область 1, обозначенные 310 и 315, соответственно) кривой линией 305. Все выборки яркости в пределах области 310 можно рассматривать как имеющие одинаковое или аналогичное движение и могут быть представлены одним и тем же вектором движения. Аналогичным образом, можно считать, что все выборки яркости в области 315 имеют одинаковое или аналогичное движение и могут быть представлены одним и тем же вектором движения. В некоторых реализациях все выборки яркости слева или выше криволинейного отрезка 305, разделяющего прямоугольный блок 300, можно рассматривать как принадлежащие области 0 (310). В некоторых реализациях все выборки яркости справа или ниже криволинейного отрезка 305, разделяющего прямоугольный блок 300, можно рассматривать как принадлежащие области 1 (315). В некоторых реализациях все выборки яркости, через которые проходит криволинейный отрезок, разделяющий прямоугольный блок 300, принадлежат области 0 (310). В некоторых реализациях все выборки яркости, через которые проходит криволинейный отрезок, разделяющий прямоугольный блок 300, можно рассматривать как принадлежащие области 1 (315). Возможны и другие реализации.As shown in FIG. 3A,
В некоторых реализациях, выполняя экспоненциальное разбиение, можно уменьшить количество возможных разбиений, которые могут возникнуть (например, по сравнению с геометрическим разбиением), что позволяет снизить требования к вычислениям для оценки движения с тем, чтобы определить соответствующее разбиение (например, чтобы определить лучший линейный отрезок для разбиения блока). В некоторых реализациях, выполняя экспоненциальное разбиение, непрямоугольные области (например, 310 и 315) могут более точно следовать за границами объекта, тем самым уменьшая ошибку прогнозирования, остаточный размер и повышая эффективность сжатия по сравнению с кодированием видео с использованием геометрического разбиения.In some implementations, by performing an exponential split, it is possible to reduce the number of possible splits that may occur (for example, compared to a geometric split), which can reduce the computational requirements for motion estimation in order to determine the appropriate split (for example, to determine the best linear segment for splitting the block). In some implementations, by performing exponential splitting, non-rectangular regions (eg, 310 and 315) can more closely follow object boundaries, thereby reducing prediction error, residual size, and improving compression efficiency compared to video encoding using geometric splitting.
Экспоненциальное разбиение может быть представлено в битовом потоке. В некоторых реализациях может использоваться режим экспоненциального разбиения, и в битовом потоке могут сигнализироваться соответствующие параметры. Например, экспоненциальное разбиение может быть представлено в битовом потоке посредством сигнализации заданных шаблонов экспоненциального разбиения. На фиг.3B показан ряд графиков, иллюстрирующих примерные разбиения шаблона согласно варианту осуществления. Эти регулярные экспоненциальные разбиения позволяют точно определить набор заданных ориентаций. В некоторых реализациях сигнализация может быть выполнена путем включения индекса в одно или более из этих регулярных (например, шаблонных) экспоненциальных разбиений, которые являются заданными. Например, на фиг.3C показаны примерные кривые, ассоциированные с 4-мя заданными шаблонами (1,2,3,4), согласно варианту осуществления. В некоторых реализациях количество изгибов шаблона может варьироваться.Exponential splitting can be represented in a bitstream. In some implementations, the exponential split mode may be used and the appropriate parameters may be signaled in the bitstream. For example, exponential splitting may be represented in a bitstream by signaling predetermined exponential splitting patterns. FIG. 3B shows a series of graphs illustrating exemplary pattern splits according to an embodiment. These regular exponential partitions allow us to define exactly the set of given orientations. In some implementations, signaling can be done by including an index in one or more of these regular (eg, pattern) exponential splits, which are given. For example, FIG. 3C shows exemplary curves associated with 4 preset patterns (1,2,3,4) according to an embodiment. In some implementations, the number of pattern bends may vary.
В качестве другого примера экспоненциальные разбиения могут быть представлены в битовом потоке посредством сигнализации заданных коэффициентов, которые указывают степень кривизны, что позволяет обеспечить дополнительные экспоненциальные функции.As another example, exponential splits can be represented in the bitstream by signaling predetermined coefficients that indicate the degree of curvature, allowing for additional exponential functions to be provided.
В некоторых реализациях заданный шаблон, используемый в режиме экспоненциального разбиения, может указывать прямолинейный отрезок. Например, на фиг.3C отрезок, индексированный коэффициентом 1, представляет собой прямую линию, которую можно рассматривать как частный случай экспоненциального разбиения, что может привести к результату, аналогичному результату геометрического разбиения.In some implementations, the given pattern used in exponential split mode may specify a straight line segment. For example, in FIG. 3C, the segment indexed by a factor of 1 is a straight line, which can be considered a special case of exponential splitting, which can lead to a similar result to geometric splitting.
В некоторых реализациях оба шаблона ориентации, пример которых показан на фиг.3B, и заданные шаблоны, пример которых показан на фиг.3C, могут использоваться для эффективной сигнализации большого количества потенциальных экспоненциальных разбиений.In some implementations, both orientation patterns, an example of which is shown in FIG. 3B, and predetermined patterns, an example of which is shown in FIG. 3C, can be used to effectively signal a large number of potential exponential splits.
В некоторых реализациях могут быть заданы начальный и конечный индексы. Например, на фиг.3A показан криволинейный отрезок, начинающийся в нижнем левом углу прямоугольного блока 300 и заканчивающийся в верхнем правом углу прямоугольного блока 300 согласно варианту осуществления. В некоторых реализациях начальный и конечный индексы могут быть явно указаны в битовом потоке. Например, на фиг.3D показан другой примерный блок, показывающий разные начальные индексы P1 и конечные индексы P2, которые разбивают прямоугольный блок 300. Начальные индексы P1 и конечные индексы P2 могут сигнализироваться напрямую или могут указываться индексом в набор заданных значений. В некоторых вариантах осуществления возможны другие параметры.In some implementations, a start and end index may be specified. For example, FIG. 3A shows a curved line starting at the lower left corner of a
В некоторых реализациях параметры экспоненциального разбиения не обязательно должны быть включены в битовый поток для каждого блока, подвергающегося экспоненциальному разбиению (например, для которого режим экспоненциального разбиения имеет значение "истина"). Например, для данного текущего блока параметры экспоненциального разбиения могут быть унаследованы от другого блока (иногда называемого родительским блоком). Родительский блок может быть смежным в пространстве и/или во времени. Родительский блок может быть указан в битовом потоке индексом для заданного списка и/или может быть указан по меньшей мере путем создания списка кандидатов, индекс которого сигнализируется в битовом потоке.In some implementations, exponential split parameters need not be included in the bitstream for every block undergoing exponential split (eg, for which exponential split mode is true). For example, for a given current block, exponential splitting parameters can be inherited from another block (sometimes called a parent block). The parent block may be contiguous in space and/or time. The parent block may be specified in the bitstream by an index for a given list and/or may be specified by at least creating a list of candidates whose index is signaled in the bitstream.
На фиг.4 показана блок-схема системы, иллюстрирующая примерный вариант осуществления видеокодера 400, способного выполнять экспоненциальное разбиение, например, с помощью SADCT. Примерный видеокодер 400 принимает входное видео 405, которое может быть первоначально сегментировано или разбито в соответствии со схемой обработки, такой как схема разбиения макроблоков с древовидной структурой (например, квадродерево плюс бинарное дерево (QTBT)). Пример схемы разбиения макроблоков с древовидной структурой может включать в себя разбиение кадра изображения на большие блочные элементы, называемые единицами дерева кодирования (CTU). В некоторых реализациях каждый CTU можно дополнительно разбить один или несколько раз на множество подблоков, называемых единицами кодирования (CU). Результат этого разбиения может включать в себя группу подблоков, которые можно назвать блоками прогнозирования (PU). Кроме того, можно также использовать единицы преобразования (TU). Такая схема разбиения может включать в себя выполнение экспоненциального разбиения согласно некоторым аспектам текущего предмета изобретения. Например, на фиг.8 показан пример QTBT-разбиения кадра, и на фиг.9 показан пример экспоненциального разбиения на уровне CU QTBT, показанного на фиг.8.4 is a system block diagram illustrating an exemplary embodiment of a video encoder 400 capable of exponential splitting, such as with SADCT. An exemplary video encoder 400 receives input video 405, which may be initially segmented or split according to a processing scheme, such as a tree-structured macroblock partitioning scheme (eg, quadtree plus binary tree (QTBT)). An example of a macroblock partitioning scheme with a tree structure may include partitioning an image frame into larger block units called coding tree units (CTUs). In some implementations, each CTU may be further partitioned one or more times into a plurality of sub-blocks called coding units (CUs). The result of this partitioning may include a group of sub-blocks, which may be called Prediction Units (PUs). Alternatively, you can also use Transformation Units (TUs). Such a partitioning scheme may include performing exponential partitioning in accordance with some aspects of the current subject matter. For example, FIG. 8 shows an example of QTBT frame splitting, and FIG. 9 shows an example of exponential splitting at the QTBT CU level shown in FIG. 8. FIG.
Примерный видеокодер 400 включает в себя процессор 415 интрапрогнозирования, процессор 420 оценки/компенсации движения (также называемый процессором интерпрогнозирования), способный поддерживать экспоненциальное разбиение, процессор 425 преобразования/квантования, процессор 430 обратного квантования/обратного преобразования, внутриконтурный фильтр 435, буфер 440 декодированных изображений и процессор 445 энтропийного кодирования. В некоторых реализациях процессор 420 оценки/компенсации движения может выполнять экспоненциальное разбиение, включая определение того, может ли текущий блок унаследовать параметры экспоненциального разбиения от другого блока, и какой блок должен унаследовать параметры экспоненциального разбиения от каких блоков. В некоторых реализациях процессор 425 преобразования/квантования может выполнять SADCT. Параметры битового потока, которые сигнализируют о режимах экспоненциального разбиения и наследования, могут вводиться в процессор 445 энтропийного кодирования для включения в выходной битовый поток 450.An exemplary video encoder 400 includes an intra prediction processor 415, a motion estimation/compensation processor 420 (also referred to as an inter prediction processor) capable of supporting exponential splitting, a transform/quantization processor 425, an inverse quantization/inverse transform processor 430, an in-
Во время работы для каждого блока кадра входного видео 405 может быть определено то, обрабатывать ли блок посредством интрапрогнозирования изображения или с использованием оценки/компенсации движения. Блок может подаваться в процессор 410 интрапрогнозирования или процессор 420 оценки/компенсации движения. Если блок должен обрабатываться посредством интрапрогнозирования, процессор 410 интрапрогнозирования может выполнять обработку для вывода предиктора. Если блок должен обрабатываться посредством оценки/компенсации движения, процессор 420 оценки/компенсации движения может выполнять обработку, включая использование экспоненциального разбиения для вывода предиктора.During operation, for each frame block of the input video 405, it may be determined whether to process the block through intra image prediction or using motion estimation/compensation. The block may be provided to intra-prediction processor 410 or motion estimation/compensation processor 420. If the block is to be processed by intra prediction, intra prediction processor 410 may perform processing to derive a predictor. If the block is to be processed by motion estimation/compensation, motion estimation/compensation processor 420 may perform processing including using an exponential split to derive a predictor.
Остаток может быть сформирован путем вычитания предиктора из входного видео. Остаток может быть принят процессором 425 преобразования/квантования, который может выполнять обработку преобразования (например, SADCT) для создания коэффициентов, которые можно квантовать. Квантованные коэффициенты и любая ассоциированная информация сигнализации может быть подана в процессор 445 энтропийного кодирования для энтропийного кодирования и включения в выходной битовый поток 450. Процессор 445 энтропийного кодирования может поддерживать кодирование информации сигнализации, относящейся к экспоненциальному разбиению. Кроме того, квантованные коэффициенты могут подаваться в процессор 430 обратного квантования/обратного преобразования, который может воспроизводить пиксели, которые могут быть объединены с предиктором и обработаны внутриконтурным фильтром 435, выходные данные которого сохраняются в буфере 440 декодированного изображения для использования процессором 420 оценки/компенсации движения, который может поддерживать экспоненциальное разбиение.The remainder can be formed by subtracting the predictor from the input video. The remainder may be received by transform/quantization processor 425, which may perform transform processing (eg, SADCT) to generate coefficients that can be quantized. The quantized coefficients and any associated signaling information may be provided to entropy encoding processor 445 for entropy encoding and inclusion in
На фиг.5A показана блок-схема последовательности операций, иллюстрирующая примерный процесс 500A кодирования видео с экспоненциальным разбиением согласно некоторым аспектам текущего предмета изобретения, который позволяет снизить сложность кодирования при одновременном повышении эффективности сжатия. На этапе 510A видеокадр может подвергаться начальной блочной сегментации, например, с использованием схемы разбиения макроблоков с древовидной структурой, которая может включать в себя разбиение кадра изображения на CTU и CU. На этапе 520 может быть выбран блок для экспоненциального разбиения. Выбор может включать в себя идентификацию согласно правилу метрики того, что блок должен быть обработан в соответствии с режимом экспоненциального разбиения.FIG. 5A is a flowchart illustrating an exemplary exponentially split video encoding process 500A, according to some aspects of the current subject matter, that reduces encoding complexity while improving compression efficiency. At
На этапе 530A может быть определено экспоненциальное разбиение. Может быть определена кривая линия (например, 305), которая будет разбивать пиксели, содержащиеся в блоке, в соответствии с их движением между кадрами на две непрямоугольные области (например, область 0 и область 1) таким образом, чтобы пиксели (например, выборки яркости) в одной из областей (например, в области 0) имели аналогичное движение, и пиксели в другой области (например, в области 1) имели аналогичное движение. На этапе 550A определенное экспоненциальное разбиение может быть просигнализировано в битовом потоке. Передача сигналов в битовом потоке может включать в себя, например, включение индекса в один или несколько заданных шаблонов и/или коэффициентов.At 530A, an exponential split may be determined. A curved line (e.g. 305) can be defined that will split the pixels contained in the block according to their movement between frames into two non-rectangular regions (e.g. region 0 and region 1) such that the pixels (e.g. brightness samples ) in one of the regions (for example, in region 0) had a similar motion, and pixels in another region (for example, in region 1) had a similar motion. At 550A, a certain exponential split may be signaled in the bitstream. Signaling in the bitstream may include, for example, including an index in one or more predetermined patterns and/or coefficients.
На фиг.5B показана блок-схема последовательности операций, иллюстрирующая примерный процесс 500B кодирования видео с экспоненциальным разбиением согласно некоторым аспектам текущего предмета изобретения, который позволяет снизить сложность кодирования при одновременном повышении эффективности сжатия. На этапе 510B видеокадр может подвергаться начальной блочной сегментации, например, с использованием схемы разбиения макроблоков с древовидной структурой, которая может включать в себя разбиение кадра изображения на CTU и CU. На этапе 520B может быть выбран блок для экспоненциального разбиения. Выбор может включать в себя идентификацию согласно правилу метрики того, что блок должен быть обработан в соответствии с режимом экспоненциального разбиения.FIG. 5B is a flowchart illustrating an exemplary exponentially split video encoding process 500B according to some aspects of the current subject matter that reduces encoding complexity while improving compression efficiency. At step 510B, the video frame may be subjected to initial block segmentation, for example, using a macroblock partitioning scheme with a tree structure, which may include splitting the image frame into CTUs and CUs. At 520B, a block for exponential splitting may be selected. The selection may include identifying, according to the metric rule, that the block should be processed according to the exponential split mode.
На этапе 530B может быть определено экспоненциальное разбиение. Может быть определена кривая линия (например, 305), которая будет разбивать пиксели, содержащиеся в пределах блока, в соответствии с их движением между кадрами на две непрямоугольные области (например, область 0 и область 1) таким образом, чтобы пиксели (например, выборки яркости) в пределах одной из областей (например, в области 0) имели аналогичное движение, и пиксели в другой области (например, в области 1) имели аналогичное движение.At 530B, an exponential split may be determined. A curved line (e.g., 305) can be defined that will split the pixels contained within a block, according to their movement between frames, into two non-rectangular regions (e.g., region 0 and region 1) such that the pixels (e.g., samples brightness) within one of the regions (for example, in region 0) had a similar motion, and pixels in another region (for example, in region 1) had a similar motion.
На этапе 540B может быть определено представление параметра разбиения, которое может включать в себя определение того, наследует ли текущий блок параметры экспоненциального разбиения от другого блока, и от какого другого блока будет унаследован текущий блок.At
На этапе 550B определенное экспоненциальное разбиение может быть просигнализировано в битовом потоке. Сигнализация в битовом потоке может включать в себя, например, включение индекса в заданный список соседних в пространстве и во времени блоков.At 550B, a certain exponential split may be signaled in the bitstream. Bitstream signaling may include, for example, including an index in a predetermined list of spatially and temporally neighboring blocks.
На фиг.5C показана блок-схема последовательности операций, иллюстрирующая примерный процесс 500C кодирования видео с экспоненциальным разбиением и SADCT в соответствии с некоторыми аспектами текущего предмета изобретения, который может снизить сложность кодирования при одновременном повышении эффективности сжатия. На этапе 510C видеокадр может подвергаться начальной блочной сегментации, например, с использованием схемы разбиения макроблоков с древовидной структурой, которая может включать в себя разбиение кадра изображения на CTU и CU. На этапе 520C может быть выбран блок для экспоненциального разбиения. Выбор может включать в себя идентификацию согласно правилу метрики того, что блок должен быть обработан в соответствии с режимом экспоненциального разбиения.FIG. 5C is a flowchart illustrating an exemplary exponentially split and SADCT video encoding process 500C in accordance with some aspects of the current subject matter, which can reduce encoding complexity while improving compression efficiency. At step 510C, the video frame may be subjected to initial block segmentation, for example, using a macroblock partitioning scheme with a tree structure, which may include splitting the image frame into CTUs and CUs. At 520C, a block for exponential splitting may be selected. The selection may include identifying, according to the metric rule, that the block should be processed according to the exponential split mode.
На этапе 530C может быть определено экспоненциальное разбиение. Может быть определена кривая линия (например, 305), которая будет разбивать пиксели, содержащиеся в блоке, в соответствии с их движением между кадрами на две непрямоугольные области (например, область 0 и область 1) таким образом, чтобы пиксели (например, выборки яркости) в одной из областей (например, в области 0) имели аналогичное движение, и пиксели в другой области (например, в области 1) имели аналогичное движение. На этапе 540C может быть определено соответствующее преобразование для одной или нескольких из области 0 и области 1. Например, может быть определено то, имеет ли область 0 или область 1 низкую ошибку прогнозирования. В ответ на определение того, что область 0 имеет низкую ошибку прогнозирования, область 0 может быть закодирована с использованием SADCT. В ответ на определение того, что область 1 имеет низкую ошибку прогнозирования, область 1 может быть закодирована с использованием SADCT. В некоторых реализациях можно считать, что область имеет низкую ошибку прогнозирования тогда, когда ошибка прогнозирования ниже заданного порога.At 530C, an exponential split may be determined. A curved line (e.g. 305) can be defined that will split the pixels contained in the block according to their movement between frames into two non-rectangular regions (e.g. region 0 and region 1) such that the pixels (e.g. brightness samples ) in one of the regions (for example, in region 0) had a similar motion, and pixels in another region (for example, in region 1) had a similar motion. At 540C, an appropriate transform for one or more of region 0 and
На этапе 550C определенное экспоненциальное разбиение и выбор преобразования могут быть просигнализированы в битовом потоке. Сигнализация в битовом потоке может включать в себя, например, включение индекса в один или несколько заданных шаблонов и/или коэффициентов. Сигнализация в битовом потоке может включать в себя, например, передачу сигналов SADCT в качестве дополнительного выбора преобразования для DCT полного блока для области (например, области 0 или области 1), которая имеет низкую ошибку прогнозирования.At 550C, the determined exponential split and transform selection may be signaled in the bitstream. Bitstream signaling may include, for example, including an index in one or more predetermined patterns and/or coefficients. Bitstream signaling may include, for example, SADCT signaling as an additional transform choice for a full block DCT for a region (eg, region 0 or region 1) that has a low prediction error.
На фиг.6 показана блок-схема системы, иллюстрирующая примерный декодер 600, допускающий декодирование битового потока 670 с использованием экспоненциального разбиения и/или обратного SADCT. Декодер 600 включает в себя процессор 610 энтропийного декодера, процессор 620 обратного квантования и обратного преобразования, фильтр 630 удаления блочности, буфер 640 кадров, процессор 650 компенсации движения и процессор 660 интрапрогнозирования. В некоторых реализациях битовый поток 670 включает в себя параметры, которые сигнализируют режим экспоненциального разбиения. В некоторых реализациях битовый поток 670 включает в себя параметры, которые сигнализируют тип применяемого обратного преобразования (например, обратное блочное DCT или обратное SADCT). Процессор 650 компенсации движения может восстанавливать информацию о пикселях с использованием экспоненциального разбиения и/или обратного SADCT, как описано в данном документе.FIG. 6 is a system block diagram illustrating an exemplary decoder 600 capable of decoding
Во время работы битовый поток 670 может приниматься декодером 600 и вводиться в процессор 610 энтропийного декодера, который энтропийно декодирует битовый поток в квантованные коэффициенты. Квантованные коэффициенты могут подаваться в процессор 620 обратного квантования и обратного преобразования, который может выполнять обратное квантование и обратное преобразование с использованием обратного SADCT и в соответствии с сигналами в битовом потоке. Обратное преобразование позволяет создать остаточный сигнал, который может быть добавлен к выходному сигналу процессора 650 компенсации движения или процессора 660 интрапрогнозирования в соответствии с режимом обработки. Выходной сигнал процессора 650 компенсации движения и процессора 660 интрапрогнозирования может включать в себя прогнозирование блока на основе ранее декодированного блока. Сумма прогнозирования и остатка может быть обработана фильтром 630 удаления блочности и сохранена в буфере 640 кадров. Для заданного блока (например, CU или PU), когда битовый поток 670 сигнализирует, что режим разбиения является экспоненциальным разбиением, процессор 650 компенсации движения может построить прогнозирование на основе схемы экспоненциального разбиения, описанной в данном документе, включая, для текущего блока, извлечение из битового потока индекса в заданный список соседних в пространстве и во времени блоков и использование параметров экспоненциального разбиения для указанного блока с целью восстановления текущего блока.In operation,
На фиг.7 показана блок-схема процесса, иллюстрирующая примерный процесс 700 декодирования битового потока с использованием экспоненциального разбиения, которое в некоторых реализациях может использовать обратное SADCT. На этапе 710 принимается блок (например, CTU, CU, PU). Прием может включать в себя извлечение и/или синтаксический анализ блока и связанной с ним информации сигнализации из битового потока. На этапе 720 можно определить, включен ли режим экспоненциального разбиения (например, значение "истина") для блока. Если режим экспоненциального разбиения не включен (например, значение "ложь"), декодер может обработать блок, используя альтернативный режим разбиения, такой как геометрическое разбиение. Если режим экспоненциального разбиения включен (например, значение "истина"), на этапе 730 декодер может извлечь и/или определить один или несколько параметров, которые характеризуют экспоненциальное разбиение и преобразование. Например, эти параметры могут включать в себя индексы экспоненциального коэффициента, значения экспоненциального коэффициента, индексы шаблона ориентации и/или индексы начала и конца кривой линии (например, P1P2). Параметры извлечения могут включать в себя идентификацию и извлечение параметров из битового потока (например, синтаксический анализ битового потока). Упомянутые параметры могут включать в себя параметры преобразования, например, которые могут указывать то, следует ли обрабатывать блок с помощью обратного SADCT. Кроме того, определение одного или нескольких параметров, которые характеризуют экспоненциальное разбиение, может включать в себя определение того, что было просигнализировано слияние с экспоненциальным разбиением, и определение соседнего блока, от которого текущий блок наследует параметры экспоненциального разбиения, с использованием индекса, содержащегося в битовом потоке. На этапе 740 блок может быть обработан согласно экспоненциальному разбиению (например, для создания прогнозирования), включая определение ассоциированной информации о движении для каждой области. В некоторых реализациях на этапе 740 блок может быть дополнительно обработан с использованием обратного SADCT.7 is a flowchart illustrating an exemplary process 700 for decoding a bitstream using exponential splitting, which in some implementations may use an inverse SADCT. At 710, a block (eg, CTU, CU, PU) is received. The reception may include extracting and/or parsing the block and its associated signaling information from the bitstream. At
Хотя выше было подробно описано несколько вариаций, возможны другие модификации или дополнения. Например, в некоторых реализациях экспоненциальное разбиение может применяться к симметричным блокам (8×8, 16×16, 32×32, 64×64, 128×128 и т.п.), а также к различным асимметричным блокам (8×4, 16×8 и т.п.).While several variations have been detailed above, other modifications or additions are possible. For example, in some implementations, exponential splitting may be applied to symmetrical blocks (8x8, 16x16, 32x32, 64x64, 128x128, etc.) as well as various asymmetric blocks (8x4, 16×8, etc.).
В некоторых реализациях пространственное и временное прогнозирование экспоненциального параметра может выполняться для размера блока яркости 16×16 или более, такого как 64×64 и/или 128×128. В некоторых реализациях может быть установлен минимальный размер блока 16×16.In some implementations, spatial and temporal exponential parameter prediction may be performed for a luma block size of 16x16 or greater, such as 64x64 and/or 128x128. In some implementations, a minimum block size of 16x16 may be set.
Разбиение может быть просигнализировано в битовом потоке на основе решений относительно скорости-искажения в кодере. Кодирование может быть основано на комбинации регулярных заданных разбиений (например, шаблонов), пространственно-временного прогнозирования разбиения и дополнительных смещений. Каждая экспоненциально разбитая область может использовать прогнозирование с компенсацией движения или интрапрогнозированием. Граница прогнозируемых областей может быть сглажена перед добавлением остатка. Для остаточного кодирования кодер может выбирать между обычным прямоугольным DCT для всего блока и DCT с адаптацией к форме для каждой области.The split can be signaled in the bitstream based on rate-distortion decisions at the encoder. The encoding may be based on a combination of regular predetermined partitions (eg, patterns), space-time prediction of the partition, and additional offsets. Each exponentially split region can use motion-compensated prediction or intra-prediction. The boundary of the predicted areas can be smoothed before adding the remainder. For residual coding, the encoder may choose between a conventional rectangular DCT for the entire block and a shape-adaptive DCT for each region.
В некоторых реализациях может быть реализовано квадродерево плюс бинарное дерево решений (QTBT). В QTBT на уровне единицы дерева кодирования параметры разбиения QTBT динамически выводятся для адаптации к локальным характеристикам без передачи каких-либо служебных данных. Впоследствии на уровне единицы кодирования (CU) древовидная структура решений совместного классификатора может исключить ненужные итерации и контролировать риск ложного прогнозирования. В некоторых реализациях экспоненциальное разбиение может быть доступно как дополнительный инструмент разбиения, доступный на каждом листовом узле QTBT. В некоторых реализациях экспоненциальное разбиение доступно как дополнительный инструмент кодирования на уровне CU разбиения QTBT. Например, на фиг.8 показан пример разбиения QTBT кадра, и на фиг.9 показан пример экспоненциального разбиения на уровне CU QTBT, показанного на фиг.8.In some implementations, a quadtree plus binary decision tree (QTBT) may be implemented. In QTBT, at the unit level of the coding tree, the QTBT partitioning parameters are dynamically derived to adapt to local characteristics without passing any overhead. Subsequently, at the coding unit (CU) level, the decision tree of the joint classifier can eliminate unnecessary iterations and control the risk of false prediction. In some implementations, exponential splitting may be available as an additional splitting tool available on every QTBT leaf node. In some implementations, exponential splitting is available as an additional coding tool at the QTBT splitting CU level. For example, FIG. 8 shows an example of splitting a QTBT frame, and FIG. 9 shows an example of exponential splitting at the QTBT CU level shown in FIG. 8. FIG.
В некоторых реализациях декодер включает в себя процессор экспоненциального разбиения, который вырабатывает экспоненциальное разбиение для текущего блока и предоставляет всю информацию, относящуюся к разбиениям, для зависимых процессов. Процессор экспоненциального разбиения может напрямую влиять на компенсацию движения, так как оно может выполняться по отрезкам в случае экспоненциального разбиения блока. Кроме того, процессор разбиения может предоставлять информацию о форме в процессор интрапрогнозирования и процессор кодирования с преобразованием.In some implementations, the decoder includes an exponential split processor that generates an exponential split for the current block and provides all split-related information to dependent processes. The exponential split processor can directly affect motion compensation, since it can be performed in segments in the case of an exponential block split. In addition, the partition processor may provide shape information to the intra-prediction processor and the transform coding processor.
В некоторых реализациях дополнительные элементы синтаксиса могут сигнализироваться на разных уровнях иерархии битового потока. Для включения экспоненциального разбиения для всей последовательности флаг включения может быть закодирован в наборе параметров последовательности (SPS). Кроме того, флаг CTU может быть закодирован на уровне единицы дерева кодирования (CTU), чтобы указать то, используют ли какие-либо единицы кодирования (CU) экспоненциальное разбиение. Флаг CU может быть закодирован для того, чтобы указать то, использует ли текущая единица кодирования экспоненциальное разбиение. Параметры, которые точно определяют кривую линию в блоке, могут быть закодированы. Для каждой области может быть декодирован флаг, который точно определяют то, является ли текущая область интер- или интрапрогнозируемой.In some implementations, additional syntax elements may be signaled at different levels of the bitstream hierarchy. To enable exponential splitting for the entire sequence, an enable flag may be encoded in a sequence parameter set (SPS). In addition, the CTU flag may be encoded at the coding tree unit (CTU) level to indicate whether any coding units (CU) use exponential splitting. The CU flag may be encoded to indicate whether the current coding unit uses exponential splitting. Parameters that precisely define the curved line in the block can be encoded. For each region, a flag may be decoded that specifies whether the current region is inter- or intra-predictable.
В некоторых реализациях может быть указан минимальный размер области. In some implementations, a minimum region size may be specified.
Обратимся теперь к фиг.11, на котором показан график, иллюстрирующий другой примерный блок 1100, разбитый согласно экспоненциальному разбиению. Так как экспоненциальное разбиение, вероятно, будет использоваться для блоков (например, единиц кодирования), содержащих объекты с кривыми границами объектов, вполне вероятно, что разбиение приведет к тому, что одна область будет иметь низкую ошибку прогнозирования, а другая область будет иметь высокую ошибку прогнозирования. Например, как показано на фиг.11, блок разбит кривой в соответствии с экспоненциальным разбиением. Предполагая, что выборки яркости в блоке представляют шар и фон, две области (S0 и S1) будут включать в себя выборки яркости, соответствующие фону и шару, соответственно. В результате, область S0 будет иметь высокую ошибку прогнозирования, так как область S0 относится к фону, тогда как область S1 будет иметь низкую ошибку прогнозирования, так как область S1 относится к шару. Соответственно, некоторые аспекты текущего предмета изобретения могут включать в себя выполнение SADCT для области, имеющей низкую ошибку прогнозирования. За счет выполнения SADCT для области, имеющей низкую ошибку прогнозирования, вместо DCT полного блока, можно повысить эффективность сжатия.Referring now to FIG. 11, which is a graph illustrating another exemplary block 1100 split according to exponential splitting. Since exponential splitting is likely to be used for blocks (e.g., coding units) containing features with curved feature boundaries, it is likely that splitting will result in one region having a low prediction error and another region having a high error. forecasting. For example, as shown in FIG. 11, the block is curved according to exponential splitting. Assuming that the luma samples in the block represent the ball and the background, the two regions (S0 and S1) will include the luma samples corresponding to the background and the ball, respectively. As a result, the S0 region will have a high prediction error because the S0 region belongs to the background, while the S1 region will have a low prediction error because the S1 region belongs to the ball. Accordingly, some aspects of the current subject matter may include performing SADCT on a region having a low prediction error. By performing SADCT on an area having a low prediction error instead of a full block DCT, compression efficiency can be improved.
В некоторых реализациях во время декодирования параметры для выполнения обратного SADCT могут быть выведены из параметров экспоненциального разбиения. Например, размер преобразования может быть определен из индекса шаблона экспоненциального разбиения.In some implementations, during decoding, the parameters for performing the inverse SADCT may be derived from the exponential split parameters. For example, the transform size can be determined from the exponential split pattern index.
В некоторых реализациях SADCT может быть реализован для размеров блоков 64x64 и/или 128×128. В некоторых реализациях SADCT может сигнализироваться как дополнительный выбор преобразования для DCT полных блоков для отрезка с низкой ошибкой прогнозирования.In some implementations, SADCT may be implemented for block sizes of 64x64 and/or 128x128. In some implementations, SADCT may be signaled as an additional transform choice for DCT of full blocks for a segment with low prediction error.
Обратимся теперь к фиг.12, на которой показан график, иллюстрирующий наследование параметров экспоненциального разбиения текущим блоком 1205 от пространственно соседнего блока 1210. Кривая указывает границу 1215 объекта на изображении. Текущий блок 1205 и пространственно соседний блок 1210 указывают блоки единиц кодирования или единиц прогнозирования в квадродереве плюс бинарное дерево (QTBT). Как показано на чертеже, граница 1215 объекта обычно имеет относительно равномерную кривизну. Как соседний блок 1210, так и текущий блок 1205 будут разбиваться с использованием экспоненциального разбиения. Используя некоторые реализации текущего предмета изобретения, вместо отправки всех параметров экспоненциального разбиения (например, индексов для формирования и/или шаблонов ориентации, коэффициентов, начальных индексов, конечных индексов и/или т.п.), слияние экспоненциального разбиения может сигнализироваться в битовом потоке вместе с индексом соседнего блока 1210. Во время декодирования текущего блока текущий блок может наследовать некоторые или все параметры экспоненциального разбиения от указанного соседнего блока. На фиг.13 показаны примеры соседних в пространстве блоков для текущего блока. Соседние в пространстве блоки могут включать в себя блоки (например, единицы кодирования или единицы прогнозирования), которые находятся в том же месте, что и A0 (снизу слева), A1 (слева), B0 (сверху справа), B1 (сверху) и B2 (сверху слева) (например, перекрываются с ними).Let us now turn to Fig.12, which shows a graph illustrating the inheritance of exponential split parameters by the current block 1205 from the spatially adjacent block 1210. The curve indicates the
Кроме того, соседний блок, от которого данный текущий блок наследует параметры экспоненциального разбиения, может быть соседним во времени. На фиг.14 показаны примерный текущий блок 1405 с соседним во времени блоком 1410, от которого текущий блок 1405 наследует параметры экспоненциального разбиения. Как показано на фиг.14, опорное изображение 1415 включает в себя соседний блок 1410, который имеет соответствующий вектор движения 1420, характеризующий движение соседнего блока 1410 из опорного изображения 1415 в текущее изображение 1425, которое содержит текущий блок 1405. Используя некоторые реализации текущего предмета изобретения, вместо отправки всех параметров экспоненциального разбиения (например, индексов для формирования и/или шаблонов ориентации, коэффициентов и/или т.п.), слияние экспоненциального разбиения может сигнализироваться в битовом потоке вместе с индексом в соседний блок 1410. Во время декодирования текущего блока 1405, текущий блок 1405 может наследовать некоторые или все параметры экспоненциального разбиения от указанного соседнего блока 1410.In addition, the neighboring block from which the current block inherits exponential splitting parameters may be adjacent in time. 14 shows an exemplary current block 1405 with a temporally adjacent block 1410 from which the current block 1405 inherits exponential split parameters. As shown in FIG. 14, reference picture 1415 includes an adjacent block 1410 that has a corresponding motion vector 1420 indicative of movement of adjacent block 1410 from reference picture 1415 to current picture 1425, which contains current block 1405. Using some implementations of the current subject matter , instead of sending all of the exponential split parameters (eg, indexes to generate and/or orientation patterns, coefficients, and/or the like), the exponential split merge may be signaled in the bitstream along with the index to an adjacent block 1410. During decoding of the current block 1405, the current block 1405 may inherit some or all of the exponential split parameters from the specified adjacent block 1410.
В некоторых реализациях родительский блок не обязательно должен быть смежным блоком, например, он может быть другим блоком в текущем кадре, который был ранее декодирован.In some implementations, the parent block need not be a contiguous block, for example, it may be another block in the current frame that has been previously decoded.
В некоторых реализациях текущий блок может наследовать от другого блока только некоторые параметры экспоненциального разбиения. Например, текущий блок может наследовать от первого родительского блока первый параметр (например, шаблон формы), и в битовый поток могут быть включены дополнительные параметры (например, начальную точку, конечную точку, шаблон ориентации и т.п.).In some implementations, the current block may inherit from another block only some exponential split parameters. For example, the current box may inherit from the first parent box the first parameter (eg, form template), and additional parameters (eg, start point, end point, orientation template, etc.) may be included in the bitstream.
Предмет изобретения, описанный в данном документе, предусматривает множество технических преимуществ. Например, некоторые реализации текущего предмета изобретения могут предусматривать разбиение блоков, что увеличивает эффективность сжатия. В некоторых реализациях эффективные визуальные эффекты можно достичь за счет реализации разбиения таким образом, чтобы более точно следовать границам объекта. Аналогичным образом, в некоторых реализациях блокирующие артефакты на границах объекта можно уменьшить за счет реализации разбиения таким образом, чтобы более точно следовать границам объекта. В некоторых реализациях эффективность сжатия может быть повышена и сложность может быть уменьшена за счет реализации SADCT в качестве выбора дополнительного преобразования для DCT полного блока и применения SADCT к экспоненциально разбитым областям, которые имеют низкую ошибку прогнозирования.The subject matter described herein provides many technical advantages. For example, some implementations of the current subject matter may provide for block splitting, which increases compression efficiency. In some implementations, effective visual effects can be achieved by implementing partitioning in such a way as to more closely follow the boundaries of the object. Similarly, in some implementations, blocking artifacts at the boundaries of an object can be reduced by implementing partitioning in a way that more closely follows the boundaries of the object. In some implementations, compression efficiency can be improved and complexity can be reduced by implementing SADCT as an additional transform choice for full block DCT and applying SADCT to exponentially split regions that have low prediction error.
Один или несколько аспектов или признаков предмета изобретения, описанного в данном документе, могут быть реализованы в виде цифровых электронных схем, интегральных схем, специально разработанных специализированных интегральных схем (ASIC), программируемых вентильных матриц (FPGA), компьютерного оборудования, программно-аппаратного обеспечения, программного обеспечения и/или их комбинаций. Эти различные аспекты или признаки могут включать в себя реализацию в одной или нескольких компьютерных программах, которые являются исполняемыми и/или интерпретируемыми в программируемой системе, в том числе по меньшей мере один программируемый процессор, который может быть специального или общего назначения, подключенный для приема данных и инструкций из системы хранения и передачи данных и инструкций в систему хранения, по меньшей мере одно устройство ввода и по меньшей мере одно устройство вывода. Программируемая система или вычислительная система может включать в себя клиентов и серверы. Клиент и сервер обычно удалены друг от друга и обычно взаимодействуют через сеть связи. Взаимосвязь клиента и сервера возникает благодаря компьютерным программам, запущенным на соответствующих компьютерах и имеющим взаимосвязь клиент-сервер друг с другом.One or more aspects or features of the subject matter described herein may be implemented as digital electronic circuits, integrated circuits, specially designed application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), computer hardware, firmware, software and/or combinations thereof. These various aspects or features may include implementation in one or more computer programs that are executable and/or interpretable on a programmable system, including at least one programmable processor, which may be special purpose or general purpose, connected to receive data. and instructions from the data storage and transmission system and instructions to the storage system, at least one input device and at least one output device. The programmable system or computing system may include clients and servers. The client and server are usually remote from each other and usually communicate through a communication network. The relationship between the client and the server is due to the computer programs running on the respective computers and having a client-server relationship with each other.
Эти компьютерные программы, которые также могут упоминаться как программы, программное обеспечение, программные приложения, приложения, компоненты или код, включают в себя машинные инструкции для программируемого процессора и могут быть реализованы на процедурном языке высокого уровня, объектно-ориентированном языке программирования, языке функционального программирования, языке логического программирования и/или языке ассемблера/машинном языке. Используемый в данном документе термин "машиночитаемый носитель информации" относится к любому компьютерному программному продукту, аппаратному устройству и/или устройству, такому, например, как магнитные диски, оптические диски, память и программируемые логические устройства (PLD), используемые для подачи машинных инструкций и/или данных в программируемый процессор, включая машиночитаемый носитель информации, который принимает машинные инструкции в виде машиночитаемого сигнала. Термин "машиночитаемый сигнал" относится к любому сигналу, используемому для подачи машинных инструкций и/или данных в программируемый процессор. Машиночитаемый носитель информации может хранить такие машинные инструкции невременным образом, как, например, в невременной твердотельной памяти, на магнитном жестком диске или на любом эквивалентном носителе информации. Машиночитаемый носитель информации может альтернативно или дополнительно хранить такие машинные инструкции временным образом, например, как в кэш-памяти процессора или другой памяти с произвольным доступом, взаимодействующей с одним или несколькими ядрами физического процессора.These computer programs, which may also be referred to as programs, software, software applications, applications, components, or code, include machine instructions for a programmable processor and may be implemented in a high-level procedural language, an object-oriented programming language, a functional programming language , logic programming language and/or assembly language/machine language. As used herein, the term "computer-readable storage medium" refers to any computer software product, hardware device, and/or device, such as, for example, magnetic disks, optical disks, memory, and programmable logic devices (PLDs), used to provide machine instructions and /or data to a programmable processor, including a computer-readable storage medium that receives machine instructions in the form of a computer-readable signal. The term "machine readable signal" refers to any signal used to supply machine instructions and/or data to a programmable processor. The computer-readable storage medium may store such machine instructions in a non-temporal manner, such as in non-transitory solid-state memory, on a magnetic hard disk, or on any equivalent storage medium. The computer-readable storage medium may alternatively or additionally store such machine instructions in a temporary manner, such as in a processor cache or other random access memory cooperating with one or more physical processor cores.
Чтобы обеспечить взаимодействие с пользователем, один или несколько аспектов или признаков предмета изобретения, описанного в данном документе, могут быть реализованы на компьютере, имеющем устройство отображения, такое, например, как электронно-лучевая трубка (ЭЛТ, CRT) или жидкокристаллический дисплей (ЖКД, LCD) или светодиодный (СИД, LED) монитор для отображения информации пользователю, и клавиатуру и указательное устройство, такое, например, как мышь или шаровой манипулятор, с помощью которых пользователь может вводить данные в компьютер. Для взаимодействия с пользователем могут использоваться и другие виды устройств. Например, сигнал обратной связи, подаваемый пользователю, может быть любой формой сенсорной обратной связи, такой, например, как визуальная обратная связь, слуховая обратная связь или тактильная обратная связь; и ввод от пользователя может быть принят в любой форме, включая акустический, речевой или тактильный ввод. Другие возможные устройства ввода включают в себя сенсорные экраны или другие сенсорные устройства, такие как одно- или многоточечные резистивные или емкостные трекпады, аппаратные средства и программное обеспечение для распознавания голоса, оптические сканеры, оптические указатели, цифровые устройства захвата изображений и соответствующее программное обеспечение для интерпретации и т.п.To provide user interaction, one or more aspects or features of the subject matter described herein may be implemented on a computer having a display device such as, for example, a cathode ray tube (CRT) or a liquid crystal display (LCD). LCD) or light-emitting diode (LED, LED) monitor for displaying information to the user, and a keyboard and pointing device, such as a mouse or trackball, with which the user can enter data into the computer. Other types of devices may also be used to interact with the user. For example, the feedback provided to the user may be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user may be received in any form, including acoustic, speech, or tactile input. Other possible input devices include touch screens or other touch devices such as single or multi-point resistive or capacitive trackpads, voice recognition hardware and software, optical scanners, optical pointers, digital image capture devices, and related interpretation software. etc.
В приведенных выше описаниях и в формуле изобретения могут встречаться такие фразы, как "по меньшей мере один из" или "один или более из", за которыми следует конъюнктивный список элементов или признаков. Термин "и/или" может также встречаться в списке из двух или более элементов или признаков. Если иное неявно или явно не противоречит контексту, в котором оно используется, такая фраза предназначена для обозначения любого из перечисленных элементов или признаков по отдельности или любых перечисленных элементов или признаков в сочетании с любыми другими перечисленными элементами или признаками. Например, каждая фраза "по меньшей мере один из A и B"; "один или более из A и B" и "A и/или B" означает "A отдельно, B отдельно или A и B вместе". Подобная интерпретация также предназначена для списков, состоящих из трех и более пунктов. Например, каждая фраза "по меньшей мере один из A, B и C;" "один или более из A, B и C" и "A, B и/или C" предназначена для обозначения "A отдельно, B отдельно, C отдельно, A и B вместе, A и C вместе, B и C вместе, или A и B и C вместе". Кроме того, термин "на основе", используемый выше и в формуле изобретения предназначен для обозначения "на основе по меньшей мере частично", поэтому также допустим неуказанный признак или элемент.In the above descriptions and in the claims, phrases such as "at least one of" or "one or more of" followed by a conjunctive list of elements or features may occur. The term "and/or" may also occur in a list of two or more elements or features. Unless otherwise implicitly or explicitly contradicted by the context in which it is used, such phrase is intended to mean any of the listed elements or features alone or any of the listed elements or features in combination with any other listed elements or features. For example, each phrase is "at least one of A and B"; "one or more of A and B" and "A and/or B" means "A alone, B alone, or A and B together". A similar interpretation is also intended for lists of three or more items. For example, each phrase "at least one of A, B, and C;" "one or more of A, B and C" and "A, B and/or C" is intended to mean "A alone, B alone, C alone, A and B together, A and C together, B and C together, or A and B and C together." In addition, the term "based" as used above and in the claims is intended to mean "based at least in part", so an unspecified feature or element is also acceptable.
Предмет изобретения, описанный в данном документе, может быть воплощен в системах, устройствах, способах и/или изделиях в зависимости от желаемой конфигурации. Реализации, изложенные в предыдущем описании, не представляют все реализации, согласующиеся с предметом изобретения, описанным в данном документе. Вместо этого они представляют собой лишь некоторые примеры, согласующиеся с аспектами, относящимися к описанному предмету изобретения. Хотя некоторые варианты подробно описаны выше, возможны и другие модификации или дополнения. В частности, в дополнение к изложенному в данном документе, могут быть предоставлены дополнительные признаки и/или вариации. Например, реализации, описанные выше, могут быть направлены на различные комбинации и подкомбинации раскрытых признаков и/или комбинации и подкомбинации нескольких дополнительных признаков, раскрытых выше. Кроме того, логические последовательности операций, изображенные на сопроводительных чертежах и/или описанные в данном документе, не обязательно требуют конкретного показанного порядка или последовательного порядка для достижения желаемых результатов. Другие реализации могут находиться в пределах объема нижеследующей формулы изобретения.The subject matter described herein may be embodied in systems, devices, methods, and/or articles, depending on the desired configuration. The implementations set forth in the previous description do not represent all implementations consistent with the subject matter described herein. Instead, they are only some examples consistent with aspects related to the described subject matter. Although some options are detailed above, other modifications or additions are possible. In particular, in addition to what is set forth herein, additional features and/or variations may be provided. For example, the implementations described above may target various combinations and subcombinations of the disclosed features and/or combinations and subcombinations of several additional features disclosed above. In addition, the logical sequences of operations depicted in the accompanying drawings and/or described herein do not necessarily require the specific order shown or sequential order to achieve the desired results. Other implementations may be within the scope of the following claims.
Claims (21)
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US62/739,446 | 2018-10-01 | ||
| US62/739,531 | 2018-10-01 | ||
| US62/739,677 | 2018-10-01 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| RU2021112401A RU2021112401A (en) | 2022-11-11 |
| RU2788631C2 true RU2788631C2 (en) | 2023-01-23 |
Family
ID=
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9159141B2 (en) * | 2010-08-19 | 2015-10-13 | Thomson Licensing | Method for reconstructing a current block of an image and corresponding encoding method, corresponding devices as well as storage medium carrying an images encoded in a bit stream |
| RU2597473C2 (en) * | 2011-06-30 | 2016-09-10 | Сан Пэтент Траст | Decoding method, encoding method, decoding device, encoding device, and apparatus for encoding and decoding |
| RU2665311C1 (en) * | 2014-12-10 | 2018-08-28 | Медиатек Сингапур Пте. Лтд, | Method for video coding with use of block division onto binary tree |
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9159141B2 (en) * | 2010-08-19 | 2015-10-13 | Thomson Licensing | Method for reconstructing a current block of an image and corresponding encoding method, corresponding devices as well as storage medium carrying an images encoded in a bit stream |
| RU2597473C2 (en) * | 2011-06-30 | 2016-09-10 | Сан Пэтент Траст | Decoding method, encoding method, decoding device, encoding device, and apparatus for encoding and decoding |
| RU2665311C1 (en) * | 2014-12-10 | 2018-08-28 | Медиатек Сингапур Пте. Лтд, | Method for video coding with use of block division onto binary tree |
Non-Patent Citations (1)
| Title |
|---|
| HUNG E.M. et al., On Macroblock Partition for Motion Compensation, PROCEEDINGS OF THE 2006 INTERNATIONAL CONFERENCE ON IMAGE PROCESSING (ICIP 2006), IEEE, Piscataway, vol.1, 2006. * |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11695967B2 (en) | Block level geometric partitioning | |
| JP6931690B2 (en) | How to encode content and arithmetic units | |
| JP7479062B2 (en) | Method and system for exponential division | |
| GB2531003A (en) | Method and apparatus for vector encoding in video coding and decoding | |
| CN106576172A (en) | Method for encoding/decoding image and device using same | |
| JP7498297B2 (en) | METHOD AND APPARATUS FOR VIDEO FILTERING - Patent application | |
| AU2018237342A1 (en) | Binary arithmetic coding with parameterized probability estimation finite state machines | |
| KR102582887B1 (en) | Video encoding device, video decoding device, video encoding method, and video decoding method | |
| JP7542278B2 (en) | Adaptive block updating of unavailable reference frames using explicit and implicit signaling - Patents.com | |
| RU2788631C2 (en) | Methods and systems for exponential partitioning | |
| US20250350737A1 (en) | Systems and methods for encoding with non-rectangular partitioning | |
| RU2825342C1 (en) | Video encoder, video decoder, video encoding method, video decoding method | |
| RU2814971C2 (en) | Video encoder, video decoder, video encoding method, video decoding method | |
| CN113056913B (en) | Method and system for constructing a merge candidate list including adding non-adjacent diagonal spatial merge candidates | |
| RU2771669C1 (en) | Video encoder, video decoder, method for video encoding, method for video decoding | |
| RU2829207C2 (en) | Interframe prediction at exponential division | |
| HK40042082A (en) | Block level geometric partitioning | |
| RU2831080C2 (en) | Interframe prediction with geometrical partitioning with adaptive number of regions | |
| RU2829493C2 (en) | Shape-adaptive discrete cosine transform for geometric partitioning with adaptive number of regions | |
| HK40042082B (en) | Block level geometric partitioning |