RU2806442C2 - Motion vector limited by global motion in interframe prediction - Google Patents

Motion vector limited by global motion in interframe prediction Download PDF

Info

Publication number
RU2806442C2
RU2806442C2 RU2021134209A RU2021134209A RU2806442C2 RU 2806442 C2 RU2806442 C2 RU 2806442C2 RU 2021134209 A RU2021134209 A RU 2021134209A RU 2021134209 A RU2021134209 A RU 2021134209A RU 2806442 C2 RU2806442 C2 RU 2806442C2
Authority
RU
Russia
Prior art keywords
motion model
flag
sps
motion
block
Prior art date
Application number
RU2021134209A
Other languages
Russian (ru)
Other versions
RU2021134209A (en
Inventor
Хари КАЛВА
Боривой ФЁРХТ
Велибор АДЖИЧ
Original Assignee
Оп Солюшнз, Ллк
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Оп Солюшнз, Ллк filed Critical Оп Солюшнз, Ллк
Publication of RU2021134209A publication Critical patent/RU2021134209A/en
Application granted granted Critical
Publication of RU2806442C2 publication Critical patent/RU2806442C2/en

Links

Images

Abstract

FIELD: video compression.
SUBSTANCE: decoding device contains circuitry for receiving a stream of data bits, extracting a header associated with the current frame and containing a signal characterizing that global motion is activated, and additionally characterizing the parameters of the global motion model, and decoding the current frame, the decoding procedure includes using a motion model with complexity no higher than the complexity of the global motion model for each current block.
EFFECT: increasing the efficiency of video compression.
18 cl, 7 dwg, 8 tbl

Description

Перекрестные ссылки на родственные заявкиCross references to related applications

Настоящая заявка претендует на преимущества от приоритета предварительной заявки на выдачу патента США No. 63/838,563, которая подана 25 апреля 2019 г. под названием «ОГРАНИЧЕННЫЙ ГЛОБАЛЬНЫМ ДВИЖЕНИЕМ ВЕКТОР ДВИЖЕНИЯ ПРИ МЕЖКАДРОВОМ ПРОГНОЗИРОВАНИИ» (“Global Motion Constrained Motion Vector in Inter Prediction”), и которая включена сюда посредством ссылки во всей своей полноте.This application claims the benefit of the priority of U.S. Provisional Patent Application No. 63/838,563, which was filed April 25, 2019, entitled “Global Motion Constrained Motion Vector in Inter Prediction,” and which is incorporated herein by reference in its entirety.

Область техники, к которой относится изобретениеField of technology to which the invention relates

Настоящее изобретение, в общем, относится к области сжатия видео. В частности, настоящее изобретение направлено на ограниченный глобальным движением вектор движения при межкадровом прогнозировании.The present invention generally relates to the field of video compression. In particular, the present invention is directed to a global motion-constrained motion vector in inter-frame prediction.

Уровень техникиState of the art

Видео кодек может содержать электронную схему или программное обеспечение, которое сжимает или распаковывает цифровое видео. Кодек может преобразовывать несжатое видео в сжатый формат или наоборот. В контексте сжатия видео устройство, которое сжимает видео (и/или осуществляет некоторые функции сжатия) может обычно называться кодирующим устройством, а устройство, которое распаковывает видео (и/или осуществляет некоторые функции распаковки) может обычно называться декодирующим устройством.A video codec may contain electronic circuitry or software that compresses or decompresses digital video. The codec can convert uncompressed video to a compressed format or vice versa. In the context of video compression, a device that compresses video (and/or performs some compression functions) may generally be referred to as an encoder, and a device that decompresses video (and/or performs some decompression functions) may generally be referred to as a decoder.

Формат сжатых данных может соответствовать стандартным спецификациям сжатия видео. Сжатие может происходить с потерями в том смысле, что в сжатом видео отсутствует некоторая информация, присутствующая в исходном видео. Следствием этого может быть то, что расширенное видео после декомпрессии может иметь более низкое качество по сравнению с исходным несжатым видео, поскольку здесь будет недостаточно информации для точной реконструкции исходного видео.The compressed data format may follow standard video compression specifications. Compression can be lossy in the sense that the compressed video is missing some information that is present in the original video. A consequence of this may be that the enhanced video after decompression may be of lower quality compared to the original uncompressed video, since there will not be enough information to accurately reconstruct the original video.

Соотношения между качеством видео, объемом данных, используемых для представления этого видео, (например, определяемым скоростью передачи битов данных), сложностью алгоритмов кодирования и декодирования, чувствительностью к потерям данных и ошибкам, легкостью редактирования, произвольным доступом, сквозной задержкой (например, временем ожидания) и другими подобными факторами могут быть очень сложными.Relationships between video quality, the amount of data used to represent that video (e.g., as determined by the data bit rate), the complexity of encoding and decoding algorithms, sensitivity to data loss and errors, ease of editing, random access, end-to-end latency (e.g., latency ) and other similar factors can be very complex.

Процедура компенсации движения может представлять собой способ прогнозирования кадра видео или части этого кадра с использованием опорного кадра, такого как предшествующий и/или будущий кадры, с учетом движения видеокамеры и/или объектов на видео. Это может быть использовано при кодировании и декодировании данных видео для сжатия видео, например, при кодировании и декодировании с использованием разработанного Группой экспертов по кинематографии (Motion Picture Experts Group (MPEG)) стандарта MPEG-2 (также называется усовершенствованным видео кодированием (advanced video coding (AVC)) и H.264). Процедура компенсации движения может описывать изображение в терминах преобразования опорного изображения в текущее изображение. Опорное изображение может быть предшествующим во времени при сравнении с текущим изображением, или может быть взято из будущего по сравнению с текущим изображением. Когда есть возможность точно синтезировать изображение из ранее переданных или сохраненных изображений, можно повысить эффективность сжатия.The motion compensation procedure may be a method of predicting a frame of video or a portion of that frame using a reference frame, such as a previous and/or future frame, taking into account the motion of a video camera and/or objects in the video. This can be used when encoding and decoding video data for video compression, such as encoding and decoding using the Motion Picture Experts Group (MPEG) standard MPEG-2 (also called advanced video coding (AVC)) and H.264). The motion compensation procedure may describe an image in terms of transforming a reference image into a current image. The reference image may be previous in time when compared to the current image, or may be taken from the future when compared to the current image. When it is possible to accurately synthesize an image from previously transmitted or stored images, compression efficiency can be improved.

Раскрытие сущности изобретенияDisclosure of the invention

Согласно одному из аспектов, декодирующее устройство содержит схему для приема потока битов данных, выделения заголовка, ассоциированного с текущим кадром и содержащего сигнал, характеризующий, что глобальное движение активизировано, и далее характеризующий параметры модели глобального движения, и декодирования текущего кадра, где процедура декодирования содержит использование для каждого текущего блока модели движения, сложность которой не больше сложности модели глобального движения.According to one aspect, the decoding device includes circuitry for receiving a stream of data bits, extracting a header associated with the current frame and containing a signal indicating that global motion is activated and further characterizing parameters of the global motion model, and decoding the current frame, where the decoding procedure comprises using for each current block a motion model whose complexity is not greater than the complexity of the global motion model.

Согласно другому аспекту, способ содержит прием, декодирующим устройством, потока битов данных. Способ содержит выделение заголовка, ассоциированного с текущим кадром и содержащего сигнал, характеризующий, что глобальное движение активизировано, и дополнительно характеризующий параметры модели движения. Способ содержит декодирование текущего кадра, где процедура декодирования содержит использование для каждого текущего блока модели движения, сложность которой не больше сложности модели глобального движения.According to another aspect, the method comprises receiving, by a decoding device, a stream of data bits. The method comprises extracting a header associated with the current frame and containing a signal characterizing that global motion is activated and additionally characterizing the parameters of the motion model. The method comprises decoding the current frame, where the decoding procedure includes using for each current block a motion model, the complexity of which is not greater than the complexity of the global motion model.

Подробности одного или более вариантов описываемого здесь предмета настоящего изобретения приведены на прилагаемых чертежах и в описании ниже. Другие признаки и преимущества предмета настоящего изобретения, рассматриваемого здесь, станут ясны из описания и чертежей и из Формулы изобретения.Details of one or more embodiments of the subject matter of the present invention described herein are set forth in the accompanying drawings and in the description below. Other features and advantages of the subject matter of the present invention contemplated herein will become apparent from the description and drawings and from the claims.

Кроткое описание чертежейBrief description of the drawings

Для целей иллюстрации настоящего изобретения, чертежи показывают аспекты одного или более вариантов настоящего изобретения. Однако должно быть понятно, что варианты настоящего изобретения не исчерпываются точно теми конструкциями и приборами, какие показаны на чертежах, на которых:For purposes of illustrating the present invention, the drawings show aspects of one or more embodiments of the present invention. However, it should be understood that embodiments of the present invention are not limited to exactly those structures and devices as shown in the drawings, in which:

Фиг. 1 представляет диаграмму, иллюстрирующую векторы движения примера кадра с глобальным и локальным движением;Fig. 1 is a diagram illustrating motion vectors of an example frame with global and local motion;

Фиг. 2 иллюстрирует три примера моделей движения, которые могут быть использованы для глобального движения, с указанием величин их индексов (0, 1 или 2);Fig. 2 illustrates three examples of motion models that can be used for global motion, indicating their index values (0, 1 or 2);

Фиг. 3 представляет логическую схему способа согласно некоторым примерам вариантов реализации предмета настоящего изобретения;Fig. 3 is a flowchart of a method according to some example embodiments of the subject matter of the present invention;

Фиг. 4 представляет блок-схему системы для примера декодирующего устройства согласно некоторым примерам вариантов реализации предмета настоящего изобретения;Fig. 4 is a system block diagram of an example decoding device according to some example embodiments of the subject matter of the present invention;

Фиг. 5 представляет логическую схему способа согласно некоторым примерам вариантов реализации предмета настоящего изобретения;Fig. 5 is a flowchart of a method according to some example embodiments of the subject matter of the present invention;

Фиг. 6 представляет блок-схему системы для примера кодирующего устройства согласно некоторым примерам вариантов реализации предмета настоящего изобретения; иFig. 6 is a system block diagram for an example encoder according to some example embodiments of the subject matter of the present invention; And

Фиг. 7 представляет блок-схему компьютерной системы, которая может быть использована для реализации каких-либо одной или более методик, описываемых здесь, или каких-либо одной или более частей этих методик.Fig. 7 is a block diagram of a computer system that may be used to implement any one or more of the techniques described herein, or any one or more portions of these techniques.

Чертежи не обязательно выполнены в масштабе и могут быть иллюстрированы пунктирными линиями, схематичными представлениями и частичными видами. В некоторых случаях, подробности, которые не являются необходимыми для понимания варианта или делают другие детали трудными для восприятия, могут быть исключены. Подобные позиционные обозначения на разных чертежах относятся к подобным элементам.The drawings are not necessarily to scale and may be illustrated with dotted lines, schematic diagrams and partial views. In some cases, details that are not necessary to understand the option or make other details difficult to understand may be excluded. Similar reference designations in different drawings refer to similar elements.

Осуществление изобретенияCarrying out the invention

Под глобальным движением в видеопрограмме или видеоролике понимают движение, происходящее по всему кадру. Глобальное движение может быть вызвано движением видеокамеры, например, панорамирование и зуммирование видеокамеры может создавать движение в кадре, которое обычно влияет на весь кадр. Движение, присутствующее в отдельных участках видео, может называться локальным движением. Локальное движение может быть вызвано движущимися объектами в пределах сцены; например, и без ограничений локальное движение может быть создано объектом, движущимся в сцене слева направо. Видео может содержать сочетание локального и глобального движения. Некоторые варианты реализации предмета настоящего изобретения могут предлагать эффективные подходы к тому, чтобы передать сообщение о глобальном движении декодирующему устройству и использовать векторы глобального движения для повышения эффективности сжатия.Global motion in a video program or video refers to the movement that occurs throughout the entire frame. Global motion can be caused by the movement of a video camera, for example, panning and zooming a video camera can create motion in the frame that usually affects the entire frame. Motion present in specific portions of a video can be called local motion. Local motion can be caused by moving objects within the scene; for example, and without restrictions, local motion can be created by an object moving in the scene from left to right. The video may contain a combination of local and global motion. Some embodiments of the subject matter of the present invention may provide efficient approaches to communicate global motion to a decoder and use global motion vectors to improve compression efficiency.

На Фиг. 1 представлена диаграмма, иллюстрирующая варианты векторов движения примера кадра 100 с глобальным и локальным движением. Кадр 100 может содержать ряд блоков пикселей, изображенных, в качестве примера, в виде квадратов, и ассоциированных с этими блоками векторов движения, изображенных в виде стрелок. Квадраты (например, блоки пикселей) со стрелками, указывающими вверх и влево, могут указывать блоки с движением, которое может считаться глобальным движением, и квадраты со стрелками, указывающими в других направлениях, (обозначены поз. 104), могут указывать блоки с локальным движением. В иллюстрируемом на Фиг. 1 примере многие блоки имеют одно и то же глобальное движение. Передача сигнализации о глобальном движении в заголовке, таком как набор параметров изображения (picture parameter set (PPS)) или набор параметров последовательности (sequence parameter set (SPS)) и использование глобального движения, о котором передана сигнализация, может уменьшить объем информации вектора движения, необходимой блокам, и может иметь в качестве результата улучшенное прогнозирование. Хотя для иллюстративных целей описанные ниже примеры относятся к определению и/или применению векторов глобального или локального движения на уровне блоков, векторы глобального движения могут быть определены и/или применены для любой области кадра и/или изображения, включая, образованные из нескольких блоков, области, ограниченные контуром какой-либо геометрической формы, такие как, без ограничений, области, определяемые геометрическим и/или экспоненциальным кодированием, в которых одна или более прямых и/или кривых линий, ограничивающих профиль, могут быть наклонными или искривленными, и/или для целиком кадра и/или изображения. Хотя передача в виде сигнализации описана здесь, как осуществляемая на уровне кадров и/или в заголовке и/или в наборе параметров кадра, такая сигнализация может быть в качестве альтернативы или в дополнение осуществлена на уровне суб-изображения, где такое суб-изображение может представлять собой какую-либо область кадра и/или изображения, как описано выше.In FIG. 1 is a diagram illustrating the motion vector variations of an example frame 100 with global and local motion. Frame 100 may contain a number of blocks of pixels, illustrated by example as squares, and associated with these blocks of motion vectors, depicted as arrows. Squares (e.g., blocks of pixels) with arrows pointing up and left may indicate blocks with movement that may be considered global movement, and squares with arrows pointing in other directions (labeled 104) may indicate blocks with local movement . In the illustrated FIG. In example 1, many blocks have the same global movement. Signaling the global motion in a header such as a picture parameter set (PPS) or a sequence parameter set (SPS) and using the signaled global motion can reduce the amount of motion vector information. needed by the blocks, and may result in improved prediction. Although for illustrative purposes the examples described below refer to defining and/or applying global or local motion vectors at the block level, global motion vectors can be determined and/or applied to any region of the frame and/or image, including multi-block regions. bounded by the contour of some geometric shape, such as, without limitation, regions defined by geometric and/or exponential coding, in which one or more straight and/or curved lines delimiting the profile may be slanted or curved, and/or for entire frame and/or image. Although signaling is described herein as occurring at the frame level and/or in the header and/or frame parameter set, such signaling may alternatively or in addition be implemented at the sub-picture level, where such sub-picture may represent any area of the frame and/or image, as described above.

В качестве примера, и по-прежнему ссылаясь на Фиг. 1, простое поступательное перемещение может быть описано с использованием вектора движения (motion vector (MV)) с двумя компонентами MVx, MVy, каковые векторы описывают смещение блоков и/или пикселей в текущем кадре. Более сложное движение, такое как поворот (вращение), зуммирование и деформирование, могут быть описаны с использованием векторов аффинного движения, где «вектор аффинного движения», как это используется в настоящем описании, представляет собой вектор, характеризующий однородное смещение группы пикселей или точек, представленных в изображении видео и/или в картинке, такой как группы пикселей, иллюстрирующей движение объекта через поле зрения в видеоролике без изменения видимой формы в процессе движения. Некоторые подходы к кодированию и/или декодированию видео используют 4-параметрические или 6-параметрические аффинные модели для компенсации движения в ходе межкадрового кодирования изображения.By way of example, and still referring to FIG. 1, a simple translational movement can be described using a motion vector (MV) with two components MV x , MV y , which vectors describe the displacement of blocks and/or pixels in the current frame. More complex motion such as rotation, zooming, and warping can be described using affine motion vectors, where an "affine motion vector" as used herein is a vector characterizing the uniform displacement of a group of pixels or points, represented in a video image and/or in a picture, such as a group of pixels, illustrating the movement of an object across the field of view in the video without changing its apparent shape during the movement. Some video encoding and/or decoding approaches use 4-parameter or 6-parameter affine models to compensate for motion during inter-frame image encoding.

Например, 6-параметрическая аффинная модель движения может быть описана как:For example, a 6-parameter affine motion model can be described as:

x’ = ax + by + cx’ = ax + by + c

y’ = dx + ey + fy’ = dx + ey + f

4-параметрическая аффинная модель движения может быть описана как:The 4-parameter affine motion model can be described as:

x’ = ax + by + cx’ = ax + by + c

y’ = -bx + ay + fy’ = -bx + ay + f

где (x,y) и (x’,y’) обозначают позиции пикселей в текущем и опорном изображениях, соответственно; a, b, c, d, e и f представляют параметры аффинной модели движения.where (x,y) and (x’,y’) denote the pixel positions in the current and reference images, respectively; a, b, c, d, e and f represent the parameters of the affine motion model.

По-прежнему обращаясь к Фиг. 1, параметры, используемые для описания аффинного движения, могут быть сообщены в виде сигнализации декодирующему устройству для применения компенсации движения в этом декодирующем устройстве. Согласно некоторым способам, параметры движения можно передавать в виде сигнализации в явном виде или посредством передачи сигнализации векторов поступательного движения контрольных точек (control point motion vector (CPMV)) и затем определения параметров аффинного движения на основе этих векторов поступательного движения контрольных точек. Два вектора движения контрольных точек (CPMV) могут быть использованы для определения параметров аффинного движения для 4-параметрической модели аффинного движения и три вектора поступательного движения контрольных точек (CPMV) могут быть использованы для получения параметров для 6-параметрической модели движения. Передача в виде сигнализации параметров аффинного движения с использованием векторов движения контрольных точек может позволить использовать эффективные способы кодирования векторов движения для передачи в виде сигнализации параметров аффинного движения.Still referring to Fig. 1, the parameters used to describe the affine motion may be signaled to a decoder to apply motion compensation to that decoder. In some methods, motion parameters can be signaled explicitly or by signaling control point motion vectors (CPMVs) and then determining affine motion parameters based on those control point motion vectors. Two control point motion vectors (CPMV) can be used to determine the affine motion parameters for a 4-parameter affine motion model, and three control point translational motion vectors (CPMV) can be used to derive parameters for a 6-parameter motion model. Signaling affine motion parameters using reference point motion vectors may allow efficient ways to encode motion vectors for signaling affine motion parameters.

В некоторых вариантах реализации и продолжая обращаться к Фиг. 1, сигнализация о глобальном движении может быть включена в заголовок, такой как набор PPS или набор SPS. Глобальное движение может варьироваться от изображения к изображению. Векторы движения, передаваемые в виде сигнализации в заголовках изображения, могут описывать движение относительно ранее декодированных кадров. В некоторых вариантах реализации, глобальное движение может быть поступательным или аффинным. Используемая модель движения (например, число параметров, является ли модель аффинной, поступательной или другой) может также быть сообщена в виде сигнализации в заголовке изображения. Фиг. 2 иллюстрирует три примера моделей 200 движения, которые могут быть использованы для глобального движения, с указанием индексов (0, 1 или 2) этих моделей.In some embodiments, and continuing with FIG. 1, global motion signaling may be included in a header such as a PPS set or an SPS set. Global motion may vary from image to image. Motion vectors, signaled in picture headers, can describe motion relative to previously decoded frames. In some implementations, the global motion may be translational or affine. The motion model used (eg, number of parameters, whether the model is affine, translational, or other) may also be signaled in the image header. Fig. 2 illustrates three examples of motion models 200 that can be used for global motion, indicating the indexes (0, 1, or 2) of these models.

По-прежнему обращаясь к Фиг. 2, наборы PPS могут быть использованы для передачи в виде сигнализации параметров, которые изменяются между изображениями в последовательности. Параметры, которые остаются теми же самыми для последовательности изображений, могут быть сообщены в виде сигнализации в наборе параметров последовательности для уменьшения размера набора PPS и уменьшения необходимой скорости передачи данных видео. Пример набора параметров изображения (PPS) показан в Табл. 1:Still referring to Fig. 2, PPS sets can be used to signal parameters that change between pictures in a sequence. Parameters that remain the same for a sequence of pictures may be signaled in the sequence parameter set to reduce the size of the PPS set and reduce the required video bit rate. An example of a picture parameter set (PPS) is shown in Table. 1:

pic_parameter_set_rbsp( ) {pic_parameter_set_rbsp() { ДескрипторDescriptor pps_pic_parameter_set_idpps_pic_parameter_set_id ue(v)ue(v) pps_seq_parameter_set_idpps_seq_parameter_set_id u(4)u(4) mixed_nalu_types_in_pic_flagmixed_nalu_types_in_pic_flag u(1)u(1) pic_width_in_luma_samplespic_width_in_luma_samples ue(v)ue(v) pic_height_in_luma_samplespic_height_in_luma_samples ue(v)ue(v) pps_conformance_window_flagpps_conformance_window_flag u(1)u(1) if( pps_conformance_window_flag ) {if( pps_conformance_window_flag ) { pps_conf_win_left_offsetpps_conf_win_left_offset ue(v)ue(v) pps_conf_win_right_offsetpps_conf_win_right_offset ue(v)ue(v) pps_conf_win_top_offsetpps_conf_win_top_offset ue(v)ue(v) pps_conf_win_bottom_offsetpps_conf_win_bottom_offset ue(v)ue(v) }} scaling_window_explicit_signalling_flagscaling_window_explicit_signalling_flag u(1)u(1) if( scaling_window_explicit_signalling_flag ) {if( scaling_window_explicit_signalling_flag ) { scaling_win_left_offsetscaling_win_left_offset ue(v)ue(v) scaling_win_right_offsetscaling_win_right_offset ue(v)ue(v) scaling_win_top_offsetscaling_win_top_offset ue(v)ue(v) scaling_win_bottom_offsetscaling_win_bottom_offset ue(v)ue(v) }} output_flag_present_flagoutput_flag_present_flag u(1)u(1) subpic_id_mapping_in_pps_flagsubpic_id_mapping_in_pps_flag u(1)u(1) if( subpic_id_mapping_in_pps_flag ) {if( subpic_id_mapping_in_pps_flag ) { pps_num_subpics_minus1pps_num_subpics_minus1 ue(v)ue(v) pps_subpic_id_len_minus1pps_subpic_id_len_minus1 ue(v)ue(v) for( i = 0; i <= pps_num_subpic_minus1; i++ )for( i = 0; i <= pps_num_subpic_minus1; i++ ) pps_subpic_id[ i ]pps_subpic_id[ i ] u(v)u(v) }} no_pic_partition_flagno_pic_partition_flag u(1)u(1) if( !no_pic_partition_flag ) {if( !no_pic_partition_flag ) { pps_log2_ctu_size_minus5pps_log2_ctu_size_minus5 u(2)u(2) num_exp_tile_columns_minus1num_exp_tile_columns_minus1 ue(v)ue(v) num_exp_tile_rows_minus1num_exp_tile_rows_minus1 ue(v)ue(v) for( i = 0; i <= num_exp_tile_columns_minus1; i++ )for( i = 0; i <= num_exp_tile_columns_minus1; i++ ) tile_column_width_minus1[ i ]tile_column_width_minus1[ i ] ue(v)ue(v) for( i = 0; i <= num_exp_tile_rows_minus1; i++ )for( i = 0; i <= num_exp_tile_rows_minus1; i++ ) tile_row_height_minus1[ i ]tile_row_height_minus1[ i ] ue(v)ue(v) if( NumTilesInPic > 1 )if( NumTilesInPic > 1 ) rect_slice_flagrect_slice_flag u(1)u(1) if( rect_slice_flag )if( rect_slice_flag ) single_slice_per_subpic_flagsingle_slice_per_subpic_flag u(1)u(1) if( rect_slice_flag && !single_slice_per_subpic_flag ) {if( rect_slice_flag && !single_slice_per_subpic_flag ) { num_slices_in_pic_minus1num_slices_in_pic_minus1 ue(v)ue(v) if( num_slices_in_pic_minus1 > 0 )if( num_slices_in_pic_minus1 > 0 ) tile_idx_delta_present_flagtile_idx_delta_present_flag u(1)u(1) for( i = 0; i < num_slices_in_pic_minus1; i++ ) {for( i = 0; i < num_slices_in_pic_minus1; i++ ) { if( NumTileColumns > 1 )if( NumTileColumns > 1 ) slice_width_in_tiles_minus1[ i ]slice_width_in_tiles_minus1[ i ] ue(v)ue(v) if( NumTileRows > 1 && ( tile_idx_delta_present_flag | |
SliceTopLeftTileIdx[ i ] % NumTileColumns = = 0 ) )
if( NumTileRows > 1 && ( tile_idx_delta_present_flag | |
SliceTopLeftTileIdx[ i ] % NumTileColumns = = 0 ) )
slice_height_in_tiles_minus1[ i ]slice_height_in_tiles_minus1[ i ] ue(v)ue(v) if( slice_width_in_tiles_minus1[ i ] = = 0 &&
slice_height_in_tiles_minus1[ i ] = = 0 &&
RowHeight[ SliceTopLeftTileIdx[ i ] / NumTileColumns ] > 1 ) {
if( slice_width_in_tiles_minus1[ i ] = = 0 &&
slice_height_in_tiles_minus1[ i ] = = 0 &&
RowHeight[ SliceTopLeftTileIdx[ i ] / NumTileColumns ] > 1 ) {
num_exp_slices_in_tile[ i ]num_exp_slices_in_tile[ i ] ue(v)ue(v) for( j = 0; j < num_exp_slices_in_tile[ i ]; j++ )for( j = 0; j < num_exp_slices_in_tile[ i ]; j++ ) exp_slice_height_in_ctus_minus1[ i ][ j ]exp_slice_height_in_ctus_minus1[ i ][ j ] ue(v)ue(v) i += NumSlicesInTile[ i ] − 1i += NumSlicesInTile[ i ] − 1 }} if( tile_idx_delta_present_flag && i < num_slices_in_pic_minus1 )if( tile_idx_delta_present_flag && i < num_slices_in_pic_minus1 ) tile_idx_delta[ i ]tile_idx_delta[ i ] se(v)se(v) }} }} loop_filter_across_tiles_enabled_flagloop_filter_across_tiles_enabled_flag u(1)u(1) loop_filter_across_slices_enabled_flagloop_filter_across_slices_enabled_flag u(1)u(1) }} cabac_init_present_flagcabac_init_present_flag u(1)u(1) for( i = 0; i < 2; i++ )for( i = 0; i < 2; i++ ) num_ref_idx_default_active_minus1[ i ]num_ref_idx_default_active_minus1[ i ] ue(v)ue(v) rpl1_idx_present_flagrpl1_idx_present_flag u(1)u(1) init_qp_minus26init_qp_minus26 se(v)se(v) cu_qp_delta_enabled_flagcu_qp_delta_enabled_flag u(1)u(1) pps_chroma_tool_offsets_present_flagpps_chroma_tool_offsets_present_flag u(1)u(1) if( pps_chroma_tool_offsets_present_flag ) {if( pps_chroma_tool_offsets_present_flag ) { pps_cb_qp_offsetpps_cb_qp_offset se(v)se(v) pps_cr_qp_offsetpps_cr_qp_offset se(v)se(v) pps_joint_cbcr_qp_offset_present_flagpps_joint_cbcr_qp_offset_present_flag u(1)u(1) if( pps_joint_cbcr_qp_offset_present_flag )if( pps_joint_cbcr_qp_offset_present_flag ) pps_joint_cbcr_qp_offset_valuepps_joint_cbcr_qp_offset_value se(v)se(v) pps_slice_chroma_qp_offsets_present_flagpps_slice_chroma_qp_offsets_present_flag u(1)u(1) pps_cu_chroma_qp_offset_list_enabled_flagpps_cu_chroma_qp_offset_list_enabled_flag u(1)u(1) }} if( pps_cu_chroma_qp_offset_list_enabled_flag ) {if( pps_cu_chroma_qp_offset_list_enabled_flag ) { chroma_qp_offset_list_len_minus1chroma_qp_offset_list_len_minus1 ue(v)ue(v) for( i = 0; i <= chroma_qp_offset_list_len_minus1; i++ ) {for( i = 0; i <= chroma_qp_offset_list_len_minus1; i++ ) { cb_qp_offset_list[ i ]cb_qp_offset_list[ i ] se(v)se(v) cr_qp_offset_list[ i ]cr_qp_offset_list[ i ] se(v)se(v) if( pps_joint_cbcr_qp_offset_present_flag )if( pps_joint_cbcr_qp_offset_present_flag ) joint_cbcr_qp_offset_list[ i ]joint_cbcr_qp_offset_list[ i ] se(v)se(v) }} }} pps_weighted_pred_flagpps_weighted_pred_flag u(1)u(1) pps_weighted_bipred_flagpps_weighted_bipred_flag u(1)u(1) deblocking_filter_control_present_flagdeblocking_filter_control_present_flag u(1)u(1) if( deblocking_filter_control_present_flag ) {if( deblocking_filter_control_present_flag ) { deblocking_filter_override_enabled_flagdeblocking_filter_override_enabled_flag u(1)u(1) pps_deblocking_filter_disabled_flagpps_deblocking_filter_disabled_flag u(1)u(1) if( !pps_deblocking_filter_disabled_flag ) {if( !pps_deblocking_filter_disabled_flag ) { pps_beta_offset_div2pps_beta_offset_div2 se(v)se(v) pps_tc_offset_div2pps_tc_offset_div2 se(v)se(v) pps_cb_beta_offset_div2pps_cb_beta_offset_div2 se(v)se(v) pps_cb_tc_offset_div2pps_cb_tc_offset_div2 se(v)se(v) pps_cr_beta_offset_div2pps_cr_beta_offset_div2 se(v)se(v) pps_cr_tc_offset_div2pps_cr_tc_offset_div2 se(v)se(v) }} }} rpl_info_in_ph_flagrpl_info_in_ph_flag u(1)u(1) if( deblocking_filter_override_enabled_flag )if( deblocking_filter_override_enabled_flag ) dbf_info_in_ph_flagdbf_info_in_ph_flag u(1)u(1) sao_info_in_ph_flagsao_info_in_ph_flag u(1)u(1) alf_info_in_ph_flagalf_info_in_ph_flag u(1)u(1) if( ( pps_weighted_pred_flag | | pps_weighted_bipred_flag ) && rpl_info_in_ph_flag )if( ( pps_weighted_pred_flag | | pps_weighted_bipred_flag ) && rpl_info_in_ph_flag ) wp_info_in_ph_flagwp_info_in_ph_flag u(1)u(1) qp_delta_info_in_ph_flagqp_delta_info_in_ph_flag u(1)u(1) pps_ref_wraparound_enabled_flagpps_ref_wraparound_enabled_flag u(1)u(1) if( pps_ref_wraparound_enabled_flag )if( pps_ref_wraparound_enabled_flag ) pps_ref_wraparound_offsetpps_ref_wraparound_offset ue(v)ue(v) picture_header_extension_present_flagpicture_header_extension_present_flag u(1)u(1) slice_header_extension_present_flagslice_header_extension_present_flag u(1)u(1) pps_extension_flagpps_extension_flag u(1)u(1) if( pps_extension_flag )if( pps_extension_flag ) while( more_rbsp_data( ) )while( more_rbsp_data() ) pps_extension_data_flagpps_extension_data_flag u(1)u(1) rbsp_trailing_bits( )rbsp_trailing_bits( ) }}

К набору PPS могут быть добавлены дополнительные поля для сигнализации о глобальном движении. В случае глобального движения, о присутствии параметров глобального движения в последовательности изображений может быть сообщено в наборе SPS, а набор PPS может обращаться к этому набору SPS посредством идентификатора SPS ID. Набор SPS в некоторых способах декодирования может быть модифицирован для добавления поля с целью сигнализации о присутствии параметров глобального движения в этом наборе SPS. Например, к набору SPS может быть добавлено однобитовое поле. Если бит global_motion_present равен 1, можно ожидать присутствия параметров, относящихся к глобальному движению в наборе PPS. Если бит global_motion_present равен 0, полей относящихся к параметрам глобального движения может не быть в наборе PPS. Например, набор PPS, иллюстрируемый в Табл. 1, может быть расширен для включения в него поля global_motion_present, например, как показано в Табл. 2:Additional fields may be added to the PPS set to signal global motion. In the case of global motion, the presence of global motion parameters in the image sequence may be reported in an SPS set, and the PPS set may refer to this SPS set by an SPS ID. The SPS set in some decoding methods may be modified to add a field to signal the presence of global motion parameters in the SPS set. For example, a one-bit field may be added to the SPS set. If the global_motion_present bit is 1, global motion-related parameters can be expected to be present in the PPS set. If the global_motion_present bit is 0, fields related to global motion parameters may not be in the PPS set. For example, the PPS set illustrated in Table. 1 can be extended to include the global_motion_present field, for example as shown in Table. 2:

sequence_parameter_set_rbsp( ) {sequence_parameter_set_rbsp() { ДескрипторDescriptor sps_sequence_parameter_set_idsps_sequence_parameter_set_id ue(v)ue(v) .
.
.
.
.
.
global_motion_presentglobal_motion_present u(1)u(1) rbsp_trailing_bits( )rbsp_trailing_bits( ) }}

Аналогично, набор PPS может содержать поле pps_global_motion_parameters для кадра, например, как показано в Табл. 3:Likewise, the PPS set may contain a pps_global_motion_parameters field for the frame, for example as shown in Table 1. 3:

pic_parameter_set_rbsp( ) {pic_parameter_set_rbsp() { ДескрипторDescriptor pps_pic_parameter_set_idpps_pic_parameter_set_id ue(v)ue(v) pps_seq_parameter_set_idpps_seq_parameter_set_id ue(v)ue(v) .
.
.
.
.
.
pps_global_motion_parameters ( )pps_global_motion_parameters ( ) rbsp_trailing_bits( )rbsp_trailing_bits( ) }}

Более подробно, набор PPS может содержать поля, характеризующие параметры глобального движения с использованием векторов движения контрольных точек, например, как показано в Табл. 4:In more detail, the PPS set may contain fields characterizing global motion parameters using control point motion vectors, for example, as shown in Table. 4:

pps_global_motion_parameters ( ) {pps_global_motion_parameters() { DescriptorDescriptor motion_model_usedmotion_model_used u(2)u(2) mv0_xmv0_x se(v)se(v) mv1_ymv1_y se(v)se(v) if(motion_model_used == 1){if(motion_model_used == 1){ mv1_xmv1_x se(v)se(v) mv1_ymv1_y se(v)se(v) }} if(motion_model_used == 2){if(motion_model_used == 2){ mv2_xmv2_x se(v)se(v) mv2_ymv2_y se(v)se(v) }} }}

В качестве еще одного неограничивающего примера, Табл. 5 ниже может представлять пример набора SPS:As another non-limiting example, Tab. 5 below may represent an example of a SPS set:

seq_parameter_set_rbsp( ) {seq_parameter_set_rbsp() { ДескрипторDescriptor sps_seq_parameter_set_idsps_seq_parameter_set_id u(4)u(4) sps_video_parameter_set_idsps_video_parameter_set_id u(4)u(4) sps_max_sublayers_minus1sps_max_sublayers_minus1 u(3)u(3) sps_reserved_zero_4bitssps_reserved_zero_4bits u(4)u(4) sps_ptl_dpb_hrd_params_present_flagsps_ptl_dpb_hrd_params_present_flag u(1)u(1) if( sps_ptl_dpb_hrd_params_present_flag )if( sps_ptl_dpb_hrd_params_present_flag ) profile_tier_level( 1, sps_max_sublayers_minus1 )profile_tier_level( 1, sps_max_sublayers_minus1 ) gdr_enabled_flaggdr_enabled_flag u(1)u(1) chroma_format_idcchroma_format_idc u(2)u(2) if( chroma_format_idc = = 3 )if( chroma_format_idc = = 3 ) separate_colour_plane_flagseparate_colour_plane_flag u(1)u(1) res_change_in_clvs_allowed_flagres_change_in_clvs_allowed_flag u(1)u(1) pic_width_max_in_luma_samplespic_width_max_in_luma_samples ue(v)ue(v) pic_height_max_in_luma_samplespic_height_max_in_luma_samples ue(v)ue(v) sps_conformance_window_flagsps_conformance_window_flag u(1)u(1) if( sps_conformance_window_flag ) {if( sps_conformance_window_flag ) { sps_conf_win_left_offsetsps_conf_win_left_offset ue(v)ue(v) sps_conf_win_right_offsetsps_conf_win_right_offset ue(v)ue(v) sps_conf_win_top_offsetsps_conf_win_top_offset ue(v)ue(v) sps_conf_win_bottom_offsetsps_conf_win_bottom_offset ue(v)ue(v) }} sps_log2_ctu_size_minus5sps_log2_ctu_size_minus5 u(2)u(2) subpic_info_present_flagsubpic_info_present_flag u(1)u(1) if( subpic_info_present_flag ) {if( subpic_info_present_flag ) { sps_num_subpics_minus1sps_num_subpics_minus1 ue(v)ue(v) sps_independent_subpics_flagsps_independent_subpics_flag u(1)u(1) for( i = 0; sps_num_subpics_minus1 > 0 && i <= sps_num_subpics_minus1; i++ ) {for( i = 0; sps_num_subpics_minus1 > 0 && i <= sps_num_subpics_minus1; i++ ) { if( i > 0 && pic_width_max_in_luma_samples > CtbSizeY )if( i > 0 && pic_width_max_in_luma_samples > CtbSizeY ) subpic_ctu_top_left_x[ i ]subpic_ctu_top_left_x[ i ] u(v)u(v) if( i > 0 && pic_height_max_in_luma_samples > CtbSizeY ) {if( i > 0 && pic_height_max_in_luma_samples > CtbSizeY ) { subpic_ctu_top_left_y[ i ]subpic_ctu_top_left_y[ i ] u(v)u(v) if( i < sps_num_subpics_minus1 &&
pic_width_max_in_luma_samples > CtbSizeY )
if( i < sps_num_subpics_minus1 &&
pic_width_max_in_luma_samples > CtbSizeY )
subpic_width_minus1[ i ]subpic_width_minus1[ i ] u(v)u(v) if( i < sps_num_subpics_minus1 &&
pic_height_max_in_luma_samples > CtbSizeY )
if( i < sps_num_subpics_minus1 &&
pic_height_max_in_luma_samples > CtbSizeY )
subpic_height_minus1[ i ]subpic_height_minus1[ i ] u(v)u(v) if( !sps_independent_subpics_flag) {if( !sps_independent_subpics_flag) { subpic_treated_as_pic_flag[ i ]subpic_treated_as_pic_flag[ i ] u(1)u(1) loop_filter_across_subpic_enabled_flag[ i ]loop_filter_across_subpic_enabled_flag[ i ] u(1)u(1) }} }} sps_subpic_id_len_minus1sps_subpic_id_len_minus1 ue(v)ue(v) subpic_id_mapping_explicitly_signalled_flagsubpic_id_mapping_explicitly_signalled_flag u(1)u(1) if( subpic_id_mapping_explicitly_signalled_flag ) {if( subpic_id_mapping_explicitly_signalled_flag ) { subpic_id_mapping_in_sps_flagsubpic_id_mapping_in_sps_flag u(1)u(1) if( subpic_id_mapping_in_sps_flag )if( subpic_id_mapping_in_sps_flag ) for( i = 0; i <= sps_num_subpics_minus1; i++ )for( i = 0; i <= sps_num_subpics_minus1; i++ ) sps_subpic_id[ i ]sps_subpic_id[ i ] u(v)u(v) }} }} bit_depth_minus8bit_depth_minus8 ue(v)ue(v) sps_entropy_coding_sync_enabled_flagsps_entropy_coding_sync_enabled_flag u(1)u(1) if( sps_entropy_coding_sync_enabled_flag )if( sps_entropy_coding_sync_enabled_flag ) sps_wpp_entry_point_offsets_present_flagsps_wpp_entry_point_offsets_present_flag u(1)u(1) sps_weighted_pred_flagsps_weighted_pred_flag u(1)u(1) sps_weighted_bipred_flagsps_weighted_bipred_flag u(1)u(1) log2_max_pic_order_cnt_lsb_minus4log2_max_pic_order_cnt_lsb_minus4 u(4)u(4) sps_poc_msb_flagsps_poc_msb_flag u(1)u(1) if( sps_poc_msb_flag )if( sps_poc_msb_flag ) poc_msb_len_minus1poc_msb_len_minus1 ue(v)ue(v) num_extra_ph_bits_bytesnum_extra_ph_bits_bytes u(2)u(2) extra_ph_bits_struct( num_extra_ph_bits_bytes )extra_ph_bits_struct(num_extra_ph_bits_bytes) num_extra_sh_bits_bytesnum_extra_sh_bits_bytes u(2)u(2) extra_sh_bits_struct( num_extra_sh_bits_bytes )extra_sh_bits_struct(num_extra_sh_bits_bytes) if( sps_max_sublayers_minus1 > 0 )if( sps_max_sublayers_minus1 > 0 ) sps_sublayer_dpb_params_flagsps_sublayer_dpb_params_flag u(1)u(1) if( sps_ptl_dpb_hrd_params_present_flag )if( sps_ptl_dpb_hrd_params_present_flag ) dpb_parameters( sps_max_sublayers_minus1, sps_sublayer_dpb_params_flag )dpb_parameters( sps_max_sublayers_minus1, sps_sublayer_dpb_params_flag ) long_term_ref_pics_flaglong_term_ref_pics_flag u(1)u(1) inter_layer_ref_pics_present_flaginter_layer_ref_pics_present_flag u(1)u(1) sps_idr_rpl_present_flagsps_idr_rpl_present_flag u(1)u(1) rpl1_same_as_rpl0_flagrpl1_same_as_rpl0_flag u(1)u(1) for( i = 0; i < rpl1_same_as_rpl0_flag ? 1 : 2; i++ ) {for( i = 0; i < rpl1_same_as_rpl0_flag ? 1 : 2; i++ ) { num_ref_pic_lists_in_sps[ i ]num_ref_pic_lists_in_sps[ i ] ue(v)ue(v) for( j = 0; j < num_ref_pic_lists_in_sps[ i ]; j++)for( j = 0; j < num_ref_pic_lists_in_sps[ i ]; j++) ref_pic_list_struct( i, j )ref_pic_list_struct(i, j) }} if( ChromaArrayType != 0 )if( ChromaArrayType != 0 ) qtbtt_dual_tree_intra_flagqtbtt_dual_tree_intra_flag u(1)u(1) log2_min_luma_coding_block_size_minus2log2_min_luma_coding_block_size_minus2 ue(v)ue(v) partition_constraints_override_enabled_flagpartition_constraints_override_enabled_flag u(1)u(1) sps_log2_diff_min_qt_min_cb_intra_slice_lumasps_log2_diff_min_qt_min_cb_intra_slice_luma ue(v)ue(v) sps_max_mtt_hierarchy_depth_intra_slice_lumasps_max_mtt_hierarchy_depth_intra_slice_luma ue(v)ue(v) if( sps_max_mtt_hierarchy_depth_intra_slice_luma != 0 ) {if( sps_max_mtt_hierarchy_depth_intra_slice_luma != 0 ) { sps_log2_diff_max_bt_min_qt_intra_slice_lumasps_log2_diff_max_bt_min_qt_intra_slice_luma ue(v)ue(v) sps_log2_diff_max_tt_min_qt_intra_slice_lumasps_log2_diff_max_tt_min_qt_intra_slice_luma ue(v)ue(v) }} sps_log2_diff_min_qt_min_cb_inter_slicesps_log2_diff_min_qt_min_cb_inter_slice ue(v)ue(v) sps_max_mtt_hierarchy_depth_inter_slicesps_max_mtt_hierarchy_depth_inter_slice ue(v)ue(v) if( sps_max_mtt_hierarchy_depth_inter_slice != 0 ) {if( sps_max_mtt_hierarchy_depth_inter_slice != 0 ) { sps_log2_diff_max_bt_min_qt_inter_slicesps_log2_diff_max_bt_min_qt_inter_slice ue(v)ue(v) sps_log2_diff_max_tt_min_qt_inter_slicesps_log2_diff_max_tt_min_qt_inter_slice ue(v)ue(v) }} if( qtbtt_dual_tree_intra_flag ) {if( qtbtt_dual_tree_intra_flag ) { sps_log2_diff_min_qt_min_cb_intra_slice_chromasps_log2_diff_min_qt_min_cb_intra_slice_chroma ue(v)ue(v) sps_max_mtt_hierarchy_depth_intra_slice_chromasps_max_mtt_hierarchy_depth_intra_slice_chroma ue(v)ue(v) if( sps_max_mtt_hierarchy_depth_intra_slice_chroma != 0 ) {if( sps_max_mtt_hierarchy_depth_intra_slice_chroma != 0 ) { sps_log2_diff_max_bt_min_qt_intra_slice_chromasps_log2_diff_max_bt_min_qt_intra_slice_chroma ue(v)ue(v) sps_log2_diff_max_tt_min_qt_intra_slice_chromasps_log2_diff_max_tt_min_qt_intra_slice_chroma ue(v)ue(v) }} }} sps_max_luma_transform_size_64_flagsps_max_luma_transform_size_64_flag u(1)u(1) if( ChromaArrayType != 0 ) {if( ChromaArrayType != 0 ) { sps_joint_cbcr_enabled_flagsps_joint_cbcr_enabled_flag u(1)u(1) same_qp_table_for_chromasame_qp_table_for_chroma u(1)u(1) numQpTables = same_qp_table_for_chroma ? 1 : ( sps_joint_cbcr_enabled_flag ? 3 : 2 )numQpTables = same_qp_table_for_chroma ? 1: ( sps_joint_cbcr_enabled_flag ? 3: 2 ) for( i = 0; i < numQpTables; i++ ) {for( i = 0; i < numQpTables; i++ ) { qp_table_start_minus26[ i ]qp_table_start_minus26[ i ] se(v)se(v) num_points_in_qp_table_minus1[ i ]num_points_in_qp_table_minus1[ i ] ue(v)ue(v) for( j = 0; j <= num_points_in_qp_table_minus1[ i ]; j++ ) {for( j = 0; j <= num_points_in_qp_table_minus1[ i ]; j++ ) { delta_qp_in_val_minus1[ i ][ j ]delta_qp_in_val_minus1[ i ][ j ] ue(v)ue(v) delta_qp_diff_val[ i ][ j ]delta_qp_diff_val[ i ][ j ] ue(v)ue(v) }} }} }} sps_sao_enabled_flagsps_sao_enabled_flag u(1)u(1) sps_alf_enabled_flagsps_alf_enabled_flag u(1)u(1) if( sps_alf_enabled_flag && ChromaArrayType != 0 )if( sps_alf_enabled_flag && ChromaArrayType != 0 ) sps_ccalf_enabled_flagsps_ccalf_enabled_flag u(1)u(1) sps_transform_skip_enabled_flagsps_transform_skip_enabled_flag u(1)u(1) if( sps_transform_skip_enabled_flag ) {if( sps_transform_skip_enabled_flag ) { log2_transform_skip_max_size_minus2log2_transform_skip_max_size_minus2 ue(v)ue(v) sps_bdpcm_enabled_flagsps_bdpcm_enabled_flag u(1)u(1) }} sps_ref_wraparound_enabled_flagsps_ref_wraparound_enabled_flag u(1)u(1) sps_temporal_mvp_enabled_flagsps_temporal_mvp_enabled_flag u(1)u(1) if( sps_temporal_mvp_enabled_flag )if( sps_temporal_mvp_enabled_flag ) sps_sbtmvp_enabled_flagsps_sbtmvp_enabled_flag u(1)u(1) sps_amvr_enabled_flagsps_amvr_enabled_flag u(1)u(1) sps_bdof_enabled_flagsps_bdof_enabled_flag u(1)u(1) if( sps_bdof_enabled_flag )if( sps_bdof_enabled_flag ) sps_bdof_pic_present_flagsps_bdof_pic_present_flag u(1)u(1) sps_smvd_enabled_flagsps_smvd_enabled_flag u(1)u(1) sps_dmvr_enabled_flagsps_dmvr_enabled_flag u(1)u(1) if( sps_dmvr_enabled_flag)if( sps_dmvr_enabled_flag) sps_dmvr_pic_present_flagsps_dmvr_pic_present_flag u(1)u(1) sps_mmvd_enabled_flagsps_mmvd_enabled_flag u(1)u(1) sps_isp_enabled_flagsps_isp_enabled_flag u(1)u(1) sps_mrl_enabled_flagsps_mrl_enabled_flag u(1)u(1) sps_mip_enabled_flagsps_mip_enabled_flag u(1)u(1) if( ChromaArrayType != 0 )if( ChromaArrayType != 0 ) sps_cclm_enabled_flagsps_cclm_enabled_flag u(1)u(1) if( chroma_format_idc = = 1 ) {if( chroma_format_idc = = 1 ) { sps_chroma_horizontal_collocated_flagsps_chroma_horizontal_collocated_flag u(1)u(1) sps_chroma_vertical_collocated_flagsps_chroma_vertical_collocated_flag u(1)u(1) }} sps_mts_enabled_flagsps_mts_enabled_flag u(1)u(1) if( sps_mts_enabled_flag ) {if( sps_mts_enabled_flag ) { sps_explicit_mts_intra_enabled_flagsps_explicit_mts_intra_enabled_flag u(1)u(1) sps_explicit_mts_inter_enabled_flagsps_explicit_mts_inter_enabled_flag u(1)u(1) }} six_minus_max_num_merge_candsix_minus_max_num_merge_cand ue(v)ue(v) sps_sbt_enabled_flagsps_sbt_enabled_flag u(1)u(1) sps_affine_enabled_flagsps_affine_enabled_flag u(1)u(1) if( sps_affine_enabled_flag ) {if( sps_affine_enabled_flag ) { five_minus_max_num_subblock_merge_candfive_minus_max_num_subblock_merge_cand ue(v)ue(v) sps_affine_type_flagsps_affine_type_flag u(1)u(1) if( sps_amvr_enabled_flag )if( sps_amvr_enabled_flag ) sps_affine_amvr_enabled_flagsps_affine_amvr_enabled_flag u(1)u(1) sps_affine_prof_enabled_flagsps_affine_prof_enabled_flag u(1)u(1) if( sps_affine_prof_enabled_flag )if( sps_affine_prof_enabled_flag ) sps_prof_pic_present_flagsps_prof_pic_present_flag u(1)u(1) }} sps_palette_enabled_flagsps_palette_enabled_flag u(1)u(1) if( ChromaArrayType = = 3 && !sps_max_luma_transform_size_64_flag )if( ChromaArrayType = = 3 && !sps_max_luma_transform_size_64_flag ) sps_act_enabled_flagsps_act_enabled_flag u(1)u(1) if( sps_transform_skip_enabled_flag | | sps_palette_enabled_flag )if( sps_transform_skip_enabled_flag | | sps_palette_enabled_flag ) min_qp_prime_ts_minus4min_qp_prime_ts_minus4 ue(v)ue(v) sps_bcw_enabled_flagsps_bcw_enabled_flag u(1)u(1) sps_ibc_enabled_flagsps_ibc_enabled_flag u(1)u(1) if( sps_ibc_enabled_flag )if( sps_ibc_enabled_flag ) six_minus_max_num_ibc_merge_candsix_minus_max_num_ibc_merge_cand ue(v)ue(v) sps_ciip_enabled_flagsps_ciip_enabled_flag u(1)u(1) if( sps_mmvd_enabled_flag )if( sps_mmvd_enabled_flag ) sps_fpel_mmvd_enabled_flagsps_fpel_mmvd_enabled_flag u(1)u(1) if( MaxNumMergeCand >= 2 ) {if( MaxNumMergeCand >= 2 ) { sps_gpm_enabled_flagsps_gpm_enabled_flag u(1)u(1) if( sps_gpm_enabled_flag && MaxNumMergeCand >= 3 )if( sps_gpm_enabled_flag && MaxNumMergeCand >= 3 ) max_num_merge_cand_minus_max_num_gpm_candmax_num_merge_cand_minus_max_num_gpm_cand ue(v)ue(v) }} sps_lmcs_enabled_flagsps_lmcs_enabled_flag u(1)u(1) sps_lfnst_enabled_flagsps_lfnst_enabled_flag u(1)u(1) sps_ladf_enabled_flagsps_ladf_enabled_flag u(1)u(1) if( sps_ladf_enabled_flag ) {if( sps_ladf_enabled_flag ) { sps_num_ladf_intervals_minus2sps_num_ladf_intervals_minus2 u(2)u(2) sps_ladf_lowest_interval_qp_offsetsps_ladf_lowest_interval_qp_offset se(v)se(v) for( i = 0; i < sps_num_ladf_intervals_minus2 + 1; i++ ) {for( i = 0; i < sps_num_ladf_intervals_minus2 + 1; i++ ) { sps_ladf_qp_offset[ i ]sps_ladf_qp_offset[ i ] se(v)se(v) sps_ladf_delta_threshold_minus1[ i ]sps_ladf_delta_threshold_minus1[ i ] ue(v)ue(v) }} }} log2_parallel_merge_level_minus2log2_parallel_merge_level_minus2 ue(v)ue(v) sps_explicit_scaling_list_enabled_flagsps_explicit_scaling_list_enabled_flag u(1)u(1) sps_dep_quant_enabled_flagsps_dep_quant_enabled_flag u(1)u(1) if( !sps_dep_quant_enabled_flag )if( !sps_dep_quant_enabled_flag ) sps_sign_data_hiding_enabled_flagsps_sign_data_hiding_enabled_flag u(1)u(1) sps_virtual_boundaries_enabled_flagsps_virtual_boundaries_enabled_flag u(1)u(1) if( sps_virtual_boundaries_enabled_flag ) {if( sps_virtual_boundaries_enabled_flag ) { sps_virtual_boundaries_present_flagsps_virtual_boundaries_present_flag u(1)u(1) if( sps_virtual_boundaries_present_flag ) {if( sps_virtual_boundaries_present_flag ) { sps_num_ver_virtual_boundariessps_num_ver_virtual_boundaries u(2)u(2) for( i = 0; i < sps_num_ver_virtual_boundaries; i++ )for( i = 0; i < sps_num_ver_virtual_boundaries; i++ ) sps_virtual_boundaries_pos_x[ i ]sps_virtual_boundaries_pos_x[ i ] u(13)u(13) sps_num_hor_virtual_boundariessps_num_hor_virtual_boundaries u(2)u(2) for( i = 0; i < sps_num_hor_virtual_boundaries; i++ )for( i = 0; i < sps_num_hor_virtual_boundaries; i++ ) sps_virtual_boundaries_pos_y[ i ]sps_virtual_boundaries_pos_y[ i ] u(13)u(13) }} }} if( sps_ptl_dpb_hrd_params_present_flag ) {if( sps_ptl_dpb_hrd_params_present_flag ) { sps_general_hrd_params_present_flagsps_general_hrd_params_present_flag u(1)u(1) if( sps_general_hrd_params_present_flag ) {if( sps_general_hrd_params_present_flag ) { general_hrd_parameters( )general_hrd_parameters( ) if( sps_max_sublayers_minus1 > 0 )if( sps_max_sublayers_minus1 > 0 ) sps_sublayer_cpb_params_present_flagsps_sublayer_cpb_params_present_flag u(1)u(1) firstSubLayer = sps_sublayer_cpb_params_present_flag ? 0 :
sps_max_sublayers_minus1
firstSubLayer = sps_sublayer_cpb_params_present_flag ? 0 :
sps_max_sublayers_minus1
ols_hrd_parameters( firstSubLayer, sps_max_sublayers_minus1 )ols_hrd_parameters(firstSubLayer, sps_max_sublayers_minus1) }} }} field_seq_flagfield_seq_flag u(1)u(1) vui_parameters_present_flagvui_parameters_present_flag u(1)u(1) if( vui_parameters_present_flag )if( vui_parameters_present_flag ) vui_parameters( ) /* Specified in ITU-T H.SEI | ISO/IEC 23002-7 */vui_parameters( ) /* Specified in ITU-T H.SEI | ISO/IEC 23002-7 */ sps_extension_flagsps_extension_flag u(1)u(1) if( sps_extension_flag )if( sps_extension_flag ) while( more_rbsp_data( ) )while( more_rbsp_data() ) sps_extension_data_flagsps_extension_data_flag u(1)u(1) rbsp_trailing_bits( )rbsp_trailing_bits( ) }}

Таблица набора SPS, приведенная выше, может быть расширена, как описано выше, с целью включения в нее индикатора присутствия глобального движения, как это показано в Табл. 6:The SPS set table above can be expanded as described above to include a global traffic presence indicator as shown in Table 1. 6:

sequence_parameter_set_rbsp( ) {sequence_parameter_set_rbsp() { ДескрипторDescriptor sps_sequence_parameter_set_idsps_sequence_parameter_set_id ue(v)ue(v) .
.
.
.
.
.
global_motion_presentglobal_motion_present u(1)u(1) rbsp_trailing_bits( )rbsp_trailing_bits( ) }}

Дополнительные поля могут быть включены в набор SPS для отражения других индикаторов, как это описано в настоящей заявке.Additional fields may be included in the SPS set to reflect other indicators, as described herein.

В одном из вариантов, и по-прежнему обращаясь к Фиг. 2, флаг sps_affine_enabled_flag в наборе PPS и/или в наборе SPS может специфицировать, может ли компенсация движения на основе аффинной модели быть использована для межкадрового прогнозирования. Если флаг sps_affine_enabled_flag равен 0, синтаксис может быть ограничен таким образом, что никакая компенсация движения на основе аффинной модели не используется в последовательности видео с запаздывающим кодированием (code later video sequence (CLVS)), при этом в синтаксической единице кодирования последовательности CLVS могут не присутствовать флаг inter_affine_flag и флаг cu_affine_type_flag. В противном случае (флаг sps_affine_enabled_flag равен 1), в последовательности CLVS может быть использована компенсация движения на основе аффинной модели.In one embodiment, and still referring to FIG. 2, the sps_affine_enabled_flag in the PPS set and/or in the SPS set may specify whether affine model-based motion compensation can be used for inter-frame prediction. If sps_affine_enabled_flag is 0, the syntax may be restricted such that no affine motion compensation is used in the code later video sequence (CLVS), and CLVS sequences may not be present in the syntax unit of the encoding. inter_affine_flag and cu_affine_type_flag. Otherwise (sps_affine_enabled_flag is 1), affine model-based motion compensation may be used in the CLVS sequence.

Продолжая обращаться к Фиг. 2, флаг sps_affine_type_flag в наборе PPS и/или в наборе SPS может специфировать, может ли для межкадрового прогнозирования использоваться компенсация движения на основе 6-параметрической аффинной модели. Если флаг sps_affine_type_flag равен 0, синтаксис может быть ограничен таким образом, что никакая компенсация движения на основе 6-параметрической аффинной модели не используется в последовательности CLVS, и флаг cu_affine_type_flag может не присутствовать в синтаксисе единицы кодирования в последовательности CLVS. В противном случае (флаг sps_affine_type_flag равен 1), в последовательности CLVS может использоваться компенсация движения на основе 6-параметрической аффинной модели. Когда флаг sps_affine_type_flag не присутствует, его можно считать равным 0.Continuing with FIG. 2, the sps_affine_type_flag in the PPS set and/or in the SPS set may specify whether motion compensation based on a 6-parameter affine model can be used for inter-frame prediction. If sps_affine_type_flag is 0, the syntax may be restricted such that no 6-parameter affine model-based motion compensation is used in the CLVS sequence, and the cu_affine_type_flag may not be present in the coding unit syntax in the CLVS sequence. Otherwise (sps_affine_type_flag is 1), the CLVS sequence can use motion compensation based on a 6-parameter affine model. When sps_affine_type_flag is not present, it can be treated as 0.

По-прежнему обращаясь к Фиг. 2, векторы CPMV для поступательного движения могут быть сообщены в виде сигнализации в наборе PPS. Контрольные точки могут быть определены предварительно. Например, контрольная точка (вектор) MV 0 может относиться к верхнему левому углу изображения, точка (вектор) MV 1 может относиться к верхнему правому углу и точка (вектор) MV 3 может относиться к нижнему левому углу изображения. Табл. 4 иллюстрирует пример способа передачи в виде сигнализации данных векторов CPMV в зависимости от используемой модели движения.Still referring to Fig. 2, the CPMV vectors for translational motion may be signaled in the PPS set. Control points can be pre-defined. For example, reference point (vector) MV 0 may refer to the top left corner of the image, point (vector) MV 1 may refer to the top right corner, and point (vector) MV 3 may refer to the bottom left corner of the image. Table 4 illustrates an example of a method for signaling data of CPMV vectors depending on the motion model used.

В одном из примеров вариантов и по-прежнему обращаясь к Фиг. 2, параметр amvr_precision_idx массива, который может быть сообщен в виде сигнализации в единице кодирования, дереве кодирования или другом подобном объекте, может специфицировать разрешение AmvrShift разности векторов движения, что может быть определено в виде неисчерпывающего примера, как показано в Табл. 7, приведенной ниже. Индексы x0, y0 массива могут специфицировать позицию ( x0, y0 ) верхнего левого отсчета яркостной составляющей рассматриваемого блока кодирования относительно верхнего левого отсчета яркостной составляющей изображения; когда параметр amvr_precision_idx[ x0 ][ y0 ] не присутствует, его можно признать равным 0. Там, где флаг inter_affine_flag[ x0 ][ y0 ] равен 0, переменные MvdL0[ x0 ][ y0 ][ 0 ], MvdL0[ x0 ][ y0 ][ 1 ], MvdL1[ x0 ][ y0 ][ 0 ], MvdL1[ x0 ][ y0 ][ 1 ], представляющие разности векторов движения, соответствующих рассматриваемому блоку, могут быть модифицированы путем сдвига таких величин на AmvrShift, например, с использованием MvdL0[ x0 ][ y0 ][ 0 ] = MvdL0[ x0 ][ y0 ][ 0 ] << AmvrShift; MvdL0[ x0 ][ y0 ][ 1 ] = MvdL0[ x0 ][ y0 ][ 1 ] << AmvrShift; MvdL1[ x0 ][ y0 ][ 0 ] = MvdL1[ x0 ][ y0 ][ 0 ] << AmvrShift; и MvdL1[ x0 ][ y0 ][ 1 ] = MvdL1[ x0 ][ y0 ][ 1 ] << AmvrShift. Когда флаг inter_affine_flag[ x0 ][ y0 ] равен 1, переменные MvdCpL0[ x0 ][ y0 ][ 0 ][ 0 ], MvdCpL0[ x0 ][ y0 ][ 0 ][ 1 ], MvdCpL0[ x0 ][ y0 ][ 1 ][ 0 ], MvdCpL0[ x0 ][ y0 ][ 1 ][ 1 ], MvdCpL0[ x0 ][ y0 ][ 2 ][ 0 ] и MvdCpL0[ x0 ][ y0 ][ 2 ][ 1 ] могут быть модифицированы посредством сдвига, например, следующим образом: MvdCpL0[ x0 ][ y0 ][ 0 ][ 0 ] = MvdCpL0[ x0 ][ y0 ][ 0 ][ 0 ] << AmvrShift; MvdCpL1[ x0 ][ y0 ] [ 0 ][ 1 ] = MvdCpL1[ x0 ][ y0 ][ 0 ][ 1 ] << AmvrShift; MvdCpL0[ x0 ][ y0 ][ 1 ][ 0 ] = MvdCpL0[ x0 ][ y0 ][ 1 ][ 0 ] << AmvrShift; MvdCpL1[ x0 ][ y0 ] [ 1 ][ 1 ] = MvdCpL1[ x0 ][ y0 ][ 1 ][ 1 ] << AmvrShift; MvdCpL0[ x0 ][ y0 ][ 2 ][ 0 ] = MvdCpL0[ x0 ][ y0 ][ 2 ][ 0 ] << AmvrShift; и MvdCpL1[ x0 ][ y0 ] [ 2 ][ 1 ] = MvdCpL1[ x0 ][ y0 ][ 2 ][ 1 ] << AmvrShiftIn one example embodiment and still referring to FIG. 2, the amvr_precision_idx array parameter, which may be signaled in a coding unit, coding tree, or other similar entity, may specify the AmvrShift resolution of the motion vector difference, which may be specified by non-exhaustive example, as shown in Table. 7 below. The array indices x0, y0 may specify the position (x0, y0) of the top left luminance sample of the encoding block under consideration relative to the top left luminance sample of the image; when amvr_precision_idx[ x0 ][ y0 ] is not present, it can be set to 0. Where inter_affine_flag[ x0 ][ y0 ] is 0, the variables MvdL0[ x0 ][ y0 ][ 0 ], MvdL0[ x0 ][ y0 ][ 1 ], MvdL1[ x0 ][ y0 ][ 0 ], MvdL1[ x0 ][ y0 ][ 1 ], representing the differences in motion vectors corresponding to the block in question, can be modified by shifting such values by AmvrShift, for example, using MvdL0[ x0 ][ y0 ][ 0 ] = MvdL0[ x0 ][ y0 ][ 0 ] << AmvrShift; MvdL0[ x0 ][ y0 ][ 1 ] = MvdL0[ x0 ][ y0 ][ 1 ] << AmvrShift; MvdL1[ x0 ][ y0 ][ 0 ] = MvdL1[ x0 ][ y0 ][ 0 ] << AmvrShift; and MvdL1[ x0 ][ y0 ][ 1 ] = MvdL1[ x0 ][ y0 ][ 1 ] << AmvrShift. When the inter_affine_flag[ x0 ][ y0 ] is 1, the variables MvdCpL0[ x0 ][ y0 ][ 0 ][ 0 ], MvdCpL0[ x0 ][ y0 ][ 0 ][ 1 ], MvdCpL0[ x0 ][ y0 ][ 1 ][ 0 ], MvdCpL0[ x0 ][ y0 ][ 1 ][ 1 ], MvdCpL0[ x0 ][ y0 ][ 2 ][ 0 ] and MvdCpL0[ x0 ][ y0 ][ 2 ][ 1 ] can be modified by shift, for example, as follows: MvdCpL0[ x0 ][ y0 ][ 0 ][ 0 ] = MvdCpL0[ x0 ][ y0 ][ 0 ][ 0 ] << AmvrShift; MvdCpL1[ x0 ][ y0 ] [ 0 ][ 1 ] = MvdCpL1[ x0 ][ y0 ][ 0 ][ 1 ] << AmvrShift; MvdCpL0[ x0 ][ y0 ][ 1 ][ 0 ] = MvdCpL0[ x0 ][ y0 ][ 1 ][ 0 ] << AmvrShift; MvdCpL1[ x0 ][ y0 ] [ 1 ][ 1 ] = MvdCpL1[ x0 ][ y0 ][ 1 ][ 1 ] << AmvrShift; MvdCpL0[ x0 ][ y0 ][ 2 ][ 0 ] = MvdCpL0[ x0 ][ y0 ][ 2 ][ 0 ] << AmvrShift; and MvdCpL1[ x0 ][ y0 ] [ 2 ][ 1 ] = MvdCpL1[ x0 ][ y0 ][ 2 ][ 1 ] << AmvrShift

Далее обращаясь к Фиг. 2, глобальное движение может рассматриваться относительно ранее кодированного кадра. Когда присутствует только один набор параметров глобального движения, это движение может рассматриваться относительно кадра, непосредственно предшествующего текущему кадру.Next referring to FIG. 2, global motion can be considered relative to a previously encoded frame. When only one set of global motion parameters is present, that motion can be considered relative to the frame immediately preceding the current frame.

По-прежнему обращаясь к Фиг. 2, глобальное движение может представлять собой доминирующее движение в кадре. Многие блоки в кадре могут, вероятно, иметь движение, являющееся таким же или очень похожим на глобальное движение. Исключения могут представлять собой блоки с локальным движением. Поддерживая компенсацию движения блока, совместимую с глобальным движением, можно уменьшить сложность кодирующего устройства и сложность декодирующего устройства, а также можно повысить эффективность сжатия.Still referring to Fig. 2, global motion may represent the dominant motion in the frame. Many blocks in a frame may likely have motion that is the same or very similar to global motion. Exceptions may be blocks with local movement. By supporting block motion compensation compatible with global motion, the complexity of the encoder and the complexity of the decoder can be reduced, and the compression efficiency can be improved.

В некоторых вариантах реализации, и продолжая обращаться к Фиг. 2, если сигнализацию о глобальном движении передают в заголовке, таком как набор PPS или набор SPS, модель движения из набора SPS может быть применена ко всем блокам в изображении. Например, если глобальное движение использует поступательное движение (например, модель движения = 0), все единицы прогнозирования (PU) в кадре также могут быть ограничены поступательным движением (например, модель движения = 0). В этом случае, адаптивные модели движения могут не использоваться. Сигнализация об этом может также быть передана в наборе SPS с использованием флага use_gm_constrained_motion_model. Когда этот флаг устанавливают равным 1, адаптивные модели движения могут не использоваться в декодирующем устройстве, вместо этого, единственная модель движения может использоваться для всех единиц PU.In some embodiments, and continuing with FIG. 2, if the global motion signal is transmitted in a header such as a PPS set or an SPS set, the motion model from the SPS set can be applied to all blocks in the image. For example, if the global motion uses translational motion (eg, motion model = 0), all prediction units (PUs) in the frame may also be limited to translational motion (eg, motion model = 0). In this case, adaptive movement patterns may not be used. This may also be signaled in the SPS set using the use_gm_constrained_motion_model flag. When this flag is set to 1, adaptive motion models may not be used in the decoder; instead, a single motion model may be used for all PUs.

По-прежнему обращаясь к FIG. 2, в некоторых вариантах реализации предмета настоящего изобретения, сигнализация о движении может не изменяться от одной единицы PU к другой. Вместо этого может использоваться фиксированная модель движения, сигнализацию о которой передают один раз в наборе SPS. Такой подход может заменить глобальное движение. Использование фиксированной модели движения может быть специфицировано в кодирующем устройстве для уменьшения сложности; например, кодирующее устройство может быть ограничено моделью поступательного движения, которая может быть предпочтительной для маломощных устройств, таких как устройства с низкой вычислительной мощностью. Например, аффинные модели движения могут не использоваться в случаях, специфицированных в профиле кодирующего устройства. Такой пример может быть полезным для приложений реального времени, таких как видео конференции, инфраструктуры интернета вещей (IoT), камеры видеонаблюдения и другие подобные приложения. При использовании фиксированной модели движения может не быть необходимости вставлять избыточную сигнализацию в поток битов данных.Still referring to FIG. 2, in some embodiments of the subject matter of the present invention, the motion signaling may not change from one PU to another. Instead, a fixed motion pattern may be used and signaled once in the SPS set. This approach can replace the global movement. The use of a fixed motion model can be specified in the encoder to reduce complexity; for example, the encoder may be limited to a translational motion model, which may be preferable for low-power devices, such as those with low processing power. For example, affine motion models may not be used in the cases specified in the encoder profile. This example can be useful for real-time applications such as video conferencing, Internet of Things (IoT) infrastructures, CCTV cameras and other similar applications. When using a fixed motion model, there may be no need to insert redundant signaling into the data bit stream.

Далее обращаясь к Фиг. 2, предмет настоящего изобретения не ограничивается способами кодирования, использующими глобальное движение, а может быть применим к широкому спектру способов кодирования.Next referring to FIG. 2, the subject matter of the present invention is not limited to encoding methods using global motion, but can be applied to a wide range of encoding methods.

Как описано выше, и по-прежнему обращаясь к Фиг. 2, глобальное движение может представлять собой доминирующее движение в кадре. Многие блоки в кадре могут, вероятно, иметь движение, являющееся таким же или очень похожим на глобальное движение, за исключением блоков с локальным движением. Поддерживая компенсацию движения блока, совместимую с глобальным движением, можно уменьшить сложность кодирующего устройства и сложность декодирующего устройства, а также можно повысить эффективность сжатия.As described above, and still referring to FIG. 2, global motion may represent the dominant motion in the frame. Many blocks in a frame are likely to have motion that is the same or very similar to global motion, with the exception of blocks with local motion. By supporting block motion compensation compatible with global motion, the complexity of the encoder and the complexity of the decoder can be reduced, and the compression efficiency can be improved.

По-прежнему обращаясь к Фиг. 2, вместо ограничения движения каждого блока таким образом, чтобы оно соответствовало модели движения, например и без ограничений модели глобального движения, сигнализация о которой передана в заголовке, таком как набор PPS или набор SPS, модель движения, применяемая к каждому блоку в кадре, может быть ограничена аналогичными моделями движения. К аналогичным моделям движения могут относиться модели, имеющие такую же сложность или менее сложные. Например, в первом столбце Табл. 8 приведены следующие три модели в порядке возрастания сложности. Still referring to Fig. 2, instead of limiting the motion of each block to correspond to a motion model, such as and without restricting the global motion model signaled in a header such as a PPS set or SPS set, the motion model applied to each block in the frame may be limited to similar movement patterns. Similar movement patterns may include models that are of equal or less complexity. For example, in the first column of Table. Figure 8 shows the following three models in order of increasing complexity.

Модель глобально движения Global movement model Модель движения, используемая при кодировании с межкадровым прогнозированием Motion model used in inter-frame prediction coding Поступательное движение (MM = 0)Forward motion (MM = 0) Поступательное движениеForward movement 4-параметрическая аффинная модель (MM=1)4-parameter affine model (MM=1) Поступательная или 4-параметрическая аффинная модельTranslational or 4-parameter affine model 6-параметрическая аффинная модель (MM=2)6-parameter affine model (MM=2) Поступательная или 4-параметрическая аффинная модель или 6-параметрическая аффинная модельTranslational or 4-parameter affine model or 6-parameter affine model

По-прежнему обращаясь к Фиг. 2, второй столбец Табл. 8 показывает допустимые модели движения блока для использования при кодировании с межкадровым прогнозированием. Например, некоторые варианты реализации предмета настоящего изобретения могут позволить единице PU принять такую модель движения, индекс которой не больше индекса модели глобального движения.Still referring to Fig. 2, second column of Table. 8 shows valid block motion patterns for use in inter-frame prediction coding. For example, some embodiments of the subject matter of the present invention may allow the PU to adopt a motion model whose index is not greater than the index of the global motion model.

Продолжая обращаться к Фиг. 2, поддержание моделей движения, совместимых с глобальным движением, может позволить использовать контрольные точки глобального движения в качестве векторов-кандидатов движения для прогнозирования. Векторы CPMV глобального движения могут представлять движение, аналогичное движению единиц PU и могут предоставить хорошие векторы-кандидаты MV для прогнозирования.Continuing with FIG. 2, maintaining motion models compatible with global motion can allow global motion reference points to be used as candidate motion vectors for prediction. Global motion CPMV vectors can represent motion similar to that of PU units and can provide good candidate MV vectors for prediction.

На Фиг. 3 представлена логическая схема, иллюстрирующая пример варианта процедуры 300 применения модели движения, аналогичной модели глобального движения, о которой сообщено в виде сигнализации в заголовке.In FIG. 3 is a logic diagram illustrating an example of a procedure 300 for applying a motion model similar to the global motion model signaled in the header.

На этапе 305, декодирующее устройство принимает поток битов данных. Текущий блок может находиться в потоке битов данных, принимаемом декодирующим устройством. Поток битов данных может содержать, например, данные из потока битов, поступающего на вход декодирующего устройства, когда используется сжатие данных. Этот поток битов данных может содержать информацию, необходимую для декодирования видео. Процедура приема может содержать выделение и/или синтаксический анализ блока и ассоциированной сигнализационной информации из потока битов данных. В некоторых вариантах реализации, текущий блок может представлять собой единицу дерева кодирования (coding tree unit (CTU)), единицу кодирования (coding unit (CU)) и/или единицу прогнозирования (prediction unit (PU))..At step 305, the decoding device receives a stream of data bits. The current block may be in the data bit stream received by the decoding device. The data bitstream may comprise, for example, data from a bitstream input to a decoder when data compression is used. This stream of data bits may contain the information needed to decode the video. The receiving procedure may comprise extracting and/or parsing a block and associated signaling information from the data bit stream. In some implementations, the current block may be a coding tree unit (CTU), a coding unit (CU), and/or a prediction unit (PU).

На этапе 310, и по-прежнему обращаясь к Фиг. 3, может быть выделен заголовок, ассоциированный с текущим кадром и содержащий сигнал, характеризующий, что глобальное движение активизировано, и далее характеризующий параметры модели движения. На этапе 315, может быть декодирован текущий кадр. Процедура декодирования может содержать использование для каждого текущего блока модели движения, сложность которой не больше сложности модели глобального движения.At step 310, and still referring to FIG. 3, a header associated with the current frame and containing a signal characterizing that global motion is activated and further characterizing the parameters of the motion model can be highlighted. At step 315, the current frame may be decoded. The decoding procedure may involve using, for each current block, a motion model whose complexity is no greater than the complexity of the global motion model.

На Фиг. 4 представлена блок-схема системы, иллюстрирующая пример декодирующего устройства 400, способного декодировать поток битов данных с использованием применения модели движения, аналогичной модели глобального движения, сигнализация о которой передана в заголовке. Декодирующее устройство 400 может содержать процессор 404 энтропийного декодирующего устройства, процессор 408 для обратного квантования и обратного преобразования, фильтр удаления блочности 412, буфер 416 кадра, процессор 420 для компенсации движения и/или процессор 424 для внутрикадрового прогнозирования.In FIG. 4 is a system block diagram illustrating an example of a decoder 400 capable of decoding a stream of data bits using a motion model similar to the global motion model signaled in a header. The decoder 400 may include an entropy decoder processor 404, an inverse quantization and inverse transform processor 408, a deblocking filter 412, a frame buffer 416, a motion compensation processor 420, and/or an intra-frame prediction processor 424.

Во время работы, и по-прежнему обращаясь к Фиг. 4, поток 428 битов данных может быть принят декодирующим устройством 400 и передан на вход процессора 404 энтропийного декодирующего устройства, который может осуществлять энтропийное декодирование частей потока битов данных и превращать их в квантованные коэффициенты. Эти квантованные коэффициенты могут быть переданы в процессор 408 для обратного квантования и обратного преобразования, способный осуществить обратное квантование и обратное преобразование для получения сигнала остатка, который может быть суммирован с выходными данными процессора 420 для компенсации движения или процессора 424 для внутрикадрового прогнозирования в соответствии с режимом обработки сигнала. Выходные данные процессора 420 для компенсации движения и процессора 424 для внутрикадрового прогнозирования могут содержать прогноз блока на основе ранее декодированного блока. Сумма прогноза и остатка может быть обработана деблокирующим фильтром 412 и сохранена в буфере 416 кадра.While running, and still referring to FIG. 4, a data bit stream 428 may be received by decoder 400 and provided as an input to entropy decoder processor 404, which may entropy decode portions of the data bit stream and turn them into quantized coefficients. These quantized coefficients may be provided to an inverse quantization and inverse transform processor 408, capable of inverse quantizing and inverse transforming to produce a residual signal that can be summed with the output of the motion compensation processor 420 or the intra-prediction processor 424 according to the mode signal processing. The output of motion compensation processor 420 and intra-frame prediction processor 424 may include a block prediction based on a previously decoded block. The sum of the forecast and the remainder may be processed by the deblocking filter 412 and stored in a frame buffer 416.

На Фиг. 5 представлена логическая схема, иллюстрирующая пример варианта процедуры 500 кодирования видео, содержащей применение модели движения, аналогичной модели глобального движения, о которой сообщено в виде сигнализации в заголовке, согласно некоторым аспектам предмета настоящего изобретения, что может уменьшить сложность кодирования при увеличении эффективности сжатия. На этапе 505, кадр видео может быть подвергнут первоначальной сегментации на блоки, с использованием, например и без ограничений, схемы разбиения макроблоков в соответствии со структурой дерева, что может содержать разбиение кадра изображения на единицы CTU и единицы CU.In FIG. 5 is a logic diagram illustrating an example embodiment of a video encoding routine 500 comprising applying a motion model similar to the global motion model signaled in a header, in accordance with some aspects of the subject matter of the present invention, which can reduce encoding complexity while increasing compression efficiency. At step 505, the video frame may be initially segmented into blocks using, for example and without limitation, a macroblock partitioning scheme according to a tree structure, which may include partitioning the image frame into CTUs and CUs.

На этапе 510, и по-прежнему обращаясь к Фиг. 5, может быть определено глобальное движение для текущего блока или кадра. На этапе 515, блок может быть кодирован и вставлен в поток битов данных. Процедура кодирования может содержать передачу в заголовке сигнализации, что для всех блоков в кадре следует применять модель движения, аналогичную модели глобального движения. Процедура кодирования может содержать использование режимов межкадрового прогнозирования и внутрикадрового прогнозирования, например.At step 510, and still referring to FIG. 5, global motion for the current block or frame can be determined. At step 515, the block may be encoded and inserted into the data bit stream. The encoding procedure may include signaling in the header that a motion model similar to the global motion model should be applied to all blocks in the frame. The encoding procedure may comprise the use of inter-prediction and intra-prediction modes, for example.

На Фиг. 6 представлена блок-схема системы, иллюстрирующая пример варианта кодирующего устройства 600 для видео, способного применять модель движения, аналогичную модели глобального движения, сигнализация о которой передана в заголовке. Этот пример кодирующего устройства 600 для видео может принимать входное видео 604, которое может быть первоначально сегментировано и/или разбито в соответствии со схемой обработки видео, такой как схема разбиения макроблоков в структуре дерева (например, дерево квадратов плюс двоичное дерево). Пример схемы разбиения макроблоков в структуре дерева может содержать разбиение кадра изображения на большие элементы блоков, называемые единицами дерева кодирования (CTU). В некоторых вариантах, каждая единица CTU может быть далее разбита один или более раз на некоторое число субблоков, называемые единицами кодирования (CU). Конечный результат такого разбиения может содержать группу субблоков, которые могут называться единицами прогнозирования (PU). Также могут быть использованы единицы преобразования (transform unit (TU)).In FIG. 6 is a system block diagram illustrating an example embodiment of a video encoder 600 capable of employing a motion model similar to the global motion model signaled in a header. This example video encoder 600 may receive input video 604, which may be initially segmented and/or partitioned according to a video processing scheme, such as a macroblock partitioning scheme in a tree structure (eg, a tree of squares plus a binary tree). An example of a macroblock partitioning scheme in a tree structure may include partitioning an image frame into large block elements called coding tree units (CTUs). In some embodiments, each CTU may be further divided one or more times into a number of subunits, called coding units (CUs). The end result of such a partition may contain a group of sub-blocks, which may be called prediction units (PU). Transform units (TU) can also be used.

По-прежнему обращаясь к Фиг. 6, пример кодирующего устройства 600 для видео может содержать процессор 608 для внутрикадрового прогнозирования, процессор 612 для оценки/компенсации движения, который может также называться процессором межкадрового прогнозирования и который способен построить список векторов-кандидатов движения с использованием добавления одного вектора-кандидата глобального движения к списку векторов-кандидатов движения, процессор 616 для преобразования/квантования, процессор 620 для обратного квантования/обратного преобразования, внутриконтурный фильтр 624, буфер 628 декодированного изображения и/или процессор 632 для энтропийного кодирования. В этот процессор 632 для энтропийного кодирования могут быть введены параметры потока битов данных для вставки в выходной поток 636 битов данных.Still referring to Fig. 6, an example video encoder 600 may include an intra-prediction processor 608, a motion estimation/compensation processor 612, which may also be referred to as an inter-frame prediction processor, and that is capable of constructing a list of motion candidate vectors using the addition of one global motion candidate vector to motion vector candidate list, transform/quantization processor 616, inverse quantization/inverse transform processor 620, in-loop filter 624, decoded image buffer 628, and/or entropy encoding processor 632. This entropy encoding processor 632 may be provided with data bitstream parameters for insertion into the output data bit stream 636.

Во время работы и продолжая обращаться к Фиг. 6, для каждого блока кадра входного видео 604 может быть определено, следует ли обрабатывать этот блок, посредством внутрикадрового прогнозирования изображения или с использованием оценки/компенсации движения. Блок может быть передан процессору 608 для внутрикадрового прогнозирования или процессору 612 для оценки/компенсации движения. Если блок должен быть обработан посредством внутрикадрового прогнозирования, процессор 608 для внутрикадрового прогнозирования может осуществить обработку для передачи на выход предиктора. Если блок должен быть обработан посредством оценки/компенсации движения, процессор 612 для оценки/компенсации движения может осуществить обработку, содержащую построение списка векторов-кандидатов движения, включая добавление одного вектора-кандидата глобального движения к списку векторов-кандидатов движения, если это применимо.While operating and continuing to refer to FIG. 6, for each frame block of input video 604, it can be determined whether that block should be processed through intra-frame image prediction or using motion estimation/compensation. The block may be passed to processor 608 for intra-frame prediction or processor 612 for motion estimation/compensation. If a block is to be processed by intra-prediction, intra-prediction processor 608 may perform processing to output the predictor. If a block is to be processed by motion estimation/compensation, motion estimation/compensation processor 612 may perform processing comprising constructing a list of motion candidate vectors, including adding one global motion vector candidate to the motion candidate list, if applicable.

По-прежнему обращаясь к Фиг. 6, может быть сформирован остаток путем вычитания предиктора из входного видео. Остаток может быть принят процессором 616 для преобразования/квантования, который может осуществить процедуру преобразования (например, дискретное косинусное преобразование (discrete cosine transform (DCT))) для генерации коэффициентов, которые могут быть квантованы. Квантованные коэффициенты и какая-либо ассоциированная сигнализационная информация может быть передана процессору 632 для энтропийного кодирования с целью осуществления энтропийного кодирования и вставки результата в выходной поток 636 битов данных. Процессор 632 для энтропийного кодирования может поддерживать кодирование сигнализационной информации относительно кодирования текущего блока. В дополнение к этому, квантованные коэффициенты могут быть переданы процессору 620 для обратного квантования/обратного преобразования, который может воспроизводить пиксели, каковые могут быть комбинированы с предиктором и обработаны внутриконтурным фильтром 624, а выходные данные этого фильтра могут быть сохранены в буфере 628 декодированного изображения для использования процессором 612 для оценки/компенсации движения, способным строить список векторов-кандидатов движения, включая добавление одного вектора-кандидата глобального движения к списку векторов-кандидатов движения.Still referring to Fig. 6, a residual can be generated by subtracting the predictor from the input video. The remainder may be received by transform/quantize processor 616, which may perform a transform procedure (eg, discrete cosine transform (DCT)) to generate coefficients that can be quantized. The quantized coefficients and any associated signaling information may be provided to an entropy encoding processor 632 for the purpose of performing entropy encoding and inserting the result into the output data bit stream 636. Entropy encoding processor 632 may support encoding signaling information relative to the encoding of the current block. In addition, the quantized coefficients may be provided to an inverse quantization/inverse transform processor 620, which may render the pixels, which may be combined with the predictor and processed by an in-loop filter 624, and the output of this filter may be stored in a decoded image buffer 628 for used by the motion estimation/compensation processor 612, capable of constructing a list of candidate motion vectors, including adding one global motion candidate vector to the list of candidate motion vectors.

Далее обращаясь к Фиг. 6, хотя выше были описаны подробно несколько вариантов, возможны также другие модификации или дополнения. Например, в некоторых вариантах, текущие блоки могут представлять собой какие-либо симметричные блоки (8x8, 16x16, 32x32, 64x64, 128 x 128 и другие подобные блоки), равно как какие-либо асимметричные блоки (8x4, 16x8 и другие подобные блоки).Next referring to FIG. 6, although several embodiments have been described in detail above, other modifications or additions are also possible. For example, in some embodiments, the current blocks may be any symmetrical blocks (8x8, 16x16, 32x32, 64x64, 128 x 128, and other similar blocks), as well as any asymmetrical blocks (8x4, 16x8, and other similar blocks) .

В некоторых вариантах реализации, и по-прежнему обращаясь к Фиг. 6, может быть осуществлено дерево принятия решений со структурой дерево квадратов плюс двоичное дерево (quadtree plus binary decision tree (QTBT)). В структуре дерева QTBT, на уровне единицы дерева кодирования, параметры разбиения в структуре дерева QTBT могут быть определены динамически для адаптации к локальным характеристикам без передачи каких-либо издержек. После этого, на уровне единиц кодирования, структура дерева принятия решений с объединенным классификатором может исключать ненужные итерации и бороться с риском ложного прогнозирования. В некоторых вариантах реализации, режим обновления блоков кадра LTR (долговременная опора) может быть доступным в качестве дополнительной опции, доступной в каждом концевом узле («листе») дерева QTBT.In some embodiments, and still referring to FIG. 6, a decision tree with a quadtree plus binary decision tree (QTBT) structure can be implemented. In the QTBT tree structure, at the coding tree unit level, the partitioning parameters in the QTBT tree structure can be determined dynamically to adapt to local characteristics without transferring any overhead. Then, at the coding unit level, the decision tree structure with the joint classifier can eliminate unnecessary iterations and combat the risk of false prediction. In some implementations, an LTR (long-term reference) frame block update mode may be available as an additional option available at each leaf node of the QTBT tree.

В некоторых вариантах реализации, и по-прежнему обращаясь к Фиг. 6, дополнительные синтаксические элементы могут быть сообщены в виде сигнализации на уровнях иерархии потока битов данных. Например, флаг может быть активизирован для всей последовательности путем включения кодированного флага активизации для всей последовательности в набор параметров последовательности (SPS). Далее, может быть кодирован флаг единиц CTU на уровне единиц дерева кодирования (CTU).In some embodiments, and still referring to FIG. 6, additional syntactic elements may be signaled at levels of the data bitstream hierarchy. For example, the flag may be enabled for the entire sequence by including a coded enable flag for the entire sequence in the Sequence Parameter Set (SPS). Next, the CTU flag may be encoded at the coding tree unit (CTU) level.

Следует отметить, что любые один или более аспектов и вариантов, описываемых здесь, могут быть обычно реализованы с использованием компьютерной аппаратуры на основе цифровых электронных схем, интегральных схем, специализированных интегральных схем (application specific integrated circuit (ASIC)), программируемых пользователем вентильных матриц (field programmable gate array (FPGA)), встроенного программного обеспечения, загружаемого программного обеспечения и/или комбинаций этих компонентов, как это реализовано в одной или более машинах (например, одно или более компьютерных устройств, используемых в качестве пользовательских компьютерных устройств для электронной документации, одно или более серверных устройств, таких как сервер документов, и т.п.), запрограммированных в соответствии с положениями настоящей заявки, как должно быть понятно даже рядовым специалистам в компьютерной технике. Эти разнообразные аспекты или признаки могут содержать реализацию одной или более компьютерных программ и/или программного обеспечения, выполняемых и/или интерпретируемых в программируемой системе, содержащей по меньшей мере один программируемый процессор, который может быть процессором специального или общего назначения, соединенным для приема данных и команд от системы хранения информации и передачи данных и команд в эту систему хранения информации, по меньшей мере одно устройство ввода и по меньшей мере одно устройство вывода. Соответствующие коды программного обеспечения могут быть легко подготовлены квалифицированными программистами на основе положений настоящего изобретения, как это должно быть ясно даже рядовым специалистам в программировании. Аспекты и варианты реализации, обсуждаемые выше и использующие программное обеспечение и/или программные модули, могут также содержать соответствующую аппаратуру, способствующую осуществлению выполняемых машиной команд программного обеспечения и/или программных модулей.It should be noted that any one or more aspects and embodiments described herein can typically be implemented using computer hardware based on digital electronic circuits, integrated circuits, application specific integrated circuits (ASICs), field programmable gate arrays ( field programmable gate array (FPGA)), firmware, boot software, and/or combinations of these components, as implemented in one or more machines (for example, one or more computer devices used as user computer devices for electronic documentation, one or more server devices, such as a document server, etc.) programmed in accordance with the provisions of the present application, as will be understood even by ordinary computer specialists. These various aspects or features may comprise an implementation of one or more computer programs and/or software executed and/or interpreted on a programmable system comprising at least one programmable processor, which may be a special purpose or general purpose processor, coupled to receive data and commands from the information storage system and transmitting data and commands to the information storage system, at least one input device and at least one output device. Appropriate software codes can be readily prepared by skilled programmers based on the teachings of the present invention, as will be apparent to even those of ordinary skill in programming. Aspects and embodiments discussed above that utilize software and/or program modules may also include associated hardware to facilitate the implementation of machine-executable instructions from the software and/or program modules.

Такое программное обеспечение может представлять собой компьютерный программный продукт, использующий машиночитаемый носитель для хранения информации. Машиночитаемый носитель для хранения информации может представлять собой какой-либо носитель, способный сохранять и/или кодировать последовательность команд для выполнения машиной (например, компьютерным устройством) с целью осуществлять какой-либо один из способов и/или вариантов, описываемых здесь. К примерам такого машиночитаемого носителя относятся, не ограничиваясь, магнитный диск, оптический диск (например, CD, CD-R, DVD, DVD-R и т.п.), магнитооптический диск, постоянное запоминающее устройство (ПЗУ (“ROM”)), запоминающее устройство с произвольной выборкой (ЗУПВ (“RAM”), магнитная карточка, оптическая карточка, твердотельное запоминающее устройство, СППЗУ (EPROM), ЭСППЗУ (EEPROM), программируемые логические устройства (Programmable Logic Devices (PLDs)),и/или какие-либо комбинации перечисленных носителей. Термин «машиночитаемый носитель», как он используется здесь, предназначен обозначать как единственный носитель, так и набор физически раздельных носителей, таких как, например, набор компакт-дисков, либо один или более накопителей на жестких дисках в сочетании с компьютерным запоминающем устройством. Как используется здесь, термин «машиночитаемый носитель для хранения информации» не охватывает временные, энергозависимые формы передачи сигнала.Such software may be a computer program product that uses a machine-readable medium to store information. A computer-readable storage medium may be any medium capable of storing and/or encoding a sequence of instructions for execution by a machine (eg, a computer device) to perform any one of the methods and/or embodiments described herein. Examples of such machine-readable media include, but are not limited to, magnetic disk, optical disk (e.g., CD, CD-R, DVD, DVD-R, etc.), magneto-optical disk, read-only memory (ROM) , random access memory (RAM), magnetic card, optical card, solid state memory, EPROM, EEPROM, programmable logic devices (PLDs), and/or what - combinations of the above media. The term "machine readable media" as used herein is intended to mean both a single media and a collection of physically separate media, such as, for example, a set of compact discs, or one or more hard disk drives in combination with a computer storage device.As used herein, the term “computer readable storage medium” does not cover temporary, volatile forms of signal transmission.

Такое программное обеспечение может также содержать информацию (например, данные), передаваемую в виде сигнала данных на носителе данных, таком как волна несущей. Например, машиночитаемая информация может быть включена в виде несущего данные сигнала, реализованного в носителе данных, где этот сигнал кодирует последовательность команд или часть такой последовательности для выполнения машиной (например, компьютерным устройством) и какую-либо относящуюся к этому информацию (например, структуры данных и данные), побуждающие машину осуществлять какой-либо один из способов и/или вариантов, описываемых здесь.Such software may also contain information (eg, data) transmitted as a data signal on a storage medium, such as a carrier wave. For example, the machine-readable information may be included in the form of a data-carrying signal implemented in a storage medium, where the signal encodes a sequence of instructions or a portion of such a sequence for execution by a machine (e.g., a computer device) and any related information (e.g., data structures and data) causing the machine to perform any one of the methods and/or options described herein.

К примерам компьютерных устройств относятся, не ограничиваясь этим, устройство для чтения электронных книг, компьютерная рабочая станция, компьютер терминала, компьютер сервера, ручное устройство (например, планшетный компьютер, смартфон и т.п.), интернет-устройство, сетевой маршрутизатор, сетевой коммутатор, сетевой мост, какая-либо машина, способная выполнять последовательность команд, специфицирующих действия, которые должна выполнять машина, и какую-либо комбинацию перечисленных устройств. В одном из вариантов, компьютерное устройство может содержать киоск и/или входить в его состав.Examples of computer devices include, but are not limited to, an e-reader, a computer workstation, a terminal computer, a server computer, a handheld device (e.g., a tablet computer, a smartphone, etc.), an Internet device, a network router, a network a switch, a network bridge, any machine capable of executing a sequence of commands specifying the actions that the machine must perform, and any combination of these devices. In one embodiment, the computing device may comprise and/or be part of a kiosk.

На Фиг. 7 показано схематичное представление одного из вариантов компьютерного устройства в примере компьютерной системы 700, где могут быть выполнены набор команд, при выполнении которых система управления осуществляет какие-либо один или более аспектов и/или способов согласно настоящему изобретению. Здесь также подразумевается, что несколько компьютерных устройств могут быть использованы для осуществления специально конфигурированного набора команд, побуждающих одно или более компьютерных устройств реализовывать один или более аспектов и/или способов согласно настоящему изобретению. Компьютерная система 700 содержит процессор 704 и запоминающее устройство 708, осуществляющие связь один с другим и с другими компонентами по шине 712. Шина 712 может представлять собой какой-либо из нескольких типов структур шин, включая, не ограничиваясь этим, шину памяти, контроллер памяти, периферийную шину, локальную шину или какою-либо комбинацию этих типов шин с использованием какой-либо из разнообразных архитектур шин.In FIG. 7 is a schematic representation of one embodiment of a computer device in an example computer system 700 where a set of instructions may be executed that cause the control system to implement any one or more aspects and/or methods of the present invention. It is also understood here that multiple computer devices may be used to implement a specially configured set of instructions causing one or more computer devices to implement one or more aspects and/or methods of the present invention. Computer system 700 includes a processor 704 and a memory device 708 communicating with each other and with other components on a bus 712. The bus 712 may be any of several types of bus structures, including, but not limited to, a memory bus, a memory controller, a peripheral bus, a local bus, or some combination of these types of buses using any of a variety of bus architectures.

Запоминающее устройство 708 может содержать различные компоненты (например, машиночитаемые носители информации), включая, не ограничиваясь этим, компонент запоминающего устройства с произвольной выборкой, компонент постоянного запоминающего устройства и какие-либо комбинации этих компонентов. В одном из примеров, в запоминающем устройстве 708 может быть сохранена базовая система ввода/вывода 716 (BIOS), содержащая заданные процедуры, помогающие передавать информацию между элементами внутри компьютерной системы 700, например, при запуске системы. Запоминающее устройство 708 может также содержать (например, сохраненные на одном или более машиночитаемых носителях) команды (например, программное обеспечение) 720, реализующие какие-либо один или более аспектов и/или способов настоящего изобретения. В другом примере, запоминающее устройство 708 может далее содержать какое-либо количество программных модулей, включая, без ограничений, операционную систему, одну или более прикладных программ, другие программные модули, программные данные или какие-либо комбинации этих компонентов.Storage device 708 may include various components (eg, computer-readable media), including, but not limited to, a random access storage component, a read-only storage component, and any combinations of these components. In one example, a basic input/output system (BIOS) 716 may be stored in storage device 708, containing predefined routines that help transfer information between elements within computer system 700, such as during system startup. Storage device 708 may also contain (eg, stored on one or more computer-readable media) instructions (eg, software) 720 implementing any one or more aspects and/or methods of the present invention. In another example, storage device 708 may further contain any number of program modules, including, without limitation, an operating system, one or more application programs, other program modules, program data, or any combination of these components.

Компьютерная система 700 может также содержать устройство 724 для хранения информации. К примерам устройств для хранения информации (например, устройства 724 для хранения информации) относятся, без ограничений, накопитель на жестком диске, накопитель на магнитном диске, накопитель на оптическом диске в сочетании с оптическим носителем информации, твердотельное запоминающее устройство и какие-либо комбинации таких компонентов. Устройство 724 для хранения информации может быть соединено с шиной 712 посредством соответствующего интерфейса (не показан). К примерам интерфейсов относятся, не ограничиваясь этим, интерфейс SCSI, присоединение по усовершенствованной технологии (advanced technology attachment (ATA)), последовательный интерфейс serial ATA, универсальная последовательная шина (universal serial bus (USB)), IEEE 1394 (FIREWIRE) и какие-либо комбинации этих интерфейсов. В одном из примеров, устройство 724 для хранения информации (либо один или более компонентов этого устройства) может быть сопряжено с компьютерной системой 700 (например, через внешний соединитель порта (не показан)) так, что его можно отделять. В частности, устройство 724 для хранения информации и ассоциированный с ним машиночитаемый носитель 728 для хранения информации могут обеспечивать энергонезависимое и/или энергозависимое хранение машиночитаемых команд, структур данных, программных модулей и/или другие данные для компьютерной системы 700. В одном из примеров, программное обеспечение 720 может быть резидентно, полностью или частично, на машиночитаемом носителе 728. В другом примере, программное обеспечение 720 может быть резидентно, полностью или частично, в процессоре 704.The computer system 700 may also include a device 724 for storing information. Examples of storage devices (e.g., storage device 724) include, but are not limited to, a hard disk drive, a magnetic disk drive, an optical disk drive combined with optical storage media, a solid state storage device, and any combination of such components. The storage device 724 may be coupled to the bus 712 via an appropriate interface (not shown). Examples of interfaces include, but are not limited to, SCSI, advanced technology attachment (ATA), serial ATA, universal serial bus (USB), IEEE 1394 (FIREWIRE), and other or a combination of these interfaces. In one example, storage device 724 (or one or more components thereof) may be coupled to computer system 700 (eg, via an external port connector (not shown)) such that it can be separated. In particular, information storage device 724 and associated computer-readable storage medium 728 may provide non-volatile and/or volatile storage of computer-readable instructions, data structures, program modules, and/or other data for computer system 700. In one example, software software 720 may be resident, in whole or in part, on computer-readable medium 728. In another example, software 720 may be resident, in whole or in part, on processor 704.

Компьютерная система 700 может также содержать устройство 732 ввода. В одном из примеров, пользователь компьютерной системы 700 может вводить команды и/или другую информацию в компьютерную систему 700 через это устройство 732 ввода. К примерам устройств 732 ввода относятся, без ограничений, алфавитно-цифровое устройство ввода (например, клавиатура), указательное устройство, джойстик, игровая панель, устройство аудио ввода (например, микрофон, система с речевым ответом и т.п.), устройство управления курсором (например, мышь), сенсорная панель, оптический сканер, устройство захвата изображения (например, фотоаппарат, видеокамера), сенсорный экран или какая-либо комбинация перечисленных компонентов. Устройство 732 ввода может быть сопряжено с шиной 712 через какой-либо из разнообразных интерфейсов (не показан), включая, без ограничений, последовательный интерфейс, параллельный интерфейс, игровой порт, USB-интерфейс, интерфейс FIREWIRE, прямой интерфейс с шиной 712, и какие-либо комбинации перечисленных интерфейсов. Устройство 732 ввода может содержать интерфейс сенсорного экрана, который может быть частью дисплейного устройства 736 или отдельным от него устройством, что далее обсуждается ниже. Устройство 732 ввода может быть использовано в качестве пользовательского селекторного устройства для выбора одного или более графических представлений в графическом интерфейсе, как описано выше.The computer system 700 may also include an input device 732. In one example, a user of the computer system 700 may enter commands and/or other information into the computer system 700 through this input device 732. Examples of input devices 732 include, but are not limited to, an alphanumeric input device (e.g., a keyboard), a pointing device, a joystick, a game pad, an audio input device (e.g., a microphone, a voice response system, etc.), a control device a cursor (such as a mouse), a touchpad, an optical scanner, an image capture device (such as a camera, a video camera), a touch screen, or some combination of these components. Input device 732 may interface to bus 712 through any of a variety of interfaces (not shown), including, but not limited to, serial interface, parallel interface, game port, USB interface, FIREWIRE interface, direct interface to bus 712, and which - combinations of the listed interfaces. Input device 732 may include a touch screen interface, which may be part of display device 736 or separate from it, as further discussed below. Input device 732 may be used as a user selector device to select one or more graphical views in a graphical interface, as described above.

Пользователь может также вводить команды и/или другую информацию в компьютерную систему 700 через устройство 724 для хранения информация (например, накопитель на сменных дисках, флэшка и т.п.) и/или устройство 740 сетевого интерфейса. Устройство сетевого интерфейса, такое как устройство 740 сетевого интерфейса, может быть использовано для соединения компьютерной системы 700 с одной или несколькими из совокупности разнообразных сетей 744 и одним или несколькими удаленными устройствами 748, соединенными с этими сетями. К примерам устройств сетевых интерфейсов относятся, без ограничений, карта сетевого интерфейса, (например, карта интерфейса сети мобильной связи, карта локальной сети связи (LAN)), модем или какая-либо комбинация этих компонентов. К примерам сетей связи относятся, без ограничений, широкомасштабная сеть связи (например, Интернет, сеть предприятия), локальная сеть связи (например, сеть связи, ассоциированная с офисом, зданием, кампусом или другим относительно небольшим географическим пространством), сеть телефонной связи, сеть передачи данных, ассоциированная с провайдером телефонной/голосовой связи (например, провайдером мобильной связи и/или провайдером сети передачи данных и/или сети голосовой связи), прямое соединение между двумя компьютерными устройствами и какая-либо комбинация перечисленных сетей. Сеть связи, такая как сеть 744 связи может использовать проводную и/или беспроводную связь. В общем случае, может быть использована любая сетевая топология. Информация (например, данные, программное обеспечение 720 и т.п.) может быть передана компьютерной системе 700 через устройство 740 сетевого интерфейса.The user may also enter commands and/or other information into the computer system 700 through an information storage device 724 (eg, a removable disk drive, flash drive, etc.) and/or a network interface device 740. A network interface device, such as network interface device 740, may be used to connect computer system 700 to one or more of a plurality of diverse networks 744 and one or more remote devices 748 connected to these networks. Examples of network interface devices include, but are not limited to, a network interface card (eg, a mobile network interface card, a local area network (LAN) card), a modem, or any combination of these components. Examples of communications networks include, but are not limited to, a wide-area communications network (e.g., the Internet, an enterprise network), a local area communications network (e.g., a communications network associated with an office, building, campus, or other relatively small geographic area), a telephone network, a data communications associated with a telephone/voice provider (for example, a mobile communications provider and/or a data and/or voice network provider), a direct connection between two computer devices, and any combination of these networks. A communications network such as communications network 744 may use wired and/or wireless communications. In general, any network topology can be used. Information (eg, data, software 720, and the like) may be transmitted to computer system 700 through network interface device 740.

Компьютерная система 700 может далее содержать адаптер 752 видео дисплея для передачи представляемого изображения дисплейному устройству, такому как дисплейное устройство 736. К примерам дисплейных устройств относятся, без ограничений, жидкокристаллический дисплей (liquid crystal display (LCD)), электронно-лучевая трубка (cathode ray tube (CRT)), плазменный дисплей, дисплей на светодиодах (light emitting diode (LED)) и какая-либо комбинация таких дисплеев. Адаптер 752 дисплея и дисплейное устройство 736 могут быть использованы в сочетании с процессором 704 для создания графических представлений аспектов настоящего изобретения. В дополнение к дисплейному устройству компьютерная система 700 может содержать одно или более других периферийных устройств, включая, без ограничений, аудио громкоговоритель, принтер и какую-либо комбинацию этих устройств. Такие периферийные устройства вывода могут быть соединены с шиной 712 через периферийный интерфейс 756. К примерам периферийных интерфейсов относятся, без ограничений, последовательный порт, USB-соединение, соединение FIREWIRE, параллельное соединение и какие-либо комбинации перечисленных объектов.The computer system 700 may further include a video display adapter 752 for transmitting the displayed image to a display device, such as a display device 736. Examples of display devices include, but are not limited to, a liquid crystal display (LCD), a cathode ray tube (CRT), plasma display, light emitting diode (LED) display, and any combination of such displays. Display adapter 752 and display device 736 may be used in conjunction with processor 704 to create graphical representations of aspects of the present invention. In addition to the display device, the computer system 700 may include one or more other peripheral devices, including, but not limited to, an audio speaker, a printer, and any combination of these devices. Such output peripherals may be coupled to bus 712 via peripheral interface 756. Examples of peripheral interfaces include, but are not limited to, a serial port, a USB connection, a FIREWIRE connection, a parallel connection, and any combination thereof.

Выше приведено подробное описание иллюстративных вариантов настоящего изобретения. Могут быть внесены разнообразные модификации и дополнения без отклонения от смысла и объема изобретения. Признаки каждого из различных вариантов, описываемых выше, можно комбинировать с признаками других описываемые выше вариантов соответствующим образом с целью создания множества комбинаций признаков в ассоциированных новых вариантах. Кроме того, хотя выше описан ряд отдельных вариантов, все, что было здесь описано, является всего лишь иллюстрацией применения принципов настоящего изобретения. В дополнение к этому, хотя здесь конкретные способы могут быть иллюстрированы или описаны как осуществляемые в конкретном порядке, этот порядок можно сильно изменять даже в пределах рядовой квалификации для реализации вариантов, как это описано здесь. Соответственно, настоящее описание здесь только в качестве примеров и никак иначе не ограничивают объема настоящего изобретения.The above is a detailed description of illustrative embodiments of the present invention. Various modifications and additions may be made without deviating from the spirit and scope of the invention. Features of each of the various options described above can be combined with features of other options described above in an appropriate manner to create multiple combinations of features in associated new options. In addition, although a number of individual embodiments have been described above, what has been described herein is merely illustrative of the application of the principles of the present invention. In addition, although specific methods may be illustrated or described herein as being carried out in a particular order, that order can be varied greatly even within the ordinary skill of implementing the embodiments as described herein. Accordingly, the present description is provided by way of example only and is not otherwise intended to limit the scope of the present invention.

В приведенном выше описании такие фразы, как «по меньшей мере одно из» или «одно или более из» могут следовать после связанного (конъюнктивного) списка элементов или признаков. Термин «и/или» может также появляться в списке из двух или более элементов или признаков. Если это не опровергается в неявной или в явной форме контекстом, в котором такая фраза используется, это должно означать какой-либо из перечисленных в списке элементов или признаков индивидуально или в комбинации с какими-либо другими из этих элементов или признаков. Например, каждая из фраз «по меньшей мере одно из 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 description, phrases such as “at least one of” or “one or more of” may follow a conjunctive list of elements or features. The term "and/or" may also appear in a list of two or more elements or features. Unless refuted either implicitly or explicitly by the context in which such phrase is used, it must mean any of the listed elements or characteristics, individually or in combination with any other of those elements or characteristics. For example, each of the phrases “at least one of A and B”; "one or more of A and B" and "A and/or B" shall mean "A alone, B alone, or A and B together." A similar interpretation is also assumed for lists containing three or more objects. For example, each of the phrases "at least one of A, B and C"; "one or more of A, B and C"; and "A, B and/or C" must mean "A only, B only, C only, A and B together, A and C together, B and C together, or A and B and C together." In addition, the use of the term "based on..." above and in the claims should mean "based on at least part of...", so that a feature or element not mentioned above is also acceptable.

Описываемый здесь предмет настоящего изобретения может быть осуществлен в системах, аппаратуре, способах и/или изделиях в зависимости от желаемой конфигурации. Описанные выше варианты реализации не представляют все варианты реализации, согласованные с предметом настоящего изобретения, рассматриваемым здесь. Напротив, это просто некоторые примеры, согласованные с аспектами, относящимися к рассматриваемому предмету настоящего изобретения. Хотя выше были подробно описаны несколько вариантов, возможны также другие модификации или дополнения. В частности, могут быть созданы другие признаки и/или варианты в дополнение к тому, что описано здесь. Например, описанные выше варианты реализации могут быть направлены на различные комбинации и субкомбинации описываемых признаков и/или комбинации и субкомбинации нескольких других признаков, описываемых выше. В дополнение к этому, логические схемы, показываемые на прилагаемых чертежах и/или описываемые здесь, не обязательно требуют выполнения в показанном конкретном порядке или в последовательном порядке для достижения желаемых результатов. Другие варианты реализации могут быть в пределах объема следующей ниже Формулы изобретения.The subject matter of the present invention described herein may be implemented in systems, apparatus, methods and/or products depending on the desired configuration. The embodiments described above do not represent all embodiments consistent with the subject matter of the present invention contemplated herein. On the contrary, these are simply some examples consistent with aspects related to the subject matter of the present invention. Although several options have been described in detail above, other modifications or additions are also possible. In particular, other features and/or variants may be created in addition to what is described here. For example, the embodiments described above may be directed to various combinations and subcombinations of the described features and/or combinations and subcombinations of several other features described above. In addition, the logic circuits shown in the accompanying drawings and/or described herein do not necessarily require execution in the particular order shown or in a sequential order to achieve the desired results. Other embodiments may be within the scope of the following claims.

Claims (24)

1. Декодирующее устройство, содержащее схему для:1. A decoding device containing circuitry for: приема потока битов данных;receiving a stream of data bits; выделения, из потока битов, набора параметров, ассоциированного с кодированным изображением в потоке битов, причем набор параметров включает в себя сигнал, указывающий, что доступна глобальная модель движения, при этом глобальная модель движения содержит аффинную модель движения с использованием векторов движения контрольных точек; иextracting, from the bitstream, a set of parameters associated with the encoded image in the bitstream, wherein the set of parameters includes a signal indicating that a global motion model is available, wherein the global motion model comprises an affine motion model using reference point motion vectors; And декодирования кодированного изображения с использованием модели движения для каждого блока кодированного изображения, причем модель движения каждого блока имеет сложность меньшую или равную сложности глобальной модели движения, при этом сложность модели движения представляет собой функцию векторов движения, необходимых для декодирования блока.decoding the encoded image using a motion model for each block of the encoded image, the motion model of each block having a complexity less than or equal to the complexity of the global motion model, wherein the complexity of the motion model is a function of the motion vectors required to decode the block. 2. Декодирующее устройство по п. 1, в котором указанный набор параметров содержит набор параметров последовательности (SPS).2. The decoding device according to claim 1, wherein said parameter set comprises a sequence parameter set (SPS). 3. Декодирующее устройство по п. 1, в котором глобальная модель движения представляет собой 4-параметрическую аффинную модель движения.3. The decoding device according to claim 1, in which the global motion model is a 4-parameter affine motion model. 4. Декодирующее устройство по п. 1, в котором глобальная модель движения представляет собой 6-параметрическую аффинную модель движения.4. The decoding device according to claim 1, in which the global motion model is a 6-parameter affine motion model. 5. Декодирующее устройство по п. 1, в котором каждый блок представляет собой единицу дерева кодирования.5. The decoding device according to claim 1, in which each block represents a unit of the coding tree. 6. Декодирующее устройство по п. 1, в котором каждый текущий блок представляет собой единицу кодирования.6. The decoding device according to claim 1, wherein each current block represents a coding unit. 7. Декодирующее устройство по п. 1, в котором каждый блок в кодированном изображении декодируется с использованием модели поступательного движения.7. The decoding device of claim 1, wherein each block in the encoded image is decoded using a translational motion model. 8. Декодирующее устройство по п. 1, в котором каждый блок в первой области кодированного изображения декодируется с использованием глобальной модели движения и каждый блок во второй области кодированного изображения декодируется с использованием модели поступательного движения.8. The decoding apparatus of claim 1, wherein each block in the first encoded image region is decoded using a global motion model and each block in the second encoded image region is decoded using a translational motion model. 9. Декодирующее устройство по п. 1, в котором глобальная модель движения представляет собой 6-параметрическую аффинную модель движения, при этом каждый блок в первой области кодированного изображения декодируется с использованием глобальной модели движения и каждый блок во второй области кодированного изображения декодируется с использованием одной или обеих из 4-параметрической аффинной модели движения и модели поступательного движения.9. The decoding device of claim 1, wherein the global motion model is a 6-parameter affine motion model, wherein each block in the first encoded image region is decoded using the global motion model and each block in the second encoded image region is decoded using one or both of the 4-parameter affine motion model and the translational motion model. 10. Способ, содержащий этапы, на которых10. A method comprising the steps of принимают, с помощью декодера, поток битов;receive, using a decoder, a stream of bits; выделяют, с помощью декодера, из потока битов, набор параметров, ассоциированный с кодированным изображением в потоке битов, причем набор параметров включает в себя сигнал, указывающий, что доступна глобальная модель движения, при этом глобальная модель движения содержит аффинную модель движения с использованием векторов движения контрольных точек; иextracting, using a decoder, from the bit stream, a set of parameters associated with the encoded image in the bit stream, wherein the set of parameters includes a signal indicating that a global motion model is available, wherein the global motion model comprises an affine motion model using motion vectors control points; And декодируют, с помощью декодера, кодированное изображение с использованием модели движения для каждого блока, имеющей сложность, меньшую или равную сложности глобальной модели движения, при этом сложность модели движения представляет собой функцию векторов движения, необходимых для декодирования блока.decoding, using the decoder, the encoded image using a motion model for each block having a complexity less than or equal to the complexity of the global motion model, wherein the complexity of the motion model is a function of the motion vectors required to decode the block. 11. Способ по п. 10, в котором указанный набор параметров содержит набор параметров последовательности (SPS).11. The method of claim 10, wherein said parameter set comprises a sequence parameter set (SPS). 12. Способ по п. 10, в котором глобальная модель движения представляет собой 4-параметрическую аффинную модель движения.12. The method according to claim 10, in which the global motion model is a 4-parameter affine motion model. 13. Способ по п. 10, в котором глобальная модель движения представляет собой 6-параметрическую аффинную модель движения.13. The method according to claim 10, in which the global motion model is a 6-parameter affine motion model. 14. Способ по п. 10, в котором каждый блок представляет собой единицу дерева кодирования.14. The method of claim 10, wherein each block represents a unit of a coding tree. 15. Способ по п. 10, в котором каждый текущий блок представляет собой единицу кодирования.15. The method of claim 10, wherein each current block is a coding unit. 16. Способ по п. 10, в котором каждый блок в кодированном изображении декодируется с использованием модели поступательного движения.16. The method of claim 10, wherein each block in the encoded image is decoded using a translational motion model. 17. Способ по п. 10, в котором каждый блок в первой области кодированного изображения декодируется с использованием глобальной модели движения и каждый блок во второй области кодированного изображения декодируется с использованием модели поступательного движения.17. The method of claim 10, wherein each block in the first encoded image region is decoded using a global motion model and each block in the second encoded image region is decoded using a translational motion model. 18. Способ по п. 10, в котором глобальная модель движения представляет собой 6-параметрическую аффинную модель движения, при этом каждый блок в первой области кодированного изображения декодируется с использованием глобальной модели движения и каждый блок во второй области кодированного изображения декодируется с использованием одной или обеих из 4-параметрической аффинной модели движения и модели поступательного движения.18. The method of claim 10, wherein the global motion model is a 6-parameter affine motion model, wherein each block in the first encoded image region is decoded using the global motion model and each block in the second encoded image region is decoded using one or both from the 4-parameter affine motion model and the translational motion model.
RU2021134209A 2019-04-25 2020-04-24 Motion vector limited by global motion in interframe prediction RU2806442C2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US62/838,563 2019-04-25

Publications (2)

Publication Number Publication Date
RU2021134209A RU2021134209A (en) 2023-05-25
RU2806442C2 true RU2806442C2 (en) 2023-11-01

Family

ID=

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008133455A1 (en) * 2007-04-25 2008-11-06 Lg Electronics Inc. A method and an apparatus for decoding/encoding a video signal
WO2017087751A1 (en) * 2015-11-20 2017-05-26 Mediatek Inc. Method and apparatus for global motion compensation in video coding system
WO2018097589A1 (en) * 2016-11-22 2018-05-31 한국전자통신연구원 Image encoding/decoding method and device, and recording medium having bitstream stored thereon
RU2671307C1 (en) * 2015-03-10 2018-10-30 Хуавэй Текнолоджиз Ко., Лтд. Method for predicting images and related device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008133455A1 (en) * 2007-04-25 2008-11-06 Lg Electronics Inc. A method and an apparatus for decoding/encoding a video signal
RU2671307C1 (en) * 2015-03-10 2018-10-30 Хуавэй Текнолоджиз Ко., Лтд. Method for predicting images and related device
WO2017087751A1 (en) * 2015-11-20 2017-05-26 Mediatek Inc. Method and apparatus for global motion compensation in video coding system
WO2018097589A1 (en) * 2016-11-22 2018-05-31 한국전자통신연구원 Image encoding/decoding method and device, and recording medium having bitstream stored thereon

Similar Documents

Publication Publication Date Title
US11785252B2 (en) Global motion constrained motion vector in inter prediction
US11792417B2 (en) Global motion for merge mode candidates in inter prediction
US11800137B2 (en) Efficient coding of global motion vectors
US11785238B2 (en) Candidates in frames with global motion
US11812054B2 (en) Signaling of global motion vector in picture header
US11818390B2 (en) Decoder for coded pictures having regions with common motion models
US20240048757A1 (en) Adaptive motion vector prediction candidate in frames with global motion
CN114175656A (en) Merging candidate reordering based on global motion vector
US11985343B2 (en) Global motion models for motion vector inter prediction
RU2806442C2 (en) Motion vector limited by global motion in interframe prediction
RU2808638C2 (en) Global motion vector signal in image title
RU2806444C2 (en) Efficient encoding of global motion vectors