Candidates in frames with global motion
By constructing a motion vector candidate list in the video encoder and adding global motion vector candidates, the problem of low video compression efficiency under global motion is solved, achieving more efficient video compression and quality improvement.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- DOLBY INTERNATIONAL AB
- Filing Date
- 2020-04-24
- Publication Date
- 2026-04-28
AI Technical Summary
Existing video coding technologies are inefficient in handling global motion, resulting in a decrease in the quality of compressed video. Furthermore, motion vector coding is highly complex and makes it difficult to effectively utilize global motion information for prediction.
By constructing a candidate list of motion vectors in the decoder and adding global motion vector candidates, compression efficiency can be improved by utilizing global motion vectors, including sending global motion signals in the header and using affine motion models for motion compensation.
It improves video compression efficiency, reduces bit rate, simplifies motion vector coding process, and enhances video quality and coding complexity.
Smart Images

Figure CN114009042B_ABST
Abstract
Description
[0001] Cross-references to related applications
[0002] This application claims priority to U.S. Provisional Patent Application Serial No. 62 / 838,587, filed April 25, 2019, entitled “Candidate in a Frame with Global Motion,” the entire contents of which are incorporated herein by reference. Technical Field
[0003] This invention generally relates to the field of video compression. In particular, this invention addresses candidates in frames with global motion. Background Technology
[0004] A video codec can include electronic circuitry or software that compresses or decompresses digital video. It can convert uncompressed video to a compressed format and vice versa. In the context of video compression, the device that compresses video (and / or performs some of its functions) is often referred to as an encoder, and the device that decompresses video (and / or performs some of its functions) is often referred to as a decoder.
[0005] The format of compressed data can conform to standard video compression specifications. Compression may be lossy because compressed video lacks some information present in the original video. One consequence of this is that the quality of the decompressed video may be lower than the original uncompressed video because there is not enough 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., delay), and so on.
[0007] Motion compensation can include a method that, given a reference frame (e.g., a previous frame and / or a future frame), predicts a video frame or a portion thereof by calculating the motion of objects in the camera and / or video. It can be used for encoding and decoding video data in video compression, such as 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 earlier in time when compared to the current image, and can be future when 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, the decoder includes circuitry configured to receive a bitstream, construct a motion vector candidate list for the current block, including adding global motion vector candidates to the motion vector candidate list, reconstructing pixel data for the current block, and using the motion vector candidate list.
[0009] In another approach, one method involves receiving a bitstream by a decoder. This method includes constructing a motion vector candidate list for the current block, including adding global motion vector candidates to the motion vector candidate list. The method also includes reconstructing the pixel data of the current block and 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 description below. Other features and advantages of the subject matter described herein will be apparent from the specification, the accompanying drawings, and the claims. Attached Figure Description
[0011] To illustrate 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 graph showing the motion vectors of an example frame with global and local motion;
[0013] Figure 2 Three example motion models that can be used for global motion are shown, including their index values (0, 1, or 2);
[0014] Figure 3 This is a process flowchart based on some example implementations of 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 process flowchart based on some example implementations of 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 computational system that can be used to implement any one or more methods disclosed herein and any one or more parts thereof.
[0019] The accompanying drawings are not necessarily drawn to scale and may use dashed lines, schematic diagrams, and partial views for illustration. In some cases, details that are not necessary for understanding the embodiments or that make other details difficult to perceive may have been omitted. The same reference numerals in different drawings denote the same elements. Detailed Implementation
[0020] Global motion in a video refers to motion that occurs throughout the entire frame. Global motion may be caused by camera movement; for example, camera panning and zooming can produce motion within a frame that typically affects the entire frame. Motion present in parts of the video can be called local motion. Local motion can be caused by moving objects in the scene, such as objects moving from left to right. Video may contain a combination of local and global motion. Some implementations of the current topic can provide efficient methods for passing global motion to the decoder, as well as 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 includes multiple pixel blocks shown as squares, and their associated motion vectors shown as arrows. Squares (e.g., pixel blocks) with arrows pointing upwards and to the left indicate blocks with motion that can be considered global motion, while squares with arrows pointing in other directions (indicated by 104) indicate blocks with local motion. Figure 1 In the example shown, many blocks share the same global motion. Sending global motion signals, such as the Picture Parameter Set (PPS) and / or Sequence Parameter Set (SPS), in the header, and using signaled global motion, can reduce the amount of motion vector information required for each block and can lead to improved prediction. Although the examples described below for illustrative purposes determine and / or apply 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 image, including regions consisting of multiple blocks, regions bounded by any geometry, such as, but not limited to, regions defined by geometric and / or exponential coding, where one or more lines and / or curves enclosing the boundary can be angled and / or curved, and / or the entire frame and / or image. 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-image level, where a sub-image can include any region of a frame and / or image as described above.
[0022] As an example, continue to refer to Figure 1Simple translational motion can be described using motion vectors (MVs), which have two components, MVx and MVy, describing 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, where "affine motion vector" as used in this disclosure is a vector describing the uniform displacement of a set of pixels or points represented in a video image and / or image, for example, showing a set of pixels that move in a video view during motion without changing their appearance shape. Some methods of video encoding and / or decoding can use four-parameter or six-parameter affine models for motion compensation in inter-image coding.
[0023] For example, six-parameter affine motion can be described as:
[0024] x' = ax + by + c
[0025] y'=dx+ey+f
[0026] 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 referencing Figure 1 The parameters describing affine motion can be sent to the decoder via signals so that affine motion compensation can be applied at the decoder. In some methods, motion parameters can be explicitly sent via signals, or translational control point motion vectors (CPMVs) can be sent via signals, and then the affine motion parameters can be derived from the translational motion vectors. 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). Sending affine motion parameters via signals using control point motion vectors allows for the use of efficient motion vector encoding methods to send affine motion parameters via signals.
[0031] In one embodiment, further reference Figure 1In 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 is constrained so that affine-based motion compensation is not used in later encoded video sequences (CLVS), and `inter_affine_flag` and `cu_affine_type_flag` may not exist in the CLVS coding unit syntax. Otherwise (`sps_affine_enabled_flag` equals 1), affine-based motion compensation can be used in CLVS.
[0032] Still referencing 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 may be constrained so that motion compensation based on a six-parameter affine model is not used in CLVS, and `cu_affine_type_flag` may not exist in the coding unit syntax in 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, the value of `sps_affine_type_flag` can be inferred to be equal to 0.
[0033] Continue to refer to Figure 1 Processing the MV prediction candidate list can be a step performed at the decoder in some compression methods that utilize motion compensation. Several methods define the use of spatial and temporal motion vector candidates. Global motion, signaled in headers 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. By using global motion as prediction candidates, motion vector coding can be improved and the bit rate reduced. Candidate MVs added to the MV prediction list can be selected based on the motion model used to represent global motion and the motion model used in inter-frame coding.
[0034] Still referencing Figure 1Depending on the motion model used, some implementations of global motion can be described using one or more control point motion vectors (CPMVs). Therefore, depending on the motion model used, one to three control point motion vectors may be available and can be used as prediction candidates. 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.
[0035]
[0036] Now for reference Figure 2 The diagram illustrates three exemplary motion models 200 that can be used for global motion. Each exemplary model includes an index value (0, 1, or 2).
[0037] Still referencing Figure 2 PPSs can be used to send parameters via signals, which can be changed between images in a sequence. Parameters that remain the same across the image sequence can be sent using signals from a set of sequence parameters to reduce the size of the PPS and lower the video bitrate. Table 1 shows an example set of image parameters (PPS):
[0038]
[0039]
[0040]
[0041]
[0042]
[0043] 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 a field to signal the presence of global motion parameters in the SPS. For example, a single bit 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, the field related to global motion parameters may not exist in the PPS. For example, the PPS in Table 1 can be extended to include a global_motion_present field, as shown in Table 2.
[0044]
[0045] Similarly, PPS can include the pps_global_motion_parameters field for a single frame, as shown in Table 3:
[0046]
[0047] More specifically, the PPS may include fields that use control point motion vectors to characterize global motion parameters, as shown in Table 4, for example:
[0048] pps_global_motion_parameters(){ descriptor motion_model_used u(2) mv0_x se(v) mv1_y se(v) if (motion_model_used == 1) { mv1_x se(v) mv1_y se(v) } if (motion_model_used == 2) { mv2_x se(v) mv2_y se(v) } }
[0049] As a further non-limiting example, Table 5 below can represent exemplary SPS:
[0050]
[0051]
[0052]
[0053]
[0054]
[0055]
[0056]
[0057]
[0058]
[0059] As mentioned above, the SPS table can be expanded to include global motion rendering indicators as shown in Table 6:
[0060]
[0061] Additional fields may be incorporated into the SPS to reflect the further indicators described in this disclosure.
[0062] In one embodiment, still referencing Figure 2In 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 is constrained so that affine-based motion compensation is not used in later encoded video sequences (CLVS), and `inter_affine_flag` and `cu_affine_type_flag` may not exist in the CLVS coding unit syntax. Otherwise (`sps_affine_enabled_flag` equals 1), affine-based motion compensation can be used in CLVS.
[0063] 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 may be constrained so that motion compensation based on a six-parameter affine model is not used in CLVS, and `cu_affine_type_flag` may not exist in the coding unit syntax in 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, the value of `sps_affine_type_flag` can be inferred to be equal to 0.
[0064] Still refer to Figure 2 Translational CPMVs can be sent in the PPS via signals. 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 4 illustrates an example method for sending CPMV data based on the motion model used.
[0065] In an exemplary embodiment, and still referring to Figure 2The array amvr_precision_idx, which can be transmitted via signals in coding units, coding trees, etc., can specify the resolution AmvrShift of the motion vector difference. As a non-limiting example, it can be defined as shown in Table 7 below. The array indices x0 and y0 can specify the position (x0, y0) of the top-left luminance sample point of the coded block under consideration relative to the top-left luminance sample point of the image; when amvr_precision_idx[x0][y0] does not exist, it can be inferred that it is 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] represent the modulation vector difference corresponding to the block under consideration. These values can be modified by offsetting them with AmvrShift, for example, by 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;MvdL1[x0][y0][1]=MvdL1[x0][y0][1]<<AmvrShift。where inter_affine_flag[x0][y0] is equal to 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 an offset, for example, as shown below: 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.
[0066]
[0067] Figure 3 is a process flow diagram showing an example process 300 for constructing a motion vector candidate list, including adding a global motion vector candidate to the motion vector candidate list. At step 305, the decoder receives a bitstream. The current block may be included in the bitstream received by the decoder. The bitstream may include, for example, data found in a bitstream that is an input to the decoder when using data compression. The bitstream may include information required to decode the video. Receiving may include extracting and / or parsing the block and associated signaling information from the bitstream. In some embodiments, the current block may include a coding tree unit (CTU), a coding unit (CU), or a prediction unit (PU). At step 310, a motion vector candidate list is constructed for the current block, where constructing includes adding a global motion vector candidate to the motion vector candidate list, as described above for example. At step 315, the pixel data of the current block is reconstructed using the motion vector candidate list.
[0068] Figure 4This is a system block diagram illustrating an example decoder 400, which is capable of decoding bitstream 428 by at least constructing a motion vector candidate list (including adding global motion vector candidates to the motion vector candidate list). 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.
[0069] During 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 decodes a portion of the bitstream's entropy into quantization coefficients. These quantization coefficients can be provided to the inverse quantization and inverse transform processor 408, which performs 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.
[0070] Figure 5 This is a flowchart illustrating an example process 500 for encoding video based on some aspects of the current topic. The process includes constructing a motion vector candidate list, including adding global motion vector candidates to the motion vector candidate list, which can reduce encoding complexity while improving compression efficiency. In step 505, the video frame may undergo initial block segmentation, for example, using a tree-structured macroblock segmentation scheme, which may include segmenting the image frame into CTUs and CUs. In step 510, global motion is determined. In step 515, the block can be encoded and included in the bitstream. Encoding may include constructing a motion vector candidate list, including adding global motion vector candidates to the motion vector candidate list, as described above. As a non-limiting example, encoding may include utilizing inter-frame prediction and intra-frame prediction modes.
[0071] Figure 6This is a system block diagram illustrating an exemplary embodiment of a video encoder 600 capable of constructing a list of motion vector candidates, including adding global motion vector candidates to the list. The example video encoder 600 may receive input video 604, which may undergo initial segmentation or partitioning according to a processing scheme such as a tree-structured macroblock segmentation scheme (e.g., quadtree plus binary tree). Examples of tree-structured macroblock segmentation schemes may include segmenting image frames into large blocks called coding tree units (CTUs). In some implementations, each CTU may be further divided once or multiple times into multiple sub-blocks called coding units (CUs). The final result of such partitioning may include a set of sub-blocks called prediction units (PUs). Transform units (TUs) may also be used.
[0072] Still referencing Figure 6 The example video encoder 600 may include an intra-frame prediction processor 608, a motion estimation / compensation processor 612 (which may also be referred to as an inter-frame prediction processor, capable of constructing a motion vector candidate list, including adding global motion vector candidates to the motion vector candidate list), 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. Bitstream parameters can be input to the entropy coding processor 632 to be included in the output bitstream 636.
[0073] During the operation, please continue to refer to... Figure 6 For each block of a frame in 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 a predictor. 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, and, where applicable, adding global motion vector candidates to the list of motion vector candidates.
[0074] Further reference Figure 6The 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 quantized 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 associated with encoding the current block. Furthermore, the quantized coefficients can be provided to an inverse quantization / inverse transform processor 620, which can reproduce pixels. Pixels can be combined with the predictor 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 is capable of constructing a motion vector candidate list, including adding global motion vector candidates to the motion vector candidate list.
[0075] Continue to refer to Figure 6 Although some changes have been described in detail above, other modifications or additions are possible. For example, in some implementations, the current block may include any symmetric block (8×8, 16×16, 32×32, 64×64, 128×128, etc.) and any asymmetric block (8×4, 16×8, etc.).
[0076] In some implementations, and still referencing Figure 6 This allows for the implementation of a quadtree plus binary decision tree (QTBT). In QTBT, at the coding 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 coding unit level, the joint decision tree classifier 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.
[0077] In some implementations, and still referencing Figure 6 Additional syntax elements can be signaled at different levels of the bitstream. For example, the entire sequence can be enabled by including an encoded enable flag in the Sequence Parameter Set (SPS). Furthermore, CTU flags can be encoded at the Code Tree Unit (CTU) level.
[0078] 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 of computers, as implemented 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 executable and / or interpretable on a programmable system including at least one programmable processor, which may be dedicated or general-purpose, coupled to receive data and instructions from a storage system, at least one input device, and at least one output device, and to send data and instructions to the storage system, at least one input device, and at least one output device. It will be apparent to those skilled in the art of software that a skilled programmer can readily prepare appropriate software code based on the teachings of this disclosure. The aspects and implementations employing 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.
[0079] 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 sequences of instructions for execution 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. The use of "machine-readable medium" herein is intended to include both single media and collections of physically separate media, such as collections of optical disks or one or more hard disk drives combined with computer memory. As used herein, machine-readable storage media do not include temporary forms of signal transmission.
[0080] Such software may also include information (e.g., data) carried as a data signal on a data carrier (e.g., a carrier wave). For example, machine-executable information may be included as a data-bearing signal contained in a data carrier, wherein 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 any of the embodiments described herein.
[0081] 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 (which specifies the action the machine should take), and any combination thereof. In one example, a computing device may include and / or be included in a kiosk.
[0082] Figure 7 The illustration shows an embodiment of a computing device in an exemplary form of a computer system 700, wherein a set of instructions for causing a control system to perform any one or more aspects and / or methods of this disclosure can be executed. It is also contemplated that a specially configured set of instructions can be implemented using multiple computing devices to cause one or more devices to perform any one or more aspects and / or methods of this disclosure. The computer system 700 includes a processor 704 and a memory 708, which communicate 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 a memory bus, memory controller, peripheral bus, local bus, and any combination thereof using any of various bus architectures.
[0083] 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), including basic routines that facilitate the transfer of information between elements within computer system 700, may be stored in memory 708, for example, during startup. Memory 708 may also include (e.g., stored on one or more machine-readable media) instructions (e.g., software) 720 embodying any one or more aspects and / or methods of this disclosure. In another example, memory 708 may further 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.
[0084] 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, optical disk drives combined with 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 be removably interfaced 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 storage of 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 in machine-readable medium 728. In another example, software 720 may reside wholly or partially within processor 704.
[0085] 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 to computer system 700 via input device 732. Examples of input device 732 include, but are not limited to, alphanumeric input devices (e.g., keyboards), 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, video cameras), 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.
[0086] 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 of various networks such as network 744, and one or more remote devices 748 connected thereto. 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 communicated from computer system 700 via network interface device 740.
[0087] 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 tubes (CRTs), plasma displays, light-emitting diode displays (LEDs), and any combination thereof. Display adapter 752 and display device 736 may be used in conjunction with processor 704 to provide graphical representations of various 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.
[0088] The illustrative embodiments of the invention have been described in detail above. Various modifications and additions can be made without departing from the spirit and scope of the invention. To provide multiple combinations of features in related new embodiments, features of the various embodiments described above can be suitably combined with features of other described embodiments. Furthermore, while many individual embodiments have been described above, what is described herein is merely an illustration of the application of the principles of the invention. Moreover, although specific methods herein may be shown and / or described as being performed in a particular order, this order is highly variable within the art to implement the embodiments disclosed herein. Therefore, this description is intended only as an example and not as limiting the scope of the invention.
[0089] In the above description and claims, phrases such as “at least one” or “one or more” may appear after a list of connected elements or features. The term “and / or” may also appear in a list of two or more elements or features. Unless implied or explicitly contradicted by the context in which it is used, such phrases are intended to mean any element or feature listed individually or any of the listed elements or features combined with any other listed element or feature. For example, the phrases “at least one of A and B,” “one or more of A and B,” and “A and / or B” are each intended to mean “A alone, B alone, or A and B together.” Similar interpretations apply to lists containing three or more items. For example, the phrases “at least one of A, B, and C,” “one or more of A, B, and C,” and “A, B, and / or C” are each intended to mean “A alone, B alone, C alone, A and B together, A and C together, B and C together, or A and B and C together.” Furthermore, the term “based on” as used above and in the claims is intended to mean “at least partially based on,” allowing for the inclusion of uncited features or elements.
[0090] Depending on the desired configuration, the subject matter described herein can be embodied in systems, apparatus, methods, and / or articles. The embodiments set forth in the foregoing description do not represent all embodiments consistent with the subject matter described herein. Rather, they are merely some examples consistent with aspects related to 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 the features and / or variations set forth herein. For example, the above embodiments may be applicable to 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 depicted in the drawings and / or described herein do not necessarily require the specific order or sequence shown to achieve the desired results. Other embodiments may be within the scope of the following claims.
Claims
1. A decoder, the decoder comprising circuitry configured to: Receive a bitstream, including coded image data containing a sequence of coded images of the current image, wherein the bitstream includes a sequence parameter set SPS, and the current image includes a first region containing only a first contiguous plurality of coded blocks having global motion; For each coded block in the first region, according to the SPS, a motion vector candidate list is constructed by adding at least one global motion vector candidate, the at least one global motion vector candidate including a translational motion vector for translational motion compensation or multiple control point motion vectors for four-parameter affine motion compensation or six-parameter affine motion compensation; When a global motion vector candidate includes a translational motion vector, translational motion compensation is used to decode the first plurality of blocks in the first region to reconstruct the global motion in the first region; as well as When a global motion vector candidate includes multiple control point motion vectors, affine motion compensation is used to decode the first multiple blocks in the first region to reconstruct the global motion in the first region; The current image includes a second region, which includes a second contiguous plurality of coded blocks with local motion.
2. The decoder according to claim 1, wherein, The global motion vector candidate includes three control point motion vectors used for the six-parameter affine motion compensation.
3. The decoder according to claim 1, wherein, The global motion vector candidate includes two control point motion vectors used for the four-parameter affine motion compensation.
4. The decoder according to claim 1, wherein, The encoded blocks of the second region are decoded using motion information from the bitstream of each block in the second region.
5. The decoder according to claim 4, wherein, The first region and the second region together construct the entire image.
6. A non-transitory computer-readable recording medium storing computer-executable instructions, the computer-executable instructions decoding a bitstream using a decoding method, the method comprising: Receive a bitstream, including coded image data containing a sequence of coded images of the current image, wherein the bitstream includes a sequence parameter set SPS, and the current image includes a first region containing only a first contiguous plurality of coded blocks having global motion; For each coded block in the first region, according to the SPS, a motion vector candidate list is constructed by adding at least one global motion vector candidate, the at least one global motion vector candidate including a translational motion vector for translational motion compensation or multiple control point motion vectors for four-parameter affine motion compensation or six-parameter affine motion compensation; When a global motion vector candidate includes a translational motion vector, translational motion compensation is used to decode the first plurality of blocks in the first region to reconstruct the global motion in the first region; as well as When a global motion vector candidate includes multiple control point motion vectors, affine motion compensation is used to decode the first multiple blocks in the first region to reconstruct the global motion in the first region; The current image includes a second region, which includes a second contiguous plurality of coded blocks with local motion.
7. The non-transitory computer-readable recording medium according to claim 6, wherein, The at least one global motion vector candidate includes three control point motion vectors for six-parameter affine motion compensation.
8. The non-transitory computer-readable recording medium according to claim 6, wherein, The at least one global motion vector candidate includes two control point motion vectors for four-parameter affine motion compensation.
9. The non-transitory computer-readable recording medium according to claim 6, wherein, The encoded blocks of the second region are decoded using motion information from the bitstream of each block in the second region.
10. The non-transitory computer-readable recording medium according to claim 9, wherein, The first region and the second region together construct the entire image.
Citation Information
Patent Citations
Method and apparatus for global motion compensation in video coding system
CN108293128A