Video decoding apparatus, video coding apparatus and recording medium

By clipping and optimizing motion vectors within defined dynamic ranges, the method addresses memory challenges in video encoding and decoding, reducing memory requirements and access bandwidth.

JP2026001203AActive Publication Date: 2026-01-06ELECTRONICS & TELECOMM RES INST
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
JP2025169426
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2012-01-31
Filing Date
2025-10-07
Publication Date
2026-01-06
Estimated Expiration
2032-01-31

AI Technical Summary

Technical Problem

Existing video encoding and decoding technologies face challenges in efficiently managing memory space and bandwidth for storing and accessing motion vectors, particularly in mobile terminals, due to the large memory requirements and dynamic ranges of motion vectors.

Method used

The method involves clipping motion vectors within a predetermined dynamic range, storing them in a buffer, and encoding/decoding using these clipped vectors, with the dynamic range defined by the video codec's bit depth, and further optimizing storage through quantization and reduced spatial resolution.

Benefits of technology

This approach reduces the memory space and memory access bandwidth required for motion vectors, enhancing efficiency in devices with limited memory resources.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026001203000001_ABST
    Figure 2026001203000001_ABST
Patent Text Reader

Abstract

To provide a method and apparatus for encoding / decoding an image using a motion vector.SOLUTION: The video decoding method includes generating a clipped motion vector by clipping a motion vector of a reference picture to a predetermined dynamic range, storing the clipped motion vector in a buffer, deriving a motion vector of a decoding target block by using the motion vector stored in the buffer, and performing inter-prediction decoding by using the motion vector of the decoding target block. The accompanying drawings, which are included to provide a further understanding of the invention and are incorporated in and constitute a part of this specification, illustrate exemplary embodiments of the invention, and together with the description serve to explain the principles of the invention.SELECTED DRAWING: Figure 15
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present invention relates to video processing, and more particularly to a method and apparatus for encoding / decoding using motion vectors. [Background technology]

[0002] Recently, as broadcasting systems supporting HD (High Definition) resolution have expanded not only in Korea but also around the world, many users have become accustomed to high-resolution, high-quality images, and as a result, many organizations are spurring the development of next-generation video equipment.In addition, as interest in UHD (Ultra High Definition), which supports resolutions four times higher than HDTV, is growing, there is a demand for compression technology for even higher resolution, high-quality images.

[0003] For image compression, techniques such as inter-prediction, which predicts pixel values ​​contained in a current picture from previous and / or subsequent pictures, intra-prediction, which predicts pixel values ​​using pixel information within a picture, and / or entropy coding, which assigns short codes to symbols that occur frequently and long codes to symbols that occur less frequently, can be used. Summary of the Invention [Problem to be solved by the invention]

[0004] The present invention provides a method and apparatus for encoding / decoding video using clipped motion vectors.

[0005] The present invention provides a method for clipping motion vectors of a reference picture.

[0006] The present invention provides a method for transmitting information for motion vectors. [Means for solving the problem]

[0007] [1] According to one embodiment of the present invention, there is provided a video encoding method, the video encoding method including the steps of: generating a clipped motion vector by clipping a motion vector of a reference picture within a predetermined dynamic range; storing the clipped motion vector in a buffer; and encoding the motion vector of a current block using the motion vector stored in the buffer.

[0008] In [2][1], dynamic range is defined by the level of the video codec.

[0009] In [3][1], the dynamic range is determined by a given bit depth, which is defined by the level of the video codec.

[0010] In [4][1], the X and Y components of the motion vector of the reference picture are clipped to different dynamic ranges.

[0011] [5] According to one embodiment of the present invention, there is provided a video decoding method, the video decoding method including: generating a clipped motion vector by clipping a motion vector of a reference picture within a predetermined dynamic range; storing the clipped motion vector in a buffer; deriving a motion vector of a block to be decoded using the motion vector stored in the buffer; and performing inter-prediction decoding using the motion vector of the block to be decoded.

[0012] In [6][5], dynamic range is defined by the level of the video codec.

[0013] In [7][5], the dynamic range is determined by a given bit depth, which is defined by the level of the video codec.

[0014] In [8][5], the dynamic range is determined by a predetermined bit depth, which is obtained via a sequence parameter set transmitted from a video encoder.

[0015] In [9][8], the sequence parameter set includes a flag indicating whether the motion vectors of the reference pictures are clipped and parameters for obtaining the bit depth.

[0016]

[10] [9], the video decoding method further includes a step of compressing a motion vector of a reference picture, and the sequence parameter set further includes a flag indicating whether the motion vector of the reference picture has been compressed and a parameter for obtaining a compression ratio of the motion vector of the reference picture.

[0017] In

[11] [5], the video decoding method further includes restricting the representation resolution of the motion vectors of the reference picture.

[0018] In

[12] [5], clipped motion vectors are sorted by priority.

[0019] In

[13] [5], the clipped motion vectors are the motion vectors of blocks coded in inter prediction mode.

[0020] In

[14] [5], the video decoding method further includes the step of performing scaling on the motion vectors of the reference picture.

[0021] In

[15] [5], the X and Y components of the motion vector of the reference picture are clipped to different dynamic ranges.

[0022] In

[16]

[15] , the dynamic range of the X component and the dynamic range of the Y component are defined by the video codec level.

[0023]

[17] According to one embodiment of the present invention, there is provided a video decoding device including a reference picture buffer and a motion compensation unit. The reference picture buffer stores a reference picture. The motion compensation unit generates a prediction block using the reference picture and a motion vector of the reference picture. Here, the motion vector of the reference picture is clipped to a predetermined dynamic range.

[0024] In

[18]

[17] , the dynamic range is defined by the level of the video codec.

[0025] In

[19]

[17] , the dynamic range is determined by a given bit depth, which is defined by the level of the video codec.

[0026] In

[20]

[17] , the dynamic range is determined by a predetermined bit depth, which is obtained via a sequence parameter set transmitted from a video encoder. [Effects of the Invention]

[0027] According to the present invention, video can be encoded / decoded using clipped motion vectors.

[0028] According to the present invention, the amount of memory space required to store motion vectors can be reduced.

[0029] According to the present invention, the memory access bandwidth required when reading data from memory can be reduced. [Brief explanation of the drawings]

[0030] [Figure 1] FIG. 1 is a block diagram showing an example of the structure of a video encoding device. [Figure 2] FIG. 1 is a block diagram showing an example of the structure of a video decoding device. [Figure 3] 1 shows an example of a current picture to be coded / decoded and a reference picture. [Figure 4] This is an example of limiting the dynamic range of motion vectors. [Figure 5] 10 is a flow chart illustrating a method for storing motion vectors of a reference picture. [Figure 6] 10 is a flow chart illustrating a method for storing motion vectors of a reference picture. [Figure 7] 10 is a flow chart illustrating a method for storing motion vectors of a reference picture. [Figure 8] 10 is a flow chart illustrating a method for storing motion vectors of a reference picture. [Figure 9] This is an example of quantizing a motion vector. [Figure 10] 10 shows an example of reading motion information from a reference picture. [Figure 11] 10 shows an example of reading motion information from a reference picture. [Figure 12] 10 shows an example of reading motion information from a reference picture. [Figure 13] 10 shows an example of reading motion information from a reference picture. [Figure 14] 1 is a flow chart illustrating a method for encoding video according to an embodiment of the present invention; [Figure 15] 1 is a flow chart illustrating a method for decoding an image according to an embodiment of the present invention; DETAILED DESCRIPTION OF THE INVENTION

[0031] Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings. However, when describing the embodiments of the present invention, if it is determined that a detailed description of well-known configurations or functions would obscure the gist of the present invention, the detailed description will be omitted.

[0032] When a component is described as being "connected" or "coupled" to another component, it means that the component may be directly connected or coupled to the other component, or that another component may be present in between. Furthermore, when a component is described as "including" a specific component in the present invention, it does not exclude components other than the component in question, but means that additional components may be included within the scope of the embodiments or technical idea of ​​the present invention.

[0033] Terms such as "first" and "second" may be used to describe various components, but the components are not limited by these terms. That is, these terms are used only to distinguish one component from another. For example, a first component may be called a second component, and similarly, a second component may be called a first component, without departing from the scope of the present invention.

[0034] Furthermore, the components shown in the embodiments of the present invention are illustrated independently to show that they perform different characteristic functions, and this does not mean that each component cannot be embodied in a single piece of hardware or software. That is, each component is separated for the convenience of explanation, and multiple components may be integrated to operate as a single component, or one component may be divided into multiple components and operate, and this is within the scope of the present invention as long as it does not deviate from the essence of the present invention.

[0035] In addition, some components are not essential components for performing the essential functions of the present invention, but are optional components for improving performance. The present invention may be embodied in a structure including only the essential components, excluding the optional components, and a structure including only the essential components is also included in the scope of the present invention.

[0036] FIG. 1 is a block diagram showing an example of the structure of a video encoding device.

[0037] Referring to FIG. 1, the video encoding device 100 includes a motion prediction unit 111, a motion compensation unit 112, an intra prediction unit 120, a switch 115, a subtractor 125, a transform unit 130, a quantization unit 140, an entropy encoding unit 150, an inverse quantization unit 160, an inverse transform unit 170, an adder 175, a filter unit 180, and a reference picture buffer 190.

[0038] The video encoding device 100 encodes an input video in an intra prediction mode or an inter prediction mode and outputs a bitstream. Intra prediction means intra-frame prediction, and inter prediction means inter-frame prediction. The video encoding device 100 transitions between the intra prediction mode and the inter prediction mode by switching a switch 115. The video encoding apparatus 100 generates a prediction block for an input block of an input video, and then encodes a residual between the input block and the prediction block.

[0039] In the intra prediction mode, the intra prediction unit 120 generates a predicted block by performing spatial prediction using pixel values ​​of already coded blocks surrounding the current block.

[0040] In the inter prediction mode, the motion prediction unit 111 searches for a reference block that best matches an input block in a reference picture stored in the reference picture buffer 190 during the motion prediction process, and obtains a motion vector. The motion compensation unit 112 generates a prediction block by performing motion compensation using the motion vector. Here, the motion vector is a two-dimensional vector used in inter prediction, and indicates the offset between the current block to be coded / decoded and the reference block.

[0041] The subtractor 125 generates a residual block based on the residual between the input block and the predicted block, and the transform unit 130 transforms the residual block and outputs transform coefficients. The quantization unit 140 quantizes the transform coefficients and outputs quantized coefficients.

[0042] The entropy encoder 150 outputs a bitstream by performing entropy encoding based on information acquired during the encoding / quantization process. Entropy encoding reduces the size of a bit string for a symbol to be encoded by representing frequently occurring symbols with a smaller number of bits. Therefore, improved video compression performance can be expected through entropy encoding. The entropy encoder 150 can use encoding methods such as exponential golomb, CAVLC (Context-Adaptive Variable Length Coding), and CABAC (Context-Adaptive Binary Arithmetic Coding) for entropy encoding.

[0043] A coded picture used as a reference picture for inter-prediction coding must be decoded and stored again. Therefore, the inverse quantization unit 160 inversely quantizes the quantized coefficients, and the inverse transform unit 170 inversely transforms the inverse quantized coefficients to output a reconstructed residual block. The adder 175 adds the reconstructed residual block to the predicted block to generate a reconstructed block.

[0044] The filter unit 180, also called an adaptive in-loop filter, applies at least one of deblocking filtering, sample adaptive offset (SAO) compensation, and adaptive loop filtering (ALF) to the restored blocks. Deblocking filtering removes block distortions that occur at inter-block boundaries, SAO compensation adds an appropriate offset to pixel values ​​to compensate for coding errors, and ALF performs filtering based on a value obtained by comparing a restored image with an original image.

[0045] Meanwhile, the reference picture buffer 190 stores the reconstructed blocks that have passed through the filter unit 180 .

[0046] FIG. 2 is a block diagram showing an example of the structure of a video decoding device.

[0047] Referring to FIG. 2, the video decoding apparatus 200 includes an entropy decoding unit 210, an inverse quantization unit 220, an inverse transform unit 230, an intra prediction unit 240, a motion compensation unit 250, an adder 255, a filter unit 260, and a reference picture buffer 270.

[0048] The video decoding apparatus 200 outputs a reconstructed image by decoding a bitstream in an intra prediction mode or an inter prediction mode. The video decoding apparatus 200 transitions between the intra prediction mode and the inter prediction mode by switching a switch. The video decoding apparatus 200 obtains a residual block from the bitstream to generate a prediction block, and then generates a reconstructed block by adding the residual block and the prediction block.

[0049] The entropy decoding unit 210 performs entropy decoding based on a probability distribution. The entropy decoding process is the inverse process of the entropy encoding process described above. That is, the entropy decoder 210 generates symbols including quantized coefficients from a bitstream in which frequently occurring symbols are represented by a small number of bits.

[0050] The inverse quantization unit 220 inverse quantizes the quantized coefficients, and the inverse transform unit 230 inverse transforms the inverse quantized coefficients to generate residual blocks.

[0051] In the intra prediction mode, the intra prediction unit 240 generates a predicted block by performing spatial prediction using pixel values ​​of already decoded blocks surrounding the current block.

[0052] In the inter prediction mode, the motion compensation unit 250 generates a prediction block by performing motion compensation using a motion vector and a reference picture stored in the reference picture buffer 270 .

[0053] The adder 255 adds the prediction block to the residual block, and the filter unit 260 applies at least one of deblocking filtering, SAO compensation, and ALF to the block that has passed through the adder, and outputs a reconstructed image.

[0054] Meanwhile, the reconstructed image can be stored in the reference picture buffer 270 and used for motion compensation.

[0055] Hereinafter, a block refers to a unit of encoding / decoding. During the encoding / decoding process, an image is divided into blocks of a predetermined size and then encoded / decoded. Therefore, a block may also be called a coding unit (CU), a prediction unit (PU), a transform unit (TU), etc., and one block may be divided into smaller sub-blocks.

[0056] Here, the prediction unit refers to a basic unit for performing prediction and / or motion compensation. The prediction unit may be divided into a plurality of partitions, and each partition is called a prediction unit partition. When the prediction unit is divided into a plurality of partitions, the prediction unit partition may be a basic unit for performing prediction and / or motion compensation. Hereinafter, in embodiments of the present invention, the prediction unit may also refer to a prediction unit partition.

[0057] Meanwhile, High Efficiency Video Coding (HEVC) uses a motion vector prediction method based on Advanced Motion Vector Prediction (AMVP).

[0058] In a motion vector prediction method based on improved motion vector prediction, not only the motion vectors (MVs) of reconstruction blocks located in the vicinity of a block to be coded / decoded, but also the motion vectors of blocks located at the same or corresponding positions as the block to be coded / decoded in a reference picture can be used. In this case, a block located at the same or spatially corresponding position as the block to be coded / decoded in a reference picture is called a collocated block, and the motion vector of the collocated block is called a collocated motion vector or a temporal motion vector. However, a collocated block may not only be a block that is necessarily located at the same position as the block to be coded / decoded in a reference picture, but also a block located at a similar position, i.e., a corresponding position, to the block to be coded / decoded.

[0059] In the motion information merge method, motion information is inferred not only from neighboring restored blocks but also from blocks at the same position, and used as motion information of a block to be coded / decoded. In this case, the motion information includes at least one of a reference picture index required for inter prediction, a motion vector, inter prediction mode information indicating uni-direction or bi-direction, a reference picture list, and prediction mode information indicating whether the block is coded in intra prediction mode or inter prediction mode.

[0060] The predicted motion vector for the block to be coded / decoded may be not only the motion vector of a neighboring block spatially adjacent to the block to be coded / decoded, but also the motion vector of an equivalent position block, which is a block temporally adjacent to the block to be coded / decoded.

[0061] FIG. 3 shows an example of a current picture to be coded / decoded and a reference picture.

[0062] 3, block X indicates a current block to be coded / decoded in a current picture 310, and blocks A, B, C, D, and E indicate reconstructed blocks located around the current block to be coded / decoded. Block T in a reference picture 320 indicates an equivalent-position block located at a position corresponding to the current block to be coded / decoded.

[0063] A motion vector to be used as a predicted motion vector in a block to be coded / decoded can be known through a motion vector predictor index.

[0064] [Table 1]

[0065] As shown in Table 1, the motion vector predictor index (mvp_idx_l0, mvp_idx_l1) for each reference picture list is transmitted to the decoding device, and the decoding device uses the motion vector that is the same as the motion vector predicted by the encoding device as the predicted motion vector.

[0066] When encoding / decoding a current block using motion vectors of neighboring blocks spatially adjacent to the current block, the motion vectors can be stored in a relatively small memory. However, when temporal motion vectors are used, all motion vectors of the reference picture must be stored in memory, which requires a relatively large memory, and the memory access bandwidth required when reading data from the memory also increases. Therefore, in application environments where memory space is limited or power consumption must be minimized, such as mobile receiving terminals, it is necessary to store temporal motion vectors more efficiently.

[0067] Meanwhile, a conventional technique for storing motion vectors in memory involves reducing the spatial resolution of the motion vectors. In this method, the motion vectors are compressed at a given rate and stored in memory. For example, motion vectors stored in 4x4 block units are stored in blocks larger than 4x4 to reduce the number of stored motion vectors. At this time, information regarding the compression rate is transmitted to adjust the block size of the stored motion vectors. The information is transmitted via a sequence parameter set (SPS) as shown in Table 2.

[0068] [Table 2]

[0069] Referring to Table 2, if motion_vector_buffer_comp_flag is 1, the motion vector buffer compression process is performed.

[0070] motion_vector_buffer_comp_ratio_log2 indicates the compression ratio of the motion vector buffer compression process. If motion_vector_buffer_comp_ratio_log2 does not exist, motion_vector_buffer_comp_ratio_log2 is inferred to be 0, and the motion vector buffer compression ratio is expressed as Equation 1.

[0071]

number

[0072] For example, if every 4x4 block in a 1920x1080 (1080p) picture has a different motion vector and uses two reference picture lists, with two reference pictures per list, then a total of 3.21 Mbytes of memory space is required to store the temporal motion vectors, as follows:

[0073] 1. 26 bis bit depth per motion vector

[0074] (1) Dynamic range of the X component of the motion vector: -252 to +7676 (bit depth: 13 bits)

[0075] (2) Dynamic range of the Y component of the motion vector: -252 to +4316 (bit depth: 13 bits)

[0076] (3) (The dynamic range of each component of the motion vector is calculated based on the first prediction unit in the corresponding picture.)

[0077] 2. When all 4 x 4 block units have different motion vectors: 480 x 270 = 129600 blocks

[0078] 3. Use two motion vectors for each block

[0079] 4. Number of reference picture lists: 2

[0080] 5. Use two reference pictures per reference picture list

[0081] ⇒ 26 bits x 129600 blocks x 2 motion vectors x 2 reference picture lists x 2 reference pictures = 26956800 bits = 3.21 MB

[0082] The above-described method of reducing the spatial resolution of motion vectors can reduce the required memory space and memory access bandwidth by utilizing the spatial correlation of motion vectors, but the method of reducing the spatial resolution of motion vectors does not limit the dynamic range of motion vectors.

[0083] If the memory size is reduced to 1 / 4, the memory size required in the above example will be reduced to approximately 0.8 MB. If the dynamic range of the motion vectors is further limited and the bit depth required for storing the motion vectors is reduced to only 6 bits per component of the motion vector, the memory size required can be further reduced to 0.37 MB.

[0084] Therefore, in the present invention, the dynamic range of the motion vector is limited in order to reduce the memory space required for storing the motion vector and the memory access bandwidth required when reading data from the memory. The motion vector of the reference picture with the limited dynamic range can be used as the temporal motion vector for the block to be coded / decoded.

[0085] Hereinafter, the dynamic range refers to the interval between the minimum and maximum values ​​that the negative and positive components of a motion vector can have, based on 0, and the bit depth refers to the size of the space required to store the motion vector and may also refer to the bit width. Furthermore, unless otherwise specified, the motion vector refers to the motion vector of a reference picture, i.e., a temporal motion vector.

[0086] If each component of a motion vector falls outside the dynamic range, it is expressed as the minimum or maximum value of the corresponding dynamic range. For example, if the X component of a motion vector is 312 and the maximum value of the dynamic range of each component of the motion vector is 256, the X component of the motion vector is limited to 256.

[0087] Similarly, if the bit depth of each component of a motion vector is 16 bits and the motion vector is (-36, 24), limiting the bit depth of each component of the motion vector to 6 bits will result in each component of the motion vector having a dynamic range of -32 to +31, and the motion vector will be represented as (-32, 24), which is within the dynamic range.

[0088] Also, if the bit depth of each component of a motion vector is 16 bits and the motion vector is (-49, 142), if the bit depth of each component of the motion vector is limited to 9 bits, each component of the motion vector will have a dynamic range of -256 to +255, and the motion vector will be represented as (-49, 142) without any change.

[0089] FIG. 4 shows an example of limiting the dynamic range of motion vectors.

[0090] Referring to FIG. 4, if the dynamic range of a motion vector having a dynamic range of −4096 to +4095 is limited to −128 to +127, the bit depth can be reduced from 13 bits to 8 bits.

[0091] Each component of the temporal motion vector is clipped as shown in Equations 2 and 3 to be stored at a bit depth of N bits (s), where N is a positive integer.

[0092]

number

[0093]

number

[0094] Here, MV_X is the X component of the motion vector, MV_Y is the Y component of the motion vector, min(a,b) is an operation that outputs the smaller value of a and b, and max(a,b) is an operation that outputs the larger value of a and b. clippedMV_X and clippedMV_Y are the X and Y components of the clipped temporal motion vector, respectively, and are stored in memory and used as the temporal motion vector of the block to be coded / decoded.

[0095] For example, as shown in Table 3, if the memory space size is 48 bytes and a bit depth of 16 bits is used for each component of the motion vector, a total of 12 motion vectors can be stored.

[0096] [Table 3]

[0097] However, if only 8 bits of bit depth is used for each component of the motion vector, a total of 24 motion vectors can be stored as shown in Table 4.

[0098] [Table 4]

[0099] Therefore, according to the present invention, when an image restored in an encoding device and / or a decoding device is stored in a decoded picture buffer (DPB) after undergoing in-loop filtering such as a deblocking filter or an adaptive loop filter, the dynamic range of the motion vector is limited and the motion vector of the reference picture is stored. Here, the restored image buffer may refer to the reference picture buffer of FIG. 1 or FIG. 2.

[0100] I. Motion Vector Clipping Process

[0101] The process of clipping each component of the motion vector is performed when the slice type (slice_type) is not an I-picture. The motion vector clipping process is performed in units of tree blocks or largest coding units (LCUs) after the filtering process is completed.

[0102] The input of the motion vector clipping process is the pixel position (xP, yP) of the top left corner of the prediction unit in the current picture and the motion vector matrices MvL0 and MvL1, and the output is the clipped motion vector matrices CMvL0 and CMvL1.

[0103] The operations of Equations 4 to 7 are performed on the matrices MvL0, MvL1, CMvL0, and CMvL1.

[0104]

number

[0105]

number

[0106]

number

[0107]

number

[0108] Here, TMVBitWidth indicates the bit depth of the motion vector, and Clip3(a, b, c) indicates a function that clips c so that it is within the range between a and b.

[0109] II. Motion Vector Storage Process

[0110] 5 to 8 are flow charts illustrating a method for storing motion vectors of a reference picture.

[0111] 5, a motion vector of a reference picture can be stored by using both an image buffer for storing a restored image and a motion vector buffer for storing a motion vector. At this time, the restored image undergoes an in-loop filtering process (S510), and the motion vector has its dynamic range limited (S520) and is stored (S540).

[0112] Referring to FIG. 6, both the image buffer and the motion vector buffer are used, and the motion vectors are stored (S640) after undergoing a dynamic range limiting process (S620) and a spatial resolution reducing process (S630).

[0113] Referring again to FIG. 7, the restored image undergoes an in-loop filtering process (S710) and is stored in an image buffer (S740), and the motion vector has its dynamic range limited (S720) and is stored in a motion vector buffer (S750).

[0114] Also, referring to FIG. 8, the restored image undergoes an in-loop filtering process (S810) and is stored in an image buffer (S840), and the motion vector undergoes a dynamic range limiting process (S820) and a spatial resolution reduction process (S830) and is then stored (S850).

[0115] Meanwhile, in the embodiments of FIGS. 6 and 8, the dynamic range limiting steps (S620, S820) and the spatial resolution reducing steps (S630, S830) are not limited to being performed in the same order, and may be changed.

[0116] In addition, to further reduce memory access bandwidth, the dynamic ranges of the components of the motion vector can be limited differently from each other. For example, only one of the dynamic range of the X component and the dynamic range of the Y component can be limited, or the dynamic range of the Y component can be more limited than the dynamic range of the X component.

[0117] The limited dynamic range of the motion vector is transmitted via a sequence parameter set, a picture parameter set (PPS), a slice header, etc., and the decoding device similarly performs dynamic range restriction of the temporal motion vector within the sequence, picture, or slice. At this time, the bit depth, which is the size of memory space required to store the motion vector expressed within the dynamic range range, can be transmitted together. Also, instead of storing the motion vector using a fixed bit depth, the temporal motion vector can be efficiently stored to match the motion characteristics of the image by using the dynamic range transmitted via the sequence parameter, picture parameter set, slice header, etc.

[0118] Meanwhile, motion vectors may be quantized and stored. When motion vectors are quantized and stored, the precision of the motion vectors decreases. Quantization methods include uniform quantization, in which the step size is uniform, and non-uniform quantization, in which the step size is not uniform. The quantization step size is set to a fixed value previously agreed upon between the encoding device and the decoding device, or is transmitted from the encoding device to the decoding device via a sequence parameter set, a picture parameter set, or a slice header. The decoding device uses the quantized motion vector as is or after inverse quantization. FIG. 9 shows an example of quantizing a motion vector. Referring to FIG. 9, if a motion vector has component values ​​ranging from 32 to 48, the motion vector is quantized to 40.

[0119] Furthermore, motion vectors can be stored with a limited representation resolution. The representation resolution refers to integer pixel units (1 pixel units) or fractional pixel units (1 / 2 pixel units, 1 / 4 pixel units, etc.). For example, the resolution of a motion vector processed in 1 / 4 pixel units can be stored in integer pixels. The representation resolution of the motion vector is set to a fixed value agreed upon in advance between the encoding device and the decoding device, or is transmitted from the encoding device to the decoding device via a sequence parameter set, a picture parameter set, a slice header, etc.

[0120] Also, the dynamic range limiting process, spatial resolution reducing process, and quantization process can be performed on only some of the temporal motion vectors stored in the memory.

[0121] When the dynamic range of a motion vector is limited and stored, information regarding the dynamic range of the motion vector can be additionally stored in memory. For example, if the dynamic range of the motion vector is -128 to +127, a flag of 1 can be additionally stored, and if the dynamic range of the motion vector is -32 to +31, a flag of 0 can be additionally stored. In this case, the flag information can be stored together with the motion vector or in a memory other than the memory in which the motion vector is stored. If the flag information and the motion vector are stored in different memories, the flag information can be arbitrarily approached when determining the dynamic range in which a specific motion vector is stored. In addition, information regarding the dynamic range in which some motion vectors are stored can be transmitted via a sequence parameter set, a picture parameter set, a slice header, or the like, so that a decoder can operate in the same manner as an encoder.

[0122] When storing motion vectors with reduced spatial resolution, information regarding the block size of the motion vectors can be added and stored in memory. For example, if the block size of the motion vectors is 4x4, a flag of 1 can be added and if the block size is 16x16, a flag of 0 can be added and stored. In this case, the flag information can be stored together with the motion vectors or in a memory other than the memory in which the motion vectors are stored. When the flag information and the motion vectors are stored in different memories, the flag information can be arbitrarily approximated when determining the block size in which a specific motion vector is stored. In addition, information regarding the block size in which some motion vectors are stored can be transmitted via a sequence parameter set, a picture parameter set, a slice header, or the like, so that a decoder can operate in the same manner as an encoder.

[0123] When a motion vector is quantized and stored, information regarding the precision of the motion vector can be added and stored in memory. For example, if the quantization step size is set to 4, a flag of 1 can be added and if the quantization step size is set to 1, a flag of 0 can be added and stored. In this case, the flag information can be stored together with the motion vector or in a memory other than the memory in which the motion vector is stored. When the flag information and the motion vector are stored in different memories, the step size at which a specific motion vector is quantized and stored can be arbitrarily close to the flag information. In addition, information regarding the step size at which some motion vectors are quantized and stored can be transmitted via a sequence parameter set, a picture parameter set, a slice header, or the like, so that a decoder can operate in the same way as an encoder.

[0124] Furthermore, when storing motion information in a memory, the spatial resolution of the motion vector may be reduced before storing the motion information. In this case, the motion information includes at least one of a reference picture index required for inter prediction, a motion vector, inter prediction mode information indicating uni-direction or bi-direction, a reference picture list, and prediction mode information indicating whether the image is coded in an intra prediction mode or an inter prediction mode.

[0125] For example, among a plurality of motion information of a specific region, motion information of a prediction unit having the largest partition size may be stored in a memory as representative motion information. In this case, the specific region may include a region within a block to be coded / decoded and a region of a neighboring block. Furthermore, when an entire picture or slice is divided into blocks of a certain size, the specific region may be a region including a block in which motion information is stored.

[0126] For example, the representative motion information can be stored in memory after removing the motion information coded using a motion information merging method or a coding information skip method from the multiple motion information included in a specific region.

[0127] For example, the most frequently occurring motion information among a plurality of motion information included in a specific region can be stored in memory as representative motion information, and the number of occurrences of the motion information can be calculated for each block size.

[0128] For example, motion information of a specific position may be stored among a plurality of pieces of motion information included in a specific region. In this case, the specific position may be a position included in the specific region or a fixed position in the specific region. Also, the specific position may be selected as one of a plurality of positions. When a plurality of positions are used, a priority may be determined for each position, and motion information may be stored in memory according to the priority.

[0129] For example, when storing multiple motion information contained in a specific region in memory, there is no motion information for blocks coded in intra prediction mode, blocks coded in PCM (Pulse Coded Modulation) mode, or outside slice or picture boundaries, so the motion information for the corresponding positions is not stored in memory.

[0130] In the above example, when storing motion information for a specific position, if motion information for the corresponding position does not exist, motion information for a block at the same position, motion information for a block to be coded previously, or motion information for a neighboring block may be used as the motion information for the corresponding position. In this case, the specific position is a sample position or block position within a block neighboring the current block to be coded / decoded. For example, if motion information for a specific position does not exist, a median or average value of motion information for inter-prediction coded blocks neighboring the corresponding position may be stored in memory. For example, if motion information for a specific position does not exist, an average value of motion information for neighboring blocks around the corresponding position may be stored in memory. When calculating the median and average value, if the motion information for the neighboring blocks differs in one or more of reference picture index, reference picture list, and inter-prediction mode information, the size of the motion vector may be adjusted according to the reference picture index, reference picture list, inter-prediction mode information, picture display order, etc.

[0131] III. Motion Vector Derivation Process

[0132] The motion information is stored in memory using the above-mentioned motion information method, and the stored motion information can be read when using the motion information of the reference picture using the motion vector prediction method, the enhanced motion vector prediction method, or the motion information merging method.

[0133] For example, it is possible to read motion information of a position in a reference picture that corresponds to the position of a block to be coded / decoded, where the position in the reference picture that corresponds to the position of a block to be coded / decoded is a fixed position in a specific region or a position that is relative to the position of the block to be coded / decoded.

[0134] 10 to 13 show examples of reading motion information from a reference picture.

[0135] 10 to 13, block X indicates a current block to be coded / decoded in current pictures 1010, 1110, 1210, and 1310, and blocks A, B, C, D, and E indicate reconstructed blocks located around the current block to be coded / decoded. Block T in reference pictures 1020, 1120, 1220, and 1320 indicates a block at the same position as the current block to be coded / decoded. Block Y in reference picture 1320 in FIG. 13 indicates a block located outside the current block to be coded / decoded and corresponding to it.

[0136] Referring to FIG. 10, motion information corresponding to a pixel position at the upper left corner of the current block X to be coded / decoded in the reference picture can be read.

[0137] Referring to FIG. 11, motion information corresponding to a position corresponding to a central pixel position among positions of a block X to be coded / decoded in a reference picture can be read.

[0138] Referring to FIG. 12, motion information corresponding to a pixel position at the bottom right corner of the current block X to be coded / decoded in the reference picture can be read.

[0139] Referring to FIG. 13, motion information corresponding to a position outside the current block X to be coded / decoded in the reference picture can be read.

[0140] Using the motion information stored in memory, i.e., the motion information of the reference picture, encoding / decoding methods such as motion vector prediction, improved motion vector prediction, motion information merging, and motion information merge skip can be performed.

[0141] The motion vectors are stored in memory using at least one of the following methods: a motion vector dynamic range limiting method, a motion vector spatial resolution reducing method, a motion vector quantization method, and a motion vector representation resolution reducing method. The stored motion vectors can then be used for motion vector prediction and motion information merging of the block to be coded / decoded.

[0142] The process of reading the motion vector of the reference picture from memory is called the temporal motion vector derivation process. In the temporal motion vector derivation process, TMVbitWidth indicates the bit width of the temporal motion vector stored in memory.

[0143] The inputs to the temporal motion vector derivation process are the pixel position of the top left corner of the prediction unit in the current picture (xP, yP), the width and height of the luma prediction unit (nPSW and nPSH), and the reference picture index of the current prediction unit partition (refIdxLX). The outputs are the motion vector prediction value (mxLXCl) and the availability flag (availableFlagLXCol).

[0144] RefPicOrderCnt(pic, refidx, LX) is a function that outputs the PicOrderCnt of the reference picture RefPicListX[refidx] of pic, where X can be 0 or 1. The PicOrderCnt of the reference picture exists until the picture is processed to be "non-existing". Clip3(a, b, c) is a function that clips c to be within the range between a and b.

[0145] A colPic having a collocated partition (collocatedpartition) becomes RefPicList1[0] if the slice type (slice_type) is B-slice and collocated_from_l0_flag is 0. Otherwise, that is, if the slice type is P-slice and collocated_from_l0_flag is 1, it becomes RefPicList0[0].

[0146] The colPu and colPu positions (xPCol, yPCol) are induced in the following order:

[0147] 1. The luminance component position (xPRb, yPRb) of the bottom right corner of the current prediction unit is defined as in Equation 8 and Equation 9.

[0148]

number

[0149]

number

[0150] 2. If colPu is coded in intra prediction mode and colPu does not exist,

[0151] (1) The central luminance component position (xPCtr, yPCtr) of the current prediction unit is defined as in Equation 10 and Equation 11.

[0152]

number

[0153]

number

[0154] (2) colPu is set to the prediction unit containing the position ((xPCtr>>4)<<4, (yPCtr>>4)<<4) in colPic.

[0155] 3. (xPCol, yPCol) is the value from the luminance component position at the top left corner of colPic to the luminance component position at the top left corner of colPu.

[0156] mvLXCol and availableFlagLXCol are derived as follows:

[0157] 1. If colPu is coded in an intra prediction mode and colPu does not exist, each component of mvLXCol is set to 0, and availableFlagLXCol is also set to 0.

[0158] 2. Otherwise, that is, if colPu is not coded in intra prediction mode and colPu exists, mvLXCol and refIdxCol are derived as follows:

[0159] (1) If PredFlagL0[xPCol][yPCol] is 0, the motion vector mvCol is determined to be MvL1[xPCol][yPCol], and the reference picture index refIdxCol is determined to be RefIdxL1[xPCol][yPCol].

[0160] (2) Otherwise, that is, if PredFlagL0[xPCol][yPCol] is 1, the following process is performed.

[0161] 1) If PredFlagL1[xPCol][yPCol] is 0, the motion vector mvCol is determined to be MvL0[xPCol][yPCol], and the reference picture index refIdxCol is determined to be RefIdxL0[xPCol][yPCol].

[0162] 2) Otherwise, that is, if PredFlagL1[xPCol][yPCol] is 1, the following process is performed.

[0163] aX can be 0 or 1, and the following allocation process is performed:

[0164] i. RefIdxColLX is assigned to RefIdxLX[xPCol][yPCol].

[0165] ii. If PicOrderCnt(colPic) is less than PicOrderCnt(currPic) and RefPicOrderCnt(colPic,RefIdxColLX,LX) is greater than PicOrderCnt(currPic), or if PicOrderCnt(colPic) is greater than PicOrderCnt(currPic) and RefPicOrderCnt(colPic,RefIdxColLX,LX) is less than PicOrderCnt(currPic), MvXCross is assigned to 1.

[0166] iii. Otherwise, if PicOrderCnt(colPic) is less than PicOrderCnt(currPic) and RefPicOrderCnt(colPic,RefIdxColLX,LX) is less than or equal to PicOrderCnt(currPic), or if PicOrderCnt(colPic) is greater than PicOrderCnt(currPic) and RefPicOrderCnt(colPic,RefIdxColLX,LX) is greater than or equal to PicOrderCnt(currPic), then MvXCross is assigned 1.

[0167] b. If one of the following conditions is met, the motion vector mvCol, reference picture index refIdxCol, and ListCol are determined to be MvL1[xPCol][yPCol], RefIdxColL1, and L1, respectively.

[0168] i.Mv0Cross is 0, Mv1Cross is 1.

[0169] ii.Mv0Cross and Mv1Cross are the same and the reference picture list is L1.

[0170] c. Otherwise, the motion vector mvCol, reference picture index refIdxCol, ListCol are determined to be MvL0[xPCol][yPCol], RefIdxColL0, L0, respectively.

[0171] 3) availableFlagLXCol becomes 1, and the calculations of Equation 12 or Equations 13 to 18 are executed.

[0172] a. If PicOrderCnt(colPic)-RefPicOrderCnt(colPic,refIdxCol,ListCol) is PicOrderCnt(currPic)-RefPicOrderCnt(currPic,refIdxLX,LX),

[0173]

number

[0174] b. Otherwise,

[0175]

number

[0176]

number

[0177]

number

[0178]

number

[0179] Here, td and tb are as shown in Equations 17 and 18.

[0180]

number

[0181]

number

[0182] That is, referring to Equations 13 to 16, mvLXCol is derived as a scaled version of the motion vector mvCol.

[0183] On the other hand, even if a motion vector is clipped within the dynamic range, if the clipped motion vector is scaled, it may again fall outside the dynamic range. Therefore, after deriving the scaled motion vector, the dynamic range of the motion vector can be limited. In this case, Equation 15 and Equation 16 can be replaced with Equation 19 and Equation 20, respectively.

[0184]

number

[0185]

number

[0186] IV. Information Transmission Method for Clipping Temporal Motion Vectors in a Decoding Device

[0187] In the following, a method for transmitting the information necessary for the decoder to clip the temporal motion vectors in the same way as the encoder will be described.

[0188] The TMVBitWidth in the above-described temporal motion vector derivation process can be transmitted from the encoding device to the decoding device via a sequence parameter set, a picture parameter set, a slice header, or the like.

[0189] [Table 5]

[0190] In Table 5, bit_width_temporal_motion_vector_minus8 indicates the bit width of the temporal motion vector component. If bit_width_temporal_motion_vector_minus8 does not exist, it is inferred to be 0, and the bit width of the temporal motion vector component is expressed as in Equation 21.

[0191]

number

[0192] 1. Information Transmission Method 1 - Compressing motion vectors and limiting the bit depth of motion vectors

[0193] [Table 6]

[0194] Referring to Table 6, if motion_vector_buffer_comp_flag is 1, the motion vector buffer compression process is performed.

[0195] motion_vector_buffer_comp_ratio_log2 indicates the compression ratio of the motion vector buffer compression process. If motion_vector_buffer_comp_ratio_log2 does not exist, it is inferred to be 0, and the motion vector buffer compression ratio is expressed as in Equation 22.

[0196]

number

[0197] Also, referring to Table 6, if bit_depth_temporal_motion_vector_constraint_flag is 1, the temporal motion vector bit depth constraint process is performed.

[0198] bit_depth_temporal_motion_vector_minus8 indicates the bit depth of the temporal motion vector. If bit_depth_temporal_motion_vector_minus8 does not exist, it is inferred to be 0, and the bit depth of the temporal motion vector is expressed as shown in Equation 23.

[0199]

number

[0200] 2. Information Transmission Method 2 - Limiting the Bit Depth of Motion Vectors

[0201] [Table 7]

[0202] Referring to Table 7, if bit_depth_temporal_motion_vector_constraint_flag is 1, the temporal motion vector bit depth constraint process is performed.

[0203] bit_depth_temporal_motion_vector_minus8 indicates the bit depth of the temporal motion vector. If bit_depth_temporal_motion_vector_minus8 does not exist, it is inferred to be 0, and the bit depth of the temporal motion vector is expressed as shown in Equation 24.

[0204]

number

[0205] 3. Information Transmission Method 3 - Limiting the Bit Depth of Motion Vectors

[0206] [Table 8]

[0207] In Table 8, bit_depth_temporal_motion_vector_minus8 indicates the bit depth of the temporal motion vector. If bit_depth_temporal_motion_vector_minus8 does not exist, it is inferred to be 0, and the bit depth of the temporal motion vector is expressed as in Equation 25.

[0208]

number

[0209] 4. Information Transmission Method 4 - Limiting the bit depth for each of the X and Y components of the motion vector

[0210] [Table 9]

[0211] Referring to Table 9, if bit_depth_temporal_motion_vector_constraint_flag is 1, the temporal motion vector bit depth constraint process is performed.

[0212] bit_depth_temporal_motion_vector_x_minus8 indicates the bit depth of the X component of the temporal motion vector. If bit_depth_temporal_motion_vector_x_minus8 does not exist, it is inferred to be 0, and the bit depth of the temporal motion vector is expressed as shown in Equation 26.

[0213]

number

[0214] bit_depth_temporal_motion_vector_y_minus8 indicates the bit depth of the Y component of the temporal motion vector. If bit_depth_temporal_motion_vector_x_minus8 does not exist, it is inferred to be 0, and the bit depth of the temporal motion vector is expressed as shown in Equation 27.

[0215]

number

[0216] 5. Information Transmission Method 5 - Compressing Motion Vectors and Limiting the Bit Depth of Motion Vectors

[0217] [Table 10]

[0218] Referring to Table 10, if motion_vector_buffer_comp_flag is 1, the motion vector buffer compression process is performed.

[0219] motion_vector_buffer_comp_ratio_log2 indicates the compression ratio of the motion vector buffer compression process. If motion_vector_buffer_comp_ratio_log2 does not exist, it is inferred to be 0, and the motion vector buffer compression ratio is expressed as in Equation 28.

[0220]

number

[0221] V. Defining Dynamic Range via Video Codec Levels

[0222] The dynamic range of a temporal motion vector can be defined via a video codec level, rather than being transmitted via a sequence parameter set, a picture parameter set, or a slice header. Encoding and decoding devices can determine the limited dynamic range of a motion vector using the level information.

[0223] Also, the dynamic range and / or bit depth of each of the X and Y components of the motion vector can be defined differently for each level, and the minimum and maximum values ​​of each component can also be defined.

[0224] Tables 11 and 12 are examples of the case where TMVBitWidth in the temporal motion vector derivation process described above is defined by level.

[0225] [Table 11]

[0226] Referring to Table 11, TMVBitWidth is set to MaxTMVBitWidth defined in the level, where MaxTMVBitWidth indicates the maximum bit width of the temporal motion vector when it is stored in memory.

[0227] On the other hand, TMVBitWidth can be defined by a level, and the difference (delta value) from the defined value can be transmitted in a sequence parameter set, a picture parameter set, or a slice header. That is, TMVBitWidth can be set to a value obtained by adding the difference transmitted in the sequence parameter set, the picture parameter set, or the slice header to MaxTMVBitWidth defined by the level. In this case, TMVBitWidth indicates the bit width of the motion vector when the temporal motion vector is stored in memory.

[0228] [Table 12]

[0229] [Table 13]

[0230] In Table 13, delta_bit_width_temporal_motion_vector_minus8 indicates the difference in bit width of the temporal motion vector component. If delta_bit_width_temporal_motion_vector_minus8 does not exist, it is inferred to be 0, and the bit width of the temporal motion vector component is expressed as in Equation 29.

[0231]

number

[0232] It is also possible to define the dynamic range of each component of the temporal motion vector in levels as shown in Table 14.

[0233] [Table 14]

[0234] Also, as shown in Tables 15 to 17, the bit width of each component of the temporal motion vector can be defined for each level.

[0235] [Table 15]

[0236] [Table 16]

[0237] [Table 17]

[0238] It is also possible to define the bit width of the Y component of the temporal motion vector for the level as shown in Table 18.

[0239] [Table 18]

[0240] In addition, the dynamic range of the temporal motion vector can be defined as a fixed value predetermined in the encoding device and the decoding device without transmitting information on the motion vector limitation, or can be stored in the form of a fixed bit depth.

[0241] When TMVBitWidth is fixed to the same value in the encoding device and the decoding device, TMVBitWidth is a positive integer such as 4, 6, 8, 10, 12, 14, or 16. In this case, TMVBitWidth indicates the bit width of the temporal motion vector when it is stored in memory.

[0242] 14 is a flowchart illustrating a video encoding method according to an embodiment of the present invention, which includes a clipping step (S1410), a storing step (S1420), and an encoding step (S1430).

[0243] The video encoding device and / or decoding device clips the motion vector of the reference picture to a predetermined dynamic range (S1410). As described above, in "I. Motion Vector Clipping Process," a motion vector outside the dynamic range is represented by the minimum or maximum value of the corresponding dynamic range. Therefore, as described above in "IV. Information Transmission Method for Clipping Temporal Motion Vector in Decoding Device" and "V. Dynamic Range Definition via Video Codec Level," the motion vector of the reference picture can be clipped to a predetermined dynamic range by restricting the bit depth via the video codec level and / or sequence parameter set, or restricting the dynamic range via the video codec level.

[0244] The video encoding and / or decoding apparatus stores the motion vector of the clipped reference picture in a buffer as described above through "II. Motion Vector Storing Process" (S1420). The motion vector can be stored in the buffer together with the reconstructed video or separately.

[0245] The video encoding apparatus encodes the motion vector of the current block using the motion vector of the stored reference picture (S1430). As described above in "III. Motion Vector Derivation Process," the improved motion vector prediction method used in HEVC uses not only the motion vectors of reconstructed blocks located in the vicinity of the current block to be encoded / decoded, but also the motion vectors of blocks located in the same or corresponding positions as the current block to be encoded / decoded in the reference picture. Therefore, the motion vector of the current block to be encoded may be not only the motion vectors of neighboring blocks of the current block to be encoded, but also the motion vector of the reference picture, i.e., a temporal motion vector.

[0246] Meanwhile, since the dynamic range of the X component and the dynamic range of the Y component of the motion vector of the reference picture can be defined differently from each other, each component of the motion vector of the reference picture can be clipped within its respective dynamic range.

[0247] In addition to the method of limiting the dynamic range of the motion vector of the reference picture, a method of compressing the motion vector of the reference picture can also be used. When limiting the dynamic range of the motion vector of the reference picture or compressing the motion vector of the reference picture, a flag indicating this and corresponding parameters can be defined in the video codec level and / or sequence parameter set, etc.

[0248] In addition, by using the motion information stored in memory, i.e., the motion information of the reference picture, it is possible to perform coding methods such as motion vector prediction, improved motion vector prediction, motion information merging, and motion information merge skip.

[0249] 15 is a flowchart illustrating a video decoding method according to an embodiment of the present invention, which includes a clipping step (S1510), a storing step (S1520), a deriving step (S1530), and a decoding step (S1540).

[0250] The clipping step (S1510) and storage step (S1520) of Figure 15 are the same as the clipping step (S1410) and storage step (S1420) of Figure 14, which use the previously described "I. Motion Vector Clipping Step" and "II. Motion Vector Storage Step." The derivation step (S1530) of Figure 15 uses the previously described "III. Motion Vector Derivation Step" and is symmetrical to the encoding step (S1430) of Figure 14. Therefore, detailed description thereof will be omitted.

[0251] The video decoding apparatus performs inter-prediction decoding using the motion vector of the block to be decoded (S1540). The video decoding apparatus stores the motion vector in a memory using at least one of a motion vector dynamic range limiting method, a motion vector spatial resolution reducing method, a motion vector quantization method, and a motion vector representation resolution reducing method, and can use the stored motion vector for motion vector prediction and motion information merging of the block to be decoded.

[0252] In addition, the motion information stored in the memory, i.e., the motion information of the reference picture, can be used to perform decoding methods such as motion vector prediction, improved motion vector prediction, motion information merging, and motion information merge skip.

[0253] Although the above-described embodiments are described using flowcharts expressed as a series of steps or blocks, the present invention is not limited to the order of the steps described above, and some steps may occur in a different order or simultaneously with other steps. Furthermore, a person skilled in the art to which the present invention pertains can understand that the steps shown in the flowcharts are not exclusive, and other steps may be included, or some steps may be omitted.

[0254] Furthermore, the above-described embodiments include examples of various aspects. In order to illustrate various aspects, it is not possible to describe all possible combinations. However, a person skilled in the art to which the present invention pertains can recognize that other combinations are possible. Therefore, the present invention includes all alterations, modifications, and variations that fall within the scope of the claims.

Claims

1. a reference picture buffer for storing a reference picture and a motion vector of the reference picture, the motion vector of the reference picture being clipped at a predetermined bit width to limit a dynamic range of the motion vector of the reference picture, and the clipped motion vector being used as a collocated motion vector of a collocated block of the reference picture located at a position corresponding to a current block of a current picture; a motion compensation unit for generating a predicted block of the current block using a motion vector of the current block, the motion vector of the current block being predicted by the equivalent-position motion vector for the current block derived from the reference picture buffer or a motion vector of a neighboring block spatially adjacent to the current block; Including, The corresponding location of the equivalent position block is a center point or a lower right point of the current block.

2. a reference picture buffer for storing a reference picture and a motion vector of the reference picture, the motion vector of the reference picture being clipped at a predetermined bit width to limit a dynamic range of the motion vector of the reference picture, and the clipped motion vector being used as a collocated motion vector of a collocated block of the reference picture located at a position corresponding to a current block of a current picture; a motion compensation unit for generating a predicted block of the current block using a motion vector of the current block, the motion vector of the current block being predicted by the equivalent-position motion vector for the current block derived from the reference picture buffer or a motion vector of a neighboring block spatially adjacent to the current block; Including, The corresponding location of the equivalent position block is a center point or a bottom right point of the current block.

3. A bitstream transmission method executed by a video encoding device, comprising: storing a reference picture and a motion vector of the reference picture, the motion vector of the reference picture being clipped at a predetermined bit width to limit a dynamic range of the motion vector of the reference picture, and the clipped motion vector being used as a collocated motion vector of a collocated block of the reference picture located at a position corresponding to a current block of a current picture; generating a predicted block of the current block using a motion vector of the current block, wherein the motion vector of the current block is predicted by the equivalent-position motion vector for the current block derived from a reference picture buffer or a motion vector of a neighboring block that is spatially adjacent to the current block; transmitting the bitstream to a video decoder; The method wherein the corresponding location of the equivalent position block is the center point or the bottom right point of the current block.

Citation Information

Patent Citations

  • Image encoding method and image decoding method

    WO2011125211A1