Adaptive motion vector prediction candidate in frames with global motion
Patent Information
- Application Number
- CN202610895402.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2019-04-25
- Filing Date
- 2020-04-24
- Publication Date
- 2026-09-22
AI Technical Summary
随之而来的后果可能包括:由于没有充足的信息来准确地重构原始视频,因此经解压的视频质量可能低于原始未压缩的视频质量
Smart Images

Figure CN122802691A_ABST
Abstract
Description
Cross-references to related applications
[0001] This application claims the benefit of priority to U.S. Provisional Patent Application No. 62 / 838,615, filed April 25, 2019, entitled “ADAPTIVE MOTION VECTORPREDICTION CANDIDATES IN FRAMES WITH GLOBAL MOTION”, which is incorporated herein by reference in its entirety.
[0002] Information related to divisional application This case is a divisional application. The parent application of this divisional application is the invention patent application filed on April 24, 2020, with application number 202080045933.6 and invention title "Adaptive Motion Vector Prediction Candidate in a Frame with Global Motion". Technical Field
[0003] This invention generally relates to the field of video compression. In particular, this invention addresses adaptive motion vector prediction candidates in frames with global motion. Background Technology
[0004] A video codec can include electronic circuitry or software that compresses or decompresses digital video. A video codec can convert uncompressed video to a compressed format, or decompress compressed video back to an uncompressed format. In the case of video compression, the device that compresses the video (and / or performs some of its functions) is generally referred to as an encoder, and the device that decompresses the video (and / or performs some of its functions) is referred to as a decoder.
[0005] The compressed data format may conform to standard video compression specifications. Compression may be lossy because compressed video lacks certain information present in the source video. The consequences may include: the quality of the decompressed video may be lower than the original uncompressed video because there is insufficient information to accurately reconstruct the original video.
[0006] There can be complex relationships between video quality, the amount of data used to represent the video (e.g., determined by 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., time delay), and other factors.
[0007] Motion compensation can include methods that predict video frames or portions of video frames by taking into account the motion of objects in the camera and / or video, based on a given reference frame—such as a previous frame and / or a future frame. This method can be employed in encoding and decoding video data for video compression, for example, in encoding and decoding using the Moving Picture Experts Group (MPEG)-2 (also known as High-Level Video Coding (AVC) and H.264) standards. Motion compensation can describe an image based on the transformation from a reference image to the current image. The reference image can be a picture that precedes the current image in time, or a future photograph compared to the current image. Compression efficiency can be improved when images can be accurately synthesized from previously transmitted and / or stored images. Summary of the Invention
[0008] In one aspect, a decoder includes circuitry configured to: receive a bitstream; use the bitstream for the current block to determine global motion vector candidates adopted by neighboring blocks; construct a motion vector candidate list, including adding the determined global motion vector candidates to the motion vector candidate list; and reconstruct pixel data of the current block using the motion vector candidate list.
[0009] In another aspect, one method includes: receiving a bitstream by a decoder; using the bitstream for the current block to determine global motion vector candidates adopted by neighboring blocks; constructing a motion vector candidate list, wherein constructing the motion vector candidate list further includes adding the determined global motion vector candidates to the motion vector candidate list; and reconstructing pixel data of the current block using the motion vector candidate list.
[0010] Details of one or more variations of the subject matter described herein are set forth in the accompanying drawings and the following description. Other features and advantages of the subject matter described herein will be apparent from the description and drawings, as well as from the claims. Attached Figure Description
[0011] For the purpose of illustrating the invention, the accompanying drawings show aspects of one or more embodiments of the invention. However, it should be understood that the invention is not limited to the precise arrangements and means shown in the drawings, wherein:
[0012] Figure 1 This is a diagram illustrating the motion vectors of an example frame with global and local motion;
[0013] Figure 2 The illustration shows three example motion models that can be used for global motion, including the index values (0, 1, or 2) of the three example motion models.
[0014] Figure 3 This is a flowchart illustrating the process of implementing some examples based on the current topic;
[0015] Figure 4 This is a system block diagram of an example decoder based on some example implementations of the current topic;
[0016] Figure 5 This is a flowchart illustrating the process of implementing some examples based on the current topic;
[0017] Figure 6 This is a system block diagram of an example encoder based on some example implementations of the current topic; and
[0018] Figure 7 It is a block diagram of a computing system that can be used to implement any or more of the methods disclosed herein and any one or more of them.
[0019] The accompanying drawings are not necessarily drawn to scale and may be illustrated using dashed lines, diagrams, and partial views. In some cases, details that are not essential for understanding the implementation or that make other details difficult to perceive may have been omitted. The same reference numerals in the various figures denote the same elements. Detailed Implementation
[0020] Global motion in video refers to motion that occurs throughout the entire frame. Global motion may be caused by camera movement; for example, camera panning and zooming produce motion within a frame that typically affects the entire frame. Motion present in certain parts of a video can be called local motion. Local motion may be caused by moving objects in the scene—such as, but not limited to, objects moving from left to right within the scene. Videos may contain a combination of local and global motion. Some implementations of the current topic provide efficient methods for passing global motion to the decoder and using global motion vectors to improve compression efficiency.
[0021] Figure 1 This is a diagram illustrating the motion vectors of an example frame 100 with global and local motion. Frame 100 may include multiple pixel blocks illustrated as squares and motion vectors associated with the multiple pixel blocks illustrated as arrows. Squares with arrows pointing to the upper left (e.g., pixel blocks) indicate that the motion in these blocks is considered global motion, and squares with arrows pointing in other directions (indicated by 104) indicate that the motion in these blocks is considered local motion. Figure 1In the illustrated examples, many blocks share the same global motion. Global motion is signaled in headers such as Picture Parameter Sets (PPS) and / or Sequence Parameter Sets (SPS), and using this signaled global motion reduces the motion vector information required for blocks and enables improved prediction. Although the examples described below for illustrative purposes relate to determining 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 a frame and / or picture, including: regions consisting of multiple blocks; regions defined by any geometry, such as, but not limited to, regions defined by geometric and / or exponential encoding, where one or more lines and / or curves defining the shape may be angled and / or curved; and / or the entire frame and / or picture. Although signaling is described herein as being performed at the frame level and / or within the frame's header and / or parameter set, signaling can alternatively or additionally be performed at the sub-picture level, where a sub-picture may include any region of a frame and / or picture as described above.
[0022] As an example, still refer to Figure 1 Simple translational motion can be described using a motion vector (MV) with two components, MVx and MVy, which describes the displacement of blocks and / or pixels in the current frame. More complex motions such as rotation, scaling, and warping can be described using affine motion vectors. The "affine motion vector" used in this disclosure describes a uniform displacement of a set of pixels or points in a video picture and / or image, such as the set of pixels illustrated to show an object moving in view of the video during motion but without changing its appearance. Some video encoding and / or decoding methods can use a four-parameter affine model or a six-parameter affine model for motion compensation in inter-frame picture encoding.
[0023] Further reference Figure 1 For example, six-parameter affine motion can be described as:
[0024] x' = ax + by + c
[0025] y' = dx + ey + f
[0026] As another example, four-parameter affine motion can be described as:
[0027] x' = ax + by + c
[0028] y' = -bx + ay + f
[0029] Where (x, y) and (x', y') are the pixel positions in the current image and the reference image, respectively; a, b, c, d, e, and f are the parameters of the affine motion model.
[0030] Still refer to Figure 1 The parameters used to describe affine motion can be signaled to the decoder for application of affine motion compensation. In some methods, motion parameters can be explicitly signaled or derived from translational control point motion vectors (CPMVs). Affine motion parameters for a four-parameter affine motion model can be derived using two control point motion vectors (CPMVs), and parameters for a six-parameter motion model can be obtained using three control point translational motion vectors (CPMVs). Signaling affine motion parameters using control point motion vectors allows for the use of efficient motion vector encoding methods.
[0031] In the implementation method, continue to refer to Figure 1 In PPS and / or SPS, the `sps_affine_enabled_flag` specifies whether affine-based motion compensation can be used for inter-frame prediction. If `sps_affine_enabled_flag` equals 0, the syntax can be constrained so that affine-based motion compensation is not used in the post-coded video sequence (CLVS), and `inter_affine_flag` and `cu_affine_type_flag` are not present in the CLVS coding unit syntax. Otherwise (`sps_affine_enabled_flag` equals 1), affine-based motion compensation can be used in CLVS.
[0032] Further reference Figure 1 The `sps_affine_type_flag` in PPS and / or SPS specifies whether motion compensation based on a six-parameter affine model can be used for inter-frame prediction. If `sps_affine_type_flag` equals 0, the syntax can be constrained so that motion compensation based on a six-parameter affine model is not used in CLVS, and `cu_affine_type_flag` will not exist in the coding unit syntax of CLVS. Otherwise (`sps_affine_type_flag` equals 1), motion compensation based on a six-parameter affine model can be used in CLVS. When it does not exist, it can be inferred that the value of `sps_affine_type_flag` is equal to 0.
[0033] Continue to refer to Figure 1Processing the MV prediction candidate list can be a step performed at the decoder in some compression methods that utilize motion compensation. Some previous methods have defined the use of spatial motion vector candidates and temporal motion vector candidates. Global motion, signaled in a header such as SPS or PPS, can indicate the presence of global motion in the video. Such global motion can be expected to be common to most blocks in a frame. Motion vector coding can be improved and the bit rate reduced by using global motion as prediction candidates. Candidate MVs added to the MV prediction list can be selected based on the motion model used to represent global motion and / or the motion model used in inter-frame coding.
[0034] Still refer to Figure 1 There are several implementations that describe global motion using one or more control point motion vectors (CPMVs) depending on the motion model used. Therefore, depending on the motion model used, one to three control point motion vectors may be available and can be used as candidates for prediction. In some implementations, all available CPMVs can be added to the list as prediction candidates. Adding all available CPMVs generally increases the likelihood of finding good motion vector predictions and improves compression efficiency. Table 1:
[0035]
[0036] Continue to refer to Figure 1 Processing the motion vector (MV) prediction candidate list is a step in performing motion compensation at the decoder.
[0037] Still refer to Figure 1 Global motion, signaled in headers such as SPS, can indicate the presence of global motion in the video. This global motion is likely to exist in many blocks within a frame. Therefore, a given block is likely to have motion similar to the global motion. Motion vector coding can be improved and bitrate reduced by using global motion as prediction candidates. Candidate MVs can be added to the MV prediction list, and can be selected based on the motion model used to represent the global motion and the motion model used in inter-frame coding.
[0038] Continue to refer to Figure 1 Depending on the motion model used, one or more control point motion vectors (CPMVs) can be used to describe the global motion. Therefore, depending on the motion model used, one to three control point motion vectors may be available and can be used as candidates for prediction. The MV prediction candidate list can be reduced by selectively adding a CPMV to the prediction candidate list. Reducing the list size can decrease computational complexity and improve compression efficiency.
[0039] In some implementations, the following is still referenced Figure 1The selected CPMV as candidates can be based on a predefined mapping, such as the mapping shown in Table 3 below:
[0040]
[0041] Still refer to Figure 1 Selective prediction candidates from global motion can be used by signaling in the image parameter set of the sequence parameter set, thereby reducing encoding and decoding complexity.
[0042] Further reference Figure 1 Since blocks are likely to have motions similar to global motion, adding global motion vectors as first candidates to the prediction list can reduce the number of prediction candidates used in signaling and the bits required to encode motion vector differences.
[0043] Continue to refer to Figure 1 Processing the candidate list for motion vector (MV) prediction can be a step in motion compensation performed at the decoder.
[0044] Still refer to Figure 1 Global motion, signaled in headers such as SPS, can indicate the presence of global motion in the video. This global motion is likely to exist in many blocks within a frame. Therefore, a given block is likely to have motion similar to the global motion. Motion vector coding can be improved and the bit rate reduced by using global motion as prediction candidates.
[0045] Further reference Figure 1 For example, candidate MVs to be added to the MV prediction list can be adaptively selected based on which control point motion vector (CPMV) is selected as a prediction candidate in an adjacent block (e.g., prediction unit (PU)).
[0046] Still refer to Figure 1 As another example, if a neighboring PU uses a specific CPMV as the predicted MV for a particular control point, that CPMV can be added to the MV candidate list. If a neighboring PU uses more than one CPMV as the predicted MV (e.g., the left PU uses CPMV0 and the top PU uses CPMV1), all CPMVs used as prediction candidates can be added to the list. If a neighboring PU does not use a CPMV, no CPMV is added to the prediction list. In some implementations, global motion information can be added to the prediction list as a first candidate.
[0047] Continue to refer to Figure 1 The use of adaptive prediction candidates from global motion can be signaled in headers such as PPS and / or SPS, thereby reducing encoding and decoding complexity.
[0048] Still refer to Figure 1 Since blocks are likely to have motions similar to global motion, adding global motion vectors as first candidates to the prediction list can reduce the number of bits required to signal the difference between prediction candidates and encoded motion vectors. Figure 2 The illustration shows three example motion models that can be used for global motion, including the index values (0, 1, or 2) of the three example motion models.
[0049] Still refer to Figure 2 PPS can be used to signal parameters that can change between pictures in a sequence. Parameters that remain the same for a sequence of pictures can be signaled using a sequence parameter set to reduce the size of the PPS and lower the video bitrate. Example picture parameter sets (PPS) are shown in Table 2:
[0050]
[0051]
[0052]
[0053]
[0054]
[0055] Additional fields can be added to the PPS to signal global motion. In the case of global motion, the presence of global motion parameters in the image sequence can be signaled in the SPS, and the PPS can reference the SPS via the SPS ID. In some decoding methods, the SPS can be modified to add fields to signal the presence of global motion parameters in the SPS. For example, a single-bit field can be added to the SPS. If the global_motion_present bit is 1, global motion-related parameters can be expected in the PPS. If the global_motion_present bit is 0, global motion parameter-related fields are unlikely to exist in the PPS. For example, the PPS in Table 2 can be expanded to include the global_motion_present field, as shown in Table 3.
[0056]
[0057] Similarly, PPS may include the pps_global_motion_parameters field for frames, as shown in Table 4, for example:
[0058]
[0059] More specifically, PPS may include fields that characterize global motion parameters using control point motion vectors, as shown in Table 5, for example:
[0060]
[0061] As a further non-limiting example, Table 6 below can represent exemplary SPS:
[0062]
[0063]
[0064]
[0065]
[0066]
[0067]
[0068]
[0069]
[0070]
[0071]
[0072] The SPS table above can be expanded as described above to incorporate global motion presence indicators as shown in Table 7:
[0073]
[0074] Additional fields can be incorporated into the SPS to reflect additional indicators as described in this disclosure.
[0075] In the implementation method, still refer to Figure 2 In PPS and / or SPS, the `sps_affine_enabled_flag` specifies whether affine-based motion compensation can be used for inter-frame prediction. If `sps_affine_enabled_flag` equals 0, the syntax can be constrained so that affine-based motion compensation is not used in the post-coded video sequence (CLVS), and `inter_affine_flag` and `cu_affine_type_flag` are not present in the CLVS coding unit syntax. Otherwise (`sps_affine_enabled_flag` equals 1), affine-based motion compensation can be used in CLVS.
[0076] Continue to refer to Figure 2 The `sps_affine_type_flag` in PPS and / or SPS specifies whether motion compensation based on a six-parameter affine model can be used for inter-frame prediction. If `sps_affine_type_flag` equals 0, the syntax can be constrained so that motion compensation based on a six-parameter affine model is not used in CLVS, and `cu_affine_type_flag` will not exist in the coding unit syntax of CLVS. Otherwise (`sps_affine_type_flag` equals 1), motion compensation based on a six-parameter affine model can be used in CLVS. When it does not exist, it can be inferred that the value of `sps_affine_type_flag` is equal to 0.
[0077] Still refer to Figure 2 Translation CPMV can be sent via signals in PPS. Control points can be predefined. For example, control point MV0 can be relative to the top left corner of the image, MV1 can be relative to the top right corner, and MV3 can be relative to the bottom left corner. Table 5 illustrates an example method for sending CPMV data via signals according to the motion model used.
[0078] In the exemplary implementation, reference is still made to Figure 2 The array `amvr_precision_idx`, which can be sent as a signal in coding units, coding trees, etc., can specify the resolution `AmvrShift` of the motion vector difference. This resolution `AmvrShift` can be defined as a non-limiting example as shown in Table 8 below. Array indices `x0, y0` can specify the position (x0, y0) of the top-left luminance sample of the considered coding block relative to the top-left luminance sample of the image; when `amvr_precision_idx[x0][y0]` does not exist, it can be inferred to be equal to 0. When `inter_affine_flag[x0][y0]` equals 0, the variables `MvdL0[x0][y0][0]`, `MvdL0[x0][y0][1]`, `MvdL1[x0][y0][0]`, and `MvdL1[x0][y0][1]`, representing the modulation vector difference corresponding to the considered block, can be modified by shifting these values using `AmvrShift`, for example, by using...
[0079] MvdL0[x0][y0][0] = MvdL0[x0][y0][0]< <AmvrShift;
[0080] MvdL0[x0][y0][1] = MvdL0[x0][y0][1]< <AmvrShift;
[0081] MvdL1[x0][y0][0] = MvdL1[x0][y0][0] << AmvrShift; and
[0082] MvdL1[x0][y0][1] = MvdL1[x0][y0][1] << AmvrShift.
[0083] wherein inter_affine_flag[x0][y0] is equal to 1, and 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 shifting, for example as follows:
[0084] MvdCpL0[x0][y0][0][0] = MvdCpL0[x0][y0][0][0] << AmvrShift;
[0085] MvdCpL1[x0][y0][0][1] = MvdCpL1[x0][y0][0][1] << AmvrShift;
[0086] MvdCpL0[x0][y0][1][0] = MvdCpL0[x0][y0][1][0] << AmvrShift;
[0087] MvdCpL1[x0][y0][1][1] = MvdCpL1[x0][y0][1][1] << AmvrShift;
[0088] MvdCpL0[x0][y0][2][0] = MvdCpL0[x0][y0][2][0] << AmvrShift; and
[0089] MvdCpL1[x0][y0][2][1] = MvdCpL1[x0][y0][2][1] << AmvrShift.
[0090]
[0091] Figure 3 is a process flow diagram illustrating an exemplary embodiment of process 300 for constructing a motion vector candidate list, wherein the motion vector candidate list is constructed using global motion vector candidates adopted by adjacent blocks.
[0092] Still referring to Figure 3 In step 305, the current block is received by the decoder. The current block may be contained within the bitstream received by the decoder. The bitstream may include data found, for example, in a bitstream that serves as input to the decoder when data compression is used. The bitstream may include information required for decoding the video. Receiving may include extracting and / or parsing blocks and associated signaling information from the bitstream. In some implementations, the current block may include a coding tree unit (CTU), a coding unit (CU), or a prediction unit (PU).
[0093] Still refer to Figure 3 In step 310, for the current block, a bitstream can be used to determine global motion vector candidates that can be utilized by neighboring blocks. In step 330, a motion vector candidate list can be constructed, including adding the determined global motion vector candidates to the motion vector candidate list. In step 140, the motion vector candidate list can be used to reconstruct the pixel data of the current block.
[0094] Figure 4 This is a system block diagram illustrating an example decoder 400 capable of decoding a bitstream, including constructing a motion vector candidate list using global motion vector candidates utilized by neighboring blocks. 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.
[0095] In operation, still refer to Figure 4 The bitstream 428 can be received by the decoder 400 and input to the entropy decoder processor 404, which can entropy decode a portion of the bitstream into quantization coefficients. The quantization coefficients can be provided to the inverse quantization and inverse transform processor 408, which can perform inverse quantization and inverse transform to create a residual signal. This residual signal can be added to the output of the motion compensation processor 420 or the intra-prediction processor 424, depending on the processing mode. The outputs of the motion compensation processor 420 and the intra-prediction processor 424 can include block predictions based on previously decoded blocks. The sum of the predictions and residuals can be processed by the deblocking filter 412 and stored in the frame buffer 416.
[0096] Figure 5This is a flowchart illustrating an example process 500 for encoding video that reduces encoding complexity while increasing compression efficiency based on some aspects of the current topic, including constructing a motion vector candidate list using global motion vector candidates utilized by neighboring blocks. In step 505, video frames may undergo initial block segmentation, for example, but not limited to, using a tree-structured macroblock partitioning scheme that may partition picture frames into CTUs and CUs. In step 510, global motion may be determined for each block. In step 515, the block may be encoded and included in the bitstream. Encoding may include constructing a motion vector candidate list using global motion vector candidates utilized by neighboring blocks. Encoding may include utilizing, for example, inter-frame prediction modes and intra-frame prediction modes.
[0097] Figure 6 This is a system block diagram illustrating an example video encoder 600 capable of constructing a list of motion vector candidates using global motion vector candidates utilized by neighboring blocks. The example video encoder 600 can receive input video 604, which can be initially segmented or partitioned according to a processing scheme such as a tree-structured macroblock partitioning scheme (e.g., quadtree plus binary tree). Examples of a tree-structured macroblock partitioning scheme may include partitioning picture frames into large blocks of features called coding tree units (CTUs). In some implementations, each CTU can be further partitioned into multiple sub-blocks called coding units (CUs). The final result of this partitioning may include a set of sub-blocks that can be called prediction units (PUs). Transform units (TUs) may also be used.
[0098] Still refer to Figure 6 The example video encoder 600 may include an intra-frame prediction processor 608, a motion estimation / compensation processor 612, a transform / quantization processor 616, an inverse quantization / inverse transform processor 620, a loop filter 624, a decoded image buffer 628, and / or an entropy coding processor 632. The motion estimation / compensation processor 612, also known as an inter-frame prediction processor, is capable of constructing a motion vector candidate list, including adding global motion vector candidates to the motion vector candidate list. Bitstream parameters can be input to the entropy coding processor 632 to be included in the output bitstream 636.
[0099] Continue to refer to Figure 6In operation, for each block of the input video 604, it can be determined whether the block is processed via intra-frame prediction or using motion estimation / compensation. The block can be provided to either the intra-frame prediction processor 608 or the motion estimation / compensation processor 612. If the block is to be processed via intra-frame prediction, the intra-frame prediction processor 608 can perform processing to output predicted values. If applicable, if the block is to be processed via motion estimation / compensation, the motion estimation / compensation processor 612 can perform processing including constructing a list of motion vector candidates (including adding global motion vector candidates to the list of motion vector candidates).
[0100] Further reference Figure 6 The residual can be formed by subtracting the predicted value from the input video. The residual can be received by a transform / quantization processor 616, which can perform transform processing (e.g., Discrete Cosine Transform (DCT)) to produce coefficients that can be quantized. The quantization coefficients and any associated signaling information can be provided to an entropy coding processor 632 for entropy coding and included in the output bitstream 636. The entropy coding processor 632 can support the encoding of signaling information related to the encoding of the current block. Furthermore, the quantization coefficients can be provided to an inverse quantization / inverse transform processor 620, which can reproduce pixels. Pixels can be combined with the predicted value and processed by a loop filter 624. The output of the loop filter 624 can be stored in a decoded image buffer 628 for use by a motion estimation / compensation processor 612, which constructs a motion vector candidate list, including adding global motion vector candidates to the motion vector candidate list.
[0101] Continue to refer to Figure 6 Although some variations have been described in detail above, other modifications or additions are possible. For example, in some implementations, the current block can include any symmetric block (8x8, 16x16, 32x32, 64x64, 128x128, etc.) as well as any asymmetric block (8x4, 16x8, etc.).
[0102] Still refer to Figure 6 In some implementations, a quadtree plus binary decision tree (QTBT) can be implemented. In QTBT, at the encoding tree unit level, the partitioning parameters of the QTBT can be dynamically derived to adapt to local characteristics without any transmission overhead. Subsequently, at the encoding unit level, the joint classifier decision tree structure can eliminate unnecessary iterations and control the risk of mispredictions. In some implementations, the LTR frame block update mode can be used as an additional option available at each leaf node of the QTBT.
[0103] Still refer to Figure 6In some implementations, additional syntax elements can be signaled at different levels of the bitstream. For example, an enable flag can be included for the entire sequence by including an enable flag encoded in the Sequence Parameter Set (SPS). Furthermore, CTU flags can be encoded at the Code Tree Unit (CTU) level.
[0104] It should be noted that any one or more aspects and embodiments described herein can be readily implemented using digital electronic circuits, integrated circuits, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), computer hardware, firmware, software, and / or combinations thereof, as will be apparent to those skilled in the art, such implementation and / or implementation in one or more machines programmed according to the teachings of this specification (e.g., one or more computing devices used as user computing devices for electronic documents, one or more server devices, such as document servers, etc.). These different aspects or features may include implementations in one or more computer programs and / or software capable of execution and / or interpretation on a programmable system including at least one programmable processor, which may be dedicated or general-purpose, coupled to receive data and instructions from and to a storage system, at least one input device, and at least one output device. Appropriate software coding can be readily prepared by skilled programmers based on the teachings of this disclosure, as will be apparent to those skilled in the art. The aspects and implementations of using software and / or software modules discussed above may also include appropriate hardware for assisting in the implementation of machine-executable instructions for the software and / or software modules.
[0105] Such software can be a computer program product employing a machine-readable storage medium. A machine-readable storage medium can be any medium capable of storing and / or encoding a sequence of instructions executable by a machine (e.g., a computing device) and causing the machine to perform any of the methods and / or embodiments described herein. Examples of machine-readable storage media include, but are not limited to, magnetic disks, optical disks (e.g., CDs, CD-Rs, DVDs, DVD-Rs, etc.), magneto-optical disks, read-only memory “ROM” devices, random access memory “RAM” devices, magnetic cards, optical cards, solid-state storage devices, EPROMs, EEPROMs, programmable logic devices (PLDs), and / or any combination thereof. As used herein, machine-readable media are intended to include single media as well as collections of physically separate media, such as one or more hard disk drives combined with computer memory and collections of optical disks. As used herein, machine-readable storage media do not include transient forms of signal transmission.
[0106] Such software may also include information (e.g., data) carried as data signals on a data carrier such as a carrier wave. For example, it may include machine-executable information as a data-bearing signal implemented in a data carrier, in which the signal encodes a sequence of instructions or a portion thereof for execution by a machine (e.g., a computing device), and any relevant information (e.g., data structures and data) that causes the machine to perform the methods and / or embodiments described herein and / or any of the methods and / or embodiments described herein.
[0107] Examples of computing devices include, but are not limited to, e-book readers, computer workstations, terminal computers, server computers, handheld devices (e.g., tablets, smartphones, etc.), network devices, network routers, network switches, bridges, any machine capable of executing a sequence of instructions specifying the actions to be taken by the machine, and any combination thereof. In one example, a computing device may include and / or be included in a kiosk.
[0108] Figure 7 A schematic representation of one embodiment of a computing device in an exemplary form of a computer system 700 is shown, within which a set of instructions can be executed to cause a control system to perform any or more aspects and / or methods of this disclosure. It is also contemplated that multiple computing devices can be used to implement a specially configured set of instructions to cause one or more devices to perform any or more aspects and / or methods of this disclosure. The computer system 700 includes a processor 704 and a memory 708 communicating with each other and with other components via a bus 712. The bus 712 may include any of several types of bus architectures—including, but not limited to, memory buses, memory controllers, peripheral buses, local buses, and any combinations thereof using any of a variety of bus architectures.
[0109] Memory 708 may include various components (e.g., machine-readable media), including but not limited to random access memory components, read-only components, and any combination thereof. In one example, a basic input / output system 716 (BIOS) may be stored in memory 708, including basic routines that, for example, facilitate the transfer of information between elements within computer system 700 during startup. Memory 708 may also include instructions (e.g., software) 720 that implement any or more aspects and / or methods of this disclosure (e.g., stored on one or more machine-readable media). In another example, memory 708 may also include any number of program modules, including but not limited to an operating system, one or more application programs, other program modules, program data, and any combination thereof.
[0110] Computer system 700 may also include storage device 724. Examples of storage devices (e.g., storage device 724) include, but are not limited to, hard disk drives, disk drives, combinations of optical disk drives and optical media, solid-state storage devices, and any combination thereof. Storage device 724 may be connected to bus 712 via a suitable interface (not shown). Example interfaces include, but are not limited to, SCSI, Advanced Technology Attachment (ATA), Serial ATA, Universal Serial Bus (USB), IEEE 1394 (FireWire), and any combination thereof. In one example, storage device 724 (or one or more components thereof) may removably interact with computer system 700 (e.g., via an external port connector (not shown)). In particular, storage device 724 and associated machine-readable medium 728 may provide non-volatile and / or volatile memory for machine-readable instructions, data structures, program modules, and / or other data for computer system 700. In one example, software 720 may reside wholly or partially within machine-readable medium 728. In another example, software 720 may reside wholly or partially within processor 704.
[0111] Computer system 700 may also include input device 732. In one example, a user of computer system 700 may input commands and / or other information into computer system 700 via input device 732. Examples of input device 732 include, but are not limited to, alphanumeric input devices (e.g., keyboard), pointing devices, joysticks, game controllers, audio input devices (e.g., microphones, voice response systems, etc.), cursor control devices (e.g., mice), touchpads, optical scanners, video capture devices (e.g., still cameras, camcorders), touchscreens, and any combination thereof. Input device 732 may be connected to bus 712 via any of a variety of interfaces (not shown), including but not limited to serial interfaces, parallel interfaces, game ports, USB interfaces, firewire interfaces, direct interfaces to bus 712, and any combination thereof. Input device 732 may include a touchscreen interface, which may be part of or separate from display 736, as will be discussed further below. Input device 732 may be used as a user selection device for selecting one or more graphical representations in the graphical interface described above.
[0112] Users can also input commands and / or other information to computer system 700 via storage device 724 (e.g., removable disk drive, flash drive, etc.) and / or network interface device 740. Network interface devices, such as network interface device 740, can be used to connect computer system 700 to one or more networks, such as network 744, and one or more remote devices 748 connected to these networks. Examples of network interface devices include, but are not limited to, network interface cards (e.g., mobile network interface cards, LAN cards), modems, and any combination thereof. Examples of networks include, but are not limited to, wide area networks (e.g., the Internet, corporate networks), local area networks (e.g., networks associated with offices, buildings, campuses, or other relatively small geographical areas), telephone networks, data networks associated with telephone / voice providers (e.g., mobile communication provider data and / or voice networks), direct connections between two computing devices, and any combination thereof. Networks, such as network 744, can employ wired and / or wireless communication modes. Typically, any network topology can be used. Information (e.g., data, software 720, etc.) can be transmitted to and / or from computer system 700 via network interface device 740.
[0113] Computer system 700 may also include a video display adapter 752 for transmitting displayable images to a display device such as display device 736. Examples of display devices include, but are not limited to, liquid crystal displays (LCDs), cathode ray tube (CRTs), plasma displays, light-emitting diode (LED) displays, and any combination thereof. Display adapter 752 and display device 736 may be used in conjunction with processor 704 to provide a graphical representation of aspects of this disclosure. In addition to display devices, computer system 700 may include one or more other peripheral output devices, including, but not limited to, audio speakers, printers, and any combination thereof. Such peripheral output devices may be connected to bus 712 via peripheral interface 756. Examples of peripheral interfaces include, but are not limited to, serial ports, USB connections, firewire connections, parallel connections, and any combination thereof.
[0114] The foregoing is a detailed description of illustrative embodiments of the present invention. Various modifications and additions can be made without departing from the spirit and scope of the invention. Features of each embodiment described above can be suitably combined with features of other described embodiments to provide multiple combinations of features in associated new embodiments. Furthermore, although several individual embodiments have been described above, the description herein is merely an illustration of the application of the principles of the invention. Moreover, although specific methods herein may be illustrated and / or described as being performed in a specific order, the order is highly variable within the ordinary technical scope of implementing the embodiments disclosed herein. Therefore, this description is intended only as an example and not to otherwise limit the scope of the invention.
[0115] In the foregoing description and claims, phrases such as “at least one of…” or “one or more of…” may be followed by a list of elements or features. The term “and / or” may also appear in a list of two or more elements or features. Unless contradicted, explicitly or implicitly, by the context in which it is used, a phrase means any single element or feature listed, or any element or feature listed in combination with any of the other elements or features listed. For example, each phrase “at least one of A and B,” “one or more of A and B,” and “A and / or B” means “A only, B only, or both A and B.” A similar interpretation applies to lists containing three or more items. For example, each phrase “at least one of A, B, and C,” “one or more of A, B, and C,” and “A, B, and / or C” means “A only, B only, C only, A and B together, A and C together, B and C together, or A, B, and C together.” Furthermore, the use of the term "based on" in the foregoing and claims means "at least partially based on," which allows for the inclusion of features or elements not mentioned.
[0116] The subject matter described herein can be embodied in systems, devices, methods, and / or articles according to desired configurations. The implementations described above do not represent all implementations consistent with the subject matter described herein. Rather, these implementations are merely examples of aspects consistent with the described subject matter. Although some variations have been described in detail above, other modifications or additions are possible. In particular, further features and / or variations may be provided in addition to those set forth herein. For example, the implementations described above may involve various combinations and sub-combinations of the disclosed features, and / or combinations and sub-combinations of several further features disclosed above. Furthermore, the logical flows described in the figures and / or herein do not necessarily require a specific order or sequence to achieve the desired result. Other implementations may fall within the scope of the appended claims.
Claims
1. A video decoding method, comprising: Receive a bitstream including an encoded image, the encoded image including a first region having global motion and including a first consecutive plurality of encoding units, and a second region having local motion different from the global motion and including a second consecutive plurality of encoding units, the first consecutive plurality of encoding units all having the same affine motion model; For each of the first consecutive plurality of coding units, a motion vector candidate list is constructed, and each motion vector candidate list includes one or more motion vector candidates generated using motion vector information of adjacent coding units; Decoding is performed on each of the first consecutive plurality of coding units in the first region using a motion vector candidate selected from the motion vector candidate list of each of the first consecutive coding units. The selected motion vector candidate is a candidate generated using motion vector information of adjacent coding units. The affine motion model is a 6-parameter affine motion model characterized by parameters a, b, c, d, e, and f, wherein: x′=ax+by+c y′=dx+ey+f Where (x, y) is the pixel position in the first region of the encoded image, (x′, y′) is the pixel position in the reference image, each selected motion vector candidate includes three control point motion vectors, and the selected motion vector candidate implements a, b, c, d, e, and f with the same values in all coding units of the first region, thereby reconstructing the global motion in the first region; and The local motion is reconstructed by decoding the coding units in the second consecutive plurality of coding units.