Region-based intra block copy
By dividing the block search area into multiple regions, the search range is reduced, which solves the problems of low coding efficiency and high computational complexity of intra-frame block copy coding schemes in natural video sequences, and achieves more efficient coding and a lower complexity encoder design.
Patent Information
- Application Number
- CN202080042116.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-06-07
- Filing Date
- 2020-06-05
- Publication Date
- 2025-10-28
- Estimated Expiration
- 2040-06-05
AI Technical Summary
Existing intra-block copy coding schemes have low coding efficiency and high computational complexity in natural video sequences, making it difficult to achieve a good trade-off between coding benefits and encoder complexity.
The block search area is divided into multiple block search regions. Encoding and decoding are performed by searching the difference between the first predetermined block and the second predetermined block within these regions. This reduces the search range, thereby improving encoding efficiency and reducing computational complexity.
By using the region partitioning method, coding efficiency is significantly improved, the computational complexity of the encoder is reduced, and a better trade-off is achieved between coding benefits and complexity.
Smart Images

Figure CN114026853B_ABST
Abstract
Description
Technical Field
[0001] Embodiments of this disclosure relate to an encoder for encoding images block-wise into a data stream, a decoder for decoding images block-wise from a data stream, a method for block-wise encoding, and a method for block-wise decoding. Some specific embodiments may relate to a region-based intra-block copy coding scheme. Background Technology
[0002] Intra-block copying (IBC) is one of the intra-prediction methods used in the HEVC Screen Content Coding (SCC) extension [1]. This method is also adopted in H.266 / Multi-Functional Video Coding [2]. On the encoder side, the above method searches for similar blocks of the original block in the currently reconstructed picture. An error minimization metric (in this case, the sum of absolute differences (SAD)) is used in the block matching (BM) algorithm. During the BM search, integer sample positions are checked to find the best match of the current original block by calculating the SAD between the two blocks. The block that gives the minimum SAD error is considered the best match of the original block and is called the prediction block. The relative displacement between the prediction block and the current block is called the block vector. Since sending the complete block vector requires a large number of bits, predictive coding of the block vector is used. This is similar to the predictive coding of motion vectors in general inter-frame methods.
[0003] IBC is a current image reference tool, which differs from typical intra-frame or inter-frame prediction methods. Therefore, in addition to the general MODE_INTER and MODE_INTRA, a new prediction mode called MODE_IBC is introduced into the bitstream[3].
[0004] The encoder and decoder maintain a prediction sublist for block vector encoding purposes (similar to motion vectors in general inter-frame mode). Block vectors from neighboring blocks are used to generate this prediction sublist. Therefore, a predicted subblock can exist anywhere within the search area. The maximum number of candidates in the prediction sublist is 2.
[0005] As will be referred to later. Figure 11 To elaborate further, if the block vector of the current block is bv and the block vector of the predicted sub-block is bvp, then the difference between these two block vectors, bvd, is signaled to the decoder. The encoder estimates the number of bits required to signal bvd using each of the two candidates in the predictor list. The candidate requiring the fewest bits is considered the final predictor bvp for the block. The selected predictor sub-block is identified according to the bvp_flag syntax. If bvp_flag is 0, then the first candidate in the predictor list is the predictor for the current block. Otherwise, the second candidate is the predictor for the current block.
[0006] Therefore, at the decoder, bv is reconstructed as:
[0007] bv = bvd + bvp[1]
[0008] Depending on the specific IBC adopted [4], the IBC's BM search is limited to the current CTU and some parts of the left CTU, depending on the position of the current block in the current CTU (coding tree unit).
[0009] IBC performs very well for sequences of screen content or similar content. This is likely because such video sequences have sharper edges and repetitive content, making it easier to find a good match for the current block in the current reconstructed frame. However, IBC is relatively less efficient at encoding natural sequences compared to screen content sequences. Furthermore, IBC has higher encoding complexity due to the BM search algorithm.
[0010] Since the displacement information of the selected block is sent to the decoder, no complex calculations are performed at the decoder, so IBC does not add complexity on the decoder side.
[0011] However, it is desirable to provide an encoding scheme that improves upon the aforementioned drawbacks related to IBC and achieves a better trade-off between encoding benefits and encoder complexity. Summary of the Invention
[0012] According to the present invention, this problem is solved by the encoder and decoder according to the independent claims, and by the corresponding encoding and decoding methods according to the independent claims. Specific embodiments are defined in the dependent claims.
[0013] The first aspect relates to an encoder for encoding an image into a data stream on a block-by-block basis, wherein the encoder is configured to: for the current block of the image, determine the difference between a first predetermined block and a second predetermined block within a block search region, and encode the difference into the data stream, wherein the encoder is further configured to divide the block search region into a plurality of block search areas.
[0014] In the sense of this disclosure, a block may include a predetermined number of samples, or in other words, a block may include a predetermined size, such as M x N, where M may represent the number of samples arranged along rows and N may represent the number of samples arranged along columns. Therefore, a block may also be referred to as a sample block. Furthermore, the block currently being encoded will be referred to herein as the current block. In the case of using a predictive coding scheme, the current block may be the block currently being predicted.
[0015] As described above, the principles of this invention provide an encoder capable of encoding a current block based on the difference between a first predetermined block and a second predetermined block. This difference can be, for example, mathematical, spatial, or temporal. To determine this difference, the encoder can search within a block search area and find a suitable second predetermined block. The first predetermined block can be known to the encoder, allowing the encoder to determine the difference between the known first predetermined block and the found second predetermined block. In the conventional IBC described above, the block search area can be relatively large. Therefore, searching for a suitable second predetermined block within such a large block search area can be time-consuming. Furthermore, since in conventional IBC, for a first predetermined block, only two candidates may be available within the entire search area, the difference between the second predetermined block and the first predetermined block (e.g., spatial distance) may also be relatively large. Therefore, encoding efficiency may be correspondingly affected. Furthermore, according to the invention, the block search area can be divided into one or more block search regions. A block search region is a sub-unit of the entire block search area. Therefore, a block search region can be as large as the entire block search area, or preferably, smaller than the entire block search area. Each block search region may include its own first predetermined block and its own second predetermined block. Therefore, compared to searching the entire block search area in conventional IBC, the difference (e.g., spatial distance) between a second predetermined block within a specific block search area and a first predetermined block within the same block search area can be much smaller. In other words, the difference determined by the present invention can be much smaller than the difference determined by conventional IBC. Because this difference is encoded, the encoding efficiency can be significantly improved compared to conventional IBC.
[0016] The second aspect relates to a decoder for block-based image decoding from a data stream, wherein the decoder is configured to reconstruct the current block of the image based on the difference between a first predetermined block and a second predetermined block within a block search region, wherein the decoder is configured to derive the difference from the data stream, and wherein the decoder is further configured to divide the block search region into multiple block search areas. As described above, each block search area may include its own first predetermined block and its own second predetermined block. The difference derived from the data stream can be associated with a specific block search area. Therefore, the decoder can also be configured to derive from the data stream an index indicating the corresponding (i.e., correct) block search area to which the first predetermined block, the second predetermined block, and the difference they transmit belong. In other words, the decoder can derive data indicating a specific block search area and data indicating the difference belonging to that specific block search area from the data stream. Therefore, complex calculations are not required on the decoder side.
[0017] The third aspect relates to a method for encoding an image into a data stream based on block size, the method comprising the steps of: reconstructing the current block of the image based on the difference between a first predetermined block and a second predetermined block within a block search region, and encoding the difference into the data stream, wherein the block search region is divided into multiple block search areas.
[0018] The fourth aspect relates to a method for decoding an image from a data stream based on blocks, wherein the method includes the steps of: reconstructing the current block of the image based on the difference between a first predetermined block and a second predetermined block within a block search region, wherein the difference is derived from the data stream, and wherein the block search region is divided into multiple block search areas.
[0019] According to the fifth aspect, computer programs are provided, wherein each computer program is configured to implement the above method when executed on a computer or signal processor, such that the above method is implemented by one of the computer programs. Attached Figure Description
[0020] In the following description, embodiments of the present disclosure will be described in more detail with reference to the accompanying drawings, in which:
[0021] Figure 1 A schematic block diagram illustrating the general concept of a block-based encoder is shown.
[0022] Figure 2 A schematic block diagram illustrating the general concept of a block-based decoder is shown.
[0023] Figure 3 A schematic diagram is shown illustrating blocks that can be processed using block-based encoding.
[0024] Figure 4 A schematic block diagram of a block-based encoder according to an embodiment is shown.
[0025] Figure 5 A schematic diagram illustrating region-based intra-block copying according to an embodiment is shown.
[0026] Figure 6 A schematic block diagram of a CTU divided into four CUs and encoded in z-scan order is shown.
[0027] Figure 7 This diagram illustrates a block search area divided into multiple block search regions.
[0028] Figure 8A A schematic diagram of the available block search regions in a predefined subset of the block search regions according to an embodiment is shown, wherein the current block is located in the first quadrant of the current CTU.
[0029] Figure 8BA schematic diagram of the available block search regions in a predefined subset of the block search regions according to an embodiment is shown, wherein the current block is located in the second quadrant of the current CTU.
[0030] Figure 8C A schematic diagram of the available block search regions in a predefined subset of the block search regions according to an embodiment is shown, wherein the current block is located in the third quadrant of the current CTU.
[0031] Figure 8D A schematic diagram of the available block search regions in a predefined subset of the block search regions according to an embodiment is shown, wherein the current block is located in the fourth quadrant of the current CTU.
[0032] Figure 9 A schematic block diagram of a block-based decoder according to an embodiment is shown.
[0033] Figure 10A A schematic block diagram of a method for block-based coding according to an embodiment is shown.
[0034] Figure 10B A schematic block diagram of a method for block-based decoding according to an embodiment is shown, and
[0035] Figure 11 A schematic block diagram of intra-frame block copying according to the prior art is shown. Detailed Implementation
[0036] In the following description, the same or equivalent reference numerals are used to denote the same or equivalent elements or elements having the same or equivalent functions.
[0037] The method steps depicted by the block diagram and described with reference to the block diagram can also be performed in an order different from the order in which they are depicted and / or described. Furthermore, method steps relating to specific features of the device can be replaced by those features of the device, and vice versa.
[0038] The following description of the accompanying figures begins with a description of the encoder and decoder of a block-based predictive codec for encoding images of video, in order to form an example of an encoding framework that can be incorporated into embodiments of the present invention. Regarding Figures 1 to 3 The corresponding encoders and decoders are described. Below, embodiments of the concepts of the invention are described, along with instructions on how these concepts can be constructed respectively. Figure 1 encoder and Figure 2 The description in the decoder, although the subsequent Figure 4 The embodiments described below can also be used to form non-based Figure 1 encoder and Figure 2 The encoder and decoder operate under the encoding framework of the decoder.
[0039] Figure 1 An apparatus is shown for predictively encoding image 12 into data stream 14 using transform-based residual coding, as exemplarily described. The apparatus or encoder is indicated by reference numeral 10. Figure 2 The corresponding decoder 20 is shown, namely the device 20 configured to predictively decode image 12' from data stream 14 using transform-based residual decoding, wherein the apostrophe has been used to indicate that image 12' reconstructed by decoder 20 deviates from image 12 originally encoded by device 10 in terms of coding loss introduced by quantization of the predictive residual signal. Figure 1 and Figure 2 Transform-based prediction residual coding is used exemplarily, although embodiments of this application are not limited to this prediction residual coding. As will be outlined below, regarding... Figure 1 and Figure 2 The same applies to other details described.
[0040] Encoder 10 is configured to perform a spatial-to-spectral transformation on the prediction residual signal and encode the resulting prediction residual signal into data stream 14. Similarly, decoder 20 is configured to decode the prediction residual signal from data stream 14 and perform a spectral-to-spatial transformation on the resulting prediction residual signal.
[0041] Internally, encoder 10 may include a prediction residual signal former 22 that generates a prediction residual 24 to measure the deviation of the predicted signal 26 from the original signal (i.e., from image 12). The prediction residual signal former 22 may be, for example, a subtractor that subtracts the predicted signal from the original signal (i.e., from image 12). Encoder 10 then includes a converter 28 that performs a space-to-spectral transformation on the prediction residual signal 24 to obtain a spectral domain prediction residual signal 24', which is then quantized by a quantizer 32 also included in encoder 10. The quantized prediction residual signal 24” is encoded into bitstream 14. For this purpose, encoder 10 may optionally include entropy encoder 34, which entropy-encodes the transformed and quantized prediction residual signal to encode it into data stream 14. Prediction signal 26 is generated by prediction stage 36 of encoder 10 based on the prediction residual signal 24” encoded into and decodeable from data stream 14. For this purpose, as... Figure 1As shown, prediction stage 36 may internally include a dequantizer 38, followed by an inverse transformer 40. The dequantizer 38 dequantizes the prediction residual signal 24” to obtain a spectral domain prediction residual signal 24”’ corresponding to signal 24’, excluding quantization loss. The inverse transformer 40 performs an inverse transform on the latter prediction residual signal 24”’, i.e., a spectral-to-spatial transform, to obtain a prediction residual signal 24”” corresponding to the original prediction residual signal 24, excluding quantization loss. Then, combiner 42 of prediction stage 36 recombines the prediction signal 26 and the prediction residual signal 24””, for example by addition, to obtain a reconstructed signal 46, i.e., a reconstruction of the original signal 12. The reconstructed signal 46 may correspond to signal 12’. Then, prediction module 44 of prediction stage 36 generates prediction signal 26 based on signal 46 by using, for example, spatial prediction (i.e., intra-picture prediction) and / or temporal prediction (i.e., inter-picture prediction).
[0042] Similarly, as Figure 2 As shown, decoder 20 can internally consist of components corresponding to and interconnected with prediction stage 36 in a manner corresponding to prediction stage 36. Specifically, the entropy decoder 50 of decoder 20 can entropy decode the quantized spectral domain prediction residual signal 24” from the data stream. Then, the dequantizer 52, inverse transformer 54, combiner 56, and prediction module 58, interconnected and cooperating in the manner described above with respect to prediction stage 36, recover the reconstructed signal based on the prediction residual signal 24”, such that... Figure 2 As shown, the output of combiner 56 generates a reconstruction signal, i.e., picture 12'.
[0043] Although not specifically described above, it is readily apparent that encoder 10 can set coding parameters, including, for example, prediction modes, motion parameters, etc., based on optimization schemes such as those for optimizing rate-distortion related criteria (i.e., coding costs). For instance, encoder 10 and decoder 20, along with corresponding modules 44 and 58, can support different prediction modes, such as intra-frame coding modes and inter-frame coding modes. The granularity at which encoders and decoders switch between these prediction mode types can correspond to subdividing images 12 and 12' into coding segments or coding blocks, respectively. For example, images can be subdivided into intra-frame coding blocks and inter-frame coding blocks, using these coding segments as units. As outlined in more detail below, intra-frame coding blocks are predicted based on the spatially encoded / decoded neighborhood of the corresponding block. Several intra-frame coding modes, including directional or angular intra-frame coding modes, can exist, and an intra-frame coding mode can be selected for a corresponding intra-frame coding segment. Based on this intra-frame coding mode, the corresponding segment is filled by extrapolating sample values of the neighborhood along a direction specific to the corresponding directional intra-frame coding mode. For example, intra-frame coding modes may also include one or more other modes, such as DC coding mode and / or planar intra-frame coding mode. According to DC coding mode, the prediction of the corresponding intra-frame coded block assigns DC values to all samples within the corresponding intra-frame coded segment. According to planar intra-frame coding mode, the prediction of the corresponding block is approximated or determined as a spatial distribution of sample values at sample locations of the corresponding intra-frame coded block, described by a two-dimensional linear function, where the slope and offset of the plane defined by the two-dimensional linear function are driven by neighboring samples. In contrast, inter-frame coded blocks can be predicted, for example, temporally. For inter-frame coded blocks, a motion vector indicating the spatial distance in the video to which picture 12 belongs can be signaled within the data stream, at which previously encoded / decoded pictures are sampled to obtain the prediction signal for the corresponding inter-frame coded block. This means that, in addition to the residual signal encoding included in data stream 14, such as the entropy-encoded transform coefficient levels representing the quantized spectral domain prediction residual signal 24", data stream 14 may encode coding mode parameters for assigning coding modes to individual blocks, prediction parameters for some blocks (e.g., motion parameters for inter-frame coded segments), and optional other parameters (e.g., parameters for controlling and signaling the subdivision of images 12 and 12' into segments, respectively). Decoder 20 uses these parameters to subdivide the images in the same manner as encoder, assigns the same prediction modes to segments, and performs the same predictions to produce the same prediction signal.
[0044] Figure 3This illustrates the relationship between one aspect of the reconstruction signal, namely the reconstructed image 12', and the other aspect, the combination of the prediction residual signal 24"" and the prediction signal 26, which are signaled in data stream 14. As described above, this combination can be additive. The prediction signal 26 is... Figure 3 The image is shown as being subdivided into intra-coded blocks, schematically indicated by shaded lines, and inter-coded blocks, not schematically indicated by shaded lines. The subdivision can be arbitrary, such as regularly subdividing the image into rows and columns of square or non-square blocks, or subdividing the image from the root block into multiple tree blocks (e.g., quadtree subdivision) into multiple leaf blocks of different sizes. Figure 3 The image shows their combination, where the image area is first subdivided into rows and columns of root blocks, and then the rows and columns of the root blocks are further subdivided into one or more leaf blocks according to recursive multi-tree subdivision.
[0045] Furthermore, data stream 14 may have intra-coding modes encoded therein for intra-coding blocks 80, which assign one of several supported intra-coding modes to the corresponding intra-coding block 80. For inter-coding blocks 82, data stream 14 may have one or more motion parameters encoded therein. Generally, inter-coding blocks 82 are not limited to temporal encoding. Alternatively, inter-coding blocks 82 may be any block predicted from previously encoded portions other than the current image 12 itself (e.g., previously encoded images of the video to which image 12 belongs, or, in the case of scalable encoders and decoders, images of another view or lower-level layers).
[0046] Figure 3 The prediction residual signal 24” in the image is also shown as subdividing the image region into blocks 84. These blocks can be referred to as transform blocks in order to distinguish them from coded blocks 80 and 82. In fact, Figure 3 The diagram illustrates that encoder 10 and decoder 20 can subdivide images 12 and 12' into blocks using two different subdivisions: one subdividing them into coding blocks 80 and 82 respectively, and the other subdividing them into transform blocks 84. The two subdivisions can be the same, meaning each coding block 80 and 82 can simultaneously form transform block 84, but... Figure 3The following scenario illustrates a subdivision to transform block 84 that extends the subdivision to encoded blocks 80 and 82, such that any border between two blocks of blocks 80 and 82 covers the border between the two blocks 84; or in other words, each block 80 and 82 either coincides with one of the transform blocks 84 or with a cluster of transform blocks 84. However, the subdivisions can also be determined or selected independently of each other, such that transform block 84 can alternatively span the block border between blocks 80 and 82. With regard to the subdivision to transform block 84, a similar statement is therefore correct as it is with regard to the subdivision to blocks 80 and 82, namely that block 84 can be the result of regularly subdividing the image region into blocks (arranged in rows and columns or not arranged in rows and columns), the result of recursive multi-tree subdivision of the image region, or a combination thereof, or any other type of blocking. Incidentally, it should be noted that blocks 80, 82, and 84 are not limited to squares, rectangles, or any other shape.
[0047] Figure 3 It is also shown that the combination of prediction signal 26 and prediction residual signal 24”” directly generates the reconstructed signal 12'. However, it should be noted that, according to an alternative embodiment, more than one prediction signal 26 can be combined with prediction residual signal 24”” to generate image 12'.
[0048] exist Figure 3 In this context, transform block 84 should have the following meaning. Transformer 28 and inverse transformer 54 perform their transforms on a unit basis using these transform blocks 84. For example, many codecs use some kind of DST or DCT for all transform blocks 84. Some codecs allow skipping transforms, so that for some transform blocks 84, the prediction residual signal is directly encoded in the spatial domain. However, according to the embodiments described below, encoder 10 and decoder 20 are configured in a way that they support several transforms. For example, the transforms supported by encoder 10 and decoder 20 may include:
[0049] DCT-II (or DCT-III), where DCT stands for Discrete Cosine Transform.
[0050] DST-IV, where DST represents Discrete Sine Transform
[0051] DCT-IV
[0052] DST-VII
[0053] Identity Transformation (IT)
[0054] Naturally, transformer 28 will support all forward versions of these transforms, while decoder 20 or inverse transformer 54 will support their corresponding backward or inverse versions:
[0055] Inverse DCT-II (or Inverse DCT-III)
[0056] Inverse DST-IV
[0057] Inverse DCT-IV
[0058] Inverse DST-VII
[0059] Identity Transformation (IT)
[0060] The following description provides further details about which transforms the encoder 10 and decoder 20 can support. However, it should be noted that the supported transform set may include only one transform, such as a spectrum-to-space transform or a space-to-spectrum transform.
[0061] As outlined above, it has already been presented. Figures 1 to 3 As an example, the inventive concept further described below can be implemented to form specific examples of encoders and decoders according to this application. In this regard, Figure 1 encoder and Figure 2 The decoders can represent possible implementations of the encoder and decoder described below. However, Figure 1 and Figure 2 This is merely an example. However, the encoder according to embodiments of this application can perform block-based encoding of image 12 using concepts outlined in more detail below, which is consistent with... Figure 1 The encoder differs from others in the following ways: it is not a video encoder but a still image encoder, it does not support inter-frame prediction, or it is similar to... Figure 3 The example demonstrates a different approach to subdividing block 80. Similarly, the decoder according to embodiments of this application can use the coding concepts further outlined below to perform block-based decoding of image 12' from data stream 14, but this decoder can be compared with... Figure 2 The decoder 20 differs, for example, in the following ways: it is not a video encoder but a still image encoder, does not support inter-frame prediction, or is in contrast to the reference... Figure 3 The description method is different in that the image 12' is subdivided into blocks, and / or the prediction residuals are not derived from the data stream 14 in the transform domain, but rather, for example, in the spatial domain.
[0062] First, a brief introduction to intra-frame prediction is given by explaining the so-called intra-block copying (IBC) of the prior art. For example... Figure 11As exemplified, conventional intra-block copying (IBC) is one of the intra-prediction methods used in the HEVC Screen Content Coding (SCC) extension [1]. This method is also adopted in H.266 / Multi-Functional Video Coding [2]. On the encoder side, the above method searches for a similar block 112 of the original block 110 in the current reconstructed picture. During the BM search, the similar block 112 is searched within a potentially relatively large search area 140. An error minimization metric (in this case, the sum of absolute differences (SAD)) is used in the block matching (BM) algorithm. During the BM search, integer sample positions within the search area 140 are examined to find the best match for the current original block 110 by calculating the SAD between the two blocks 110, 112. Figure 11 As exemplarily shown, block 112, which gives the minimum SAD error, is considered the best match of the original block 110 and is referred to as prediction block 112. The relative displacement from the current block 110 to prediction block 112 is called the block vector bv. Since sending the complete block vector requires a large number of bits, predictive coding of the block vector is used. This can be similar to the predictive coding of motion vectors in general inter-frame methods.
[0063] IBC is the current image reference tool, which is different from typical intra-frame or inter-frame prediction methods. Therefore, in addition to the general MODE_INTER and MODE_INTRA, a new prediction mode called MODE_IBC is introduced into the bitstream[3].
[0064] The encoder and decoder maintain a prediction sublist for block vector encoding purposes (similar to motion vectors in general inter-frame mode). Block vectors from neighboring blocks are used to generate this prediction sublist. Therefore, prediction subblock 111 can exist anywhere within the search area 140. The maximum number of candidates in the prediction sublist is 2.
[0065] like Figure 11 As shown, if the block vector of predicted block 112 is bv and the block vector of predicted sub-block 111 is bvp, the difference between them, referred to as the difference vector bvd, is signaled to the decoder. The encoder estimates the number of bits required to signal bvd using each of the two candidates in the predictor list. The candidate requiring the fewest bits is considered the final predicted sub-block 111 of vector bvp. The selected predicted sub-block 111 is identified according to the bvp_flag syntax. If bvp_flag is '1', the first candidate in the predictor list is the predictor of the current block 110. Otherwise, the second candidate is the predictor of the current block.
[0066] Therefore, at the decoder, bv is reconstructed as:
[0067] bv = bvd + bvp [1]
[0068] However, due to the large search area 140 and the fact that only two candidates may be available but distributed throughout the entire search area 140, the difference vector bvd may be large, and thus the coding efficiency may be affected accordingly.
[0069] This invention provides a region-based approach to intra-block copying, offering a better trade-off between coding gains and encoder complexity. Therefore, the innovative principle disclosed herein will also be referred to as Region-Based Intra-Block Copying (RIBC), which utilizes the difference between a first predetermined block (predicted sub-block) 111 and a second predetermined block (predicted block) 112, but in which the search region 140 can be divided into smaller sub-regions, which may also be referred to as block search regions.
[0070] Figure 4 A non-limiting example of an encoder 10 of the present invention is shown, which is configured to divide a block search area 140 into a plurality of block search regions, collectively referred to herein as Ri. Figure 4 In the non-limiting example depicted, encoder 10 can be configured to divide block search area 140 into four block search regions R1, R2, R3, and R4. To encode the current block 110, encoder 10 can utilize a first predetermined block 111 and a second predetermined block 112. Encoder 10 can search for the first predetermined block 111 and the second predetermined block 112 within block search area 140. According to the invention, encoder 10 can be configured to divide block search area 140 into one or more block search regions R1, R2, R3, and R4.
[0071] The encoder 10 can be configured to search for a first predetermined block 111 and a second predetermined block 112 within the block search regions R1, R2, R3, and R4. Each of the block search regions R1, R2, R3, and R4 may include its own first predetermined block 111 and its own second predetermined block 112.
[0072] Encoder 10 can search for a suitable second predetermined block 112 suitable for encoding the current block 110. The suitable second predetermined block 112 can be a second predetermined block 112 that matches the current block 110 to a certain extent, preferably the second predetermined block 112 that best matches the current block 110. Therefore, this search can also be called a block matching (BM) search.
[0073] Encoder 10 can perform a BM search, that is, encoder 10 can search for a suitable second predetermined block 112 within block search regions R1, R2, R3, and R4. Encoder 10 can search within at least one of the block search regions R1, R2, R3, and R4, and preferably within each block search region. Encoder 10 can find a suitable matching second predetermined block 112 within one of the block search regions R1, R2, R3, and R4. Figure 4 In the non-restrictive example depicted, encoder 10 found a properly matching second predetermined block 112 within the third search region R3.
[0074] Encoder 10 can identify the first predetermined block 111 belonging to the third search region R3. Therefore, encoder 10 can calculate the difference Δ between the first predetermined block 111 and the second predetermined block 112 within the third search region R3. 112,111 In order to encode the current block 110, the encoder 10 of the present invention will use the above-mentioned difference Δ 112,111 Encoding it into data stream 14 is sufficient.
[0075] Optionally, encoder 10 may additionally or alternatively encode region index i into data stream 14, region index i being used to indicate where the difference Δ is calculated. 112,111 The corresponding block search region. In this example, the difference Δ is calculated in R3. 112,111 Therefore, the region index i indicating the block search region R3 can optionally be encoded into data stream 14. The optional region index i will be described in more detail below.
[0076] However, from Figure 4 As can be seen, the first predetermined block 111 and the second predetermined block 112 can both be located within the same search area R1 to R4, which in this example is located within the block search area R3. This reduces the need to search for the second predetermined block within the entire block search area 140.
[0077] As previously described, encoder 10 can search for a second predetermined block 112 that is a suitable match for encoding the current block 110; this search can also be referred to as a block matching (BM) search. For example, a second predetermined block 112 that is similar to the current block 110 can be considered a suitable matching block. The similarity can be determined based on certain criteria of similarity, such as similar image features included in the blocks, such as chroma, brightness, size, color, etc.
[0078] To determine the similarity between the current block 110 and one or more available candidate second predetermined blocks 112, the encoder 10 can be configured to apply an error minimization metric. For example, the encoder 10 can calculate the sum of absolute differences (SAD) between the current block 110 and one or more candidate second predetermined blocks 112. At least one second predetermined block 112 with a similarity to the current block 110 equal to or greater than a predetermined similarity threshold can be selected as the second predetermined block 112 for encoding. For example, a second predetermined block 112 with the minimum SAD can be selected from all tested candidate second predetermined blocks 112. Therefore, the selected second predetermined block 112 has the highest similarity to the current block 110, or in other words, the selected second predetermined block 112 has a similarity to the current block 110 equal to or greater than the similarity threshold.
[0079] In summary, some embodiments may provide an encoder 10 configured to search for a second predetermined block 112 in at least one of a plurality of block search regions R1 to R4, or in each of the plurality of block search regions R1 to R4. If the encoder finds the second predetermined block 112 in one of the plurality of block search regions R1 to R4, the encoder 10 may be configured to identify said block search region R3 in which the second predetermined block 112 is found.
[0080] Furthermore, the encoder can be configured to optionally encode the region index i associated with the identified block search region R3 into the data stream 14.
[0081] As described above, each block search region R1 to R4 may include its own first predetermined block 111. Encoder 10 is aware of the first predetermined block 111 in each block search region R1 to R4. The first predetermined block 111 can be any block within the corresponding block search region R1 to R4. In this example, the first predetermined block 111 belonging to the third block search region R3 may be located at a predetermined sample position within the third block search region R3. Encoder 10 is aware of the predetermined sample position. Figure 4 As exemplarily depicted, the predetermined sample position can be the lower left corner of the block search region R3. However, the predetermined sample position can be located anywhere within the corresponding block search region R3, which should be known to the encoder 10.
[0082] In some other exemplary embodiments, which will be discussed in more detail later herein, the predetermined sample position indicating the location of the first predetermined block 111 within a corresponding block search region of block search regions R1 to R4 may be located at the center of the corresponding block search region of block search regions R1 to R4. This may be advantageous because when the first predetermined block 111 is located at the center, the maximum spatial displacement or spatial distance between the first predetermined block 111 and the second predetermined block 112 within the same block search regions R1 to R4 can be minimized.
[0083] According to some embodiments, the spatial distance may represent the difference between the first predetermined block 111 and the second predetermined block 112, and the encoder 10 may encode this difference into the data stream 14 to encode the current block 110. Therefore, the encoder 10 may be configured to determine the spatial distance or spatial displacement between the first predetermined block 111 and the second predetermined block 112, and the encoder 10 may encode the determined spatial distance or spatial displacement into the data stream 14.
[0084] According to some examples, encoder 10 can be configured to use predictive coding, wherein a first predetermined block 111 can be a predictive sub-block, a second predetermined block 112 can be a predictive block, and the current block 110 can be a block to be predictively coded based on at least one of predictive sub-block 111 and predictive block 112.
[0085] Figure 5 An example of such predictive coding scheme is shown. This non-limiting example is based on the intra-block copy (IBC) coding scheme discussed above; however, the principle of the invention is extended by dividing the block search area 140 into one or more block search regions R1 to R4. Therefore, the principle of the invention can also be referred to as region-based intra-block copy (RIBC).
[0086] from Figure 5 As can be seen, the current block 110 is to be encoded by the encoder 10 and decoder 20 of this invention using the principles of RIBC. The current block 110 may include a predetermined size of M x N samples. Predictive encoding of the current block 110 can be performed based on prediction blocks and prediction sub-blocks. In this example, the first predetermined block 111 may be a prediction sub-block, and the second predetermined block 112 may be a prediction block.
[0087] Encoder 10 can search for a suitable matching prediction block 112 suitable for predictive encoding of the current block 110. The suitable matching prediction block, i.e., the suitable matching second predetermined block 112, can be found, for example, via SAD. According to the inventive principles of RIBC, the block search area 140 capable of finding one or more candidate prediction blocks 112 can be divided into one or more block search regions, wherein region R1 is depicted as an example. Encoder 10 can find the suitable matching second predetermined block 112, i.e., the suitable matching prediction block, within region R1.
[0088] The found second predetermined block 112 can be signaled via block vector bv. Block vector bv can represent the spatial distance between the current block 110 and the found second predetermined block 112 (predicted block).
[0089] As described above, each block search region Ri may include its own first predetermined block 111, i.e., its own predicted sub-block. The position of the predicted sub-block 111 within the corresponding block search region Ri is known to the encoder 10. Figure 5 In the non-limiting example depicted, the integer position of the predicted sub-block 111 is the center of the block search region Ri. In other words, the predicted sub-block 111 is the center block. The known first predetermined block 111 (the predicted sub-block) can be signaled via the block vector bvp. The block vector bvp can represent the spatial distance between the current block 110 and the known first predetermined block 111 (the predicted sub-block).
[0090] According to such an embodiment, encoder 10 can be configured to apply block vector-based signaling and determine a first block vector bvp and a second block vector bv, the first block vector bvp indicating the relative spatial distance between the current block 110 and a first predetermined block 111, and the second block vector bv indicating the relative spatial distance between the current block 110 and a second predetermined block 112.
[0091] The encoder 10 of the present invention can also be configured to determine the spatial distance or spatial displacement between the first predetermined block 111 and the second predetermined block 112. In this example, the spatial displacement can be represented by a differential vector ribc_bvd, which the encoder 10 calculates as:
[0092] ribc_bvd = bv – bvp
[0093] The difference vector ribc_bvd = bv – bvp can represent the difference (Δ) between the encoder 10 and the data stream 14. 111、112 Specifically, the difference vector ribc_bvd = bv – bvp can represent the relative spatial distance or spatial displacement between the first predetermined block 111 and the second predetermined block 112.
[0094] Encoder 10 can be configured to apply the principles of RIBC at the coding block level and / or at the coding sub-block level, i.e., to divide the block search area 140 into multiple block search regions Ri. For example, a coding block may be a coding tree unit (CTU). A coding block may be divided into two or more coding sub-blocks. For example, a coding sub-block may be a coding unit (CU).
[0095] The non-limiting examples described herein can be implemented in the Multi-Function Video Coding (VVC) Reference Software (VTM), where the CTU is encoded from left to right. Figure 6 As exemplarily shown, after the first partitioning of CTU 150 (a quad partitioning in this example), four CUs of the same size, 151, 152, 153, and 154, are formed. The four CUs 151 through 154 are encoded one by one in a Z-scan order, starting from the top left corner (i.e., at the first CU 151). Due to this specific scan order, the search area 140 available for BM search depends on the position of the current block (not shown) within CTU 150.
[0096] For example, if the current block 110 will be located within the second CU 152, a BM search cannot be performed in the third CU 153 (nor in the fourth CU 154) because the third CU 153 and the fourth CU 154 have not yet been encoded. However, if the current block 110 will be located within the third CU 153, a BM search can be performed in the second CU 152 (or possibly in the first CU 151) because the first CU 151 and the second CU 152 have already been encoded.
[0097] Therefore, the number of regions available for a BM search of the current block 110 can generally depend on the position of the current block 110 within the current CTU 150. As another example, if the current block 110 is located at the first position of the first CTU in the image, then no region is available because there are no regions for a BM search. Furthermore, the boundaries of the block search region Ri can also depend on the position of the current block 110. However, the maximum size of the block search region Ri can remain the same (e.g., k = 35).
[0098] Before discussing other examples in detail, one should first refer to... Figure 7 It illustrates a search region 140, exemplarily divided into 17 distinct block search regions R1 to R17. The current block 110 can have a size of M x N samples. Block search regions R1 to R17 can each have a size of K x L samples. Figure 7In the example shown, each of the block search regions R1 to R17 comprises the same size K x L. However, the block search regions R1 to R17 may also comprise different sizes. Furthermore, the size of the current block 110 may be smaller than, larger than, or comprise the same size as the block search regions R1 to R17 (as exemplarily depicted).
[0099] Furthermore, as mentioned earlier, the boundaries of the block search regions R1 to R17 can depend on the position of the current block 110 within the current CTU. From Figure 7 As can be seen, one or more boundaries along the x-axis and one or more boundaries along the y-axis can be defined. Furthermore, the block search regions R1 to R17 can be square, such as... Figure 7 The example depicted may be a rectangle.
[0100] The block search regions R1 to R17 can be arranged so that they are adjacent to each other. Therefore, there can be no gaps between them. However, their boundaries can be moved, which will be discussed later. Figures 8A to 8D Please provide an explanation.
[0101] In summary, encoder 10 can be configured to divide block search area 140 into n block search regions (here: R1 to R17), each block search region having a predetermined size K x L. How these block search regions R1 to R17 can be applied within the CTU depends on the current position of block 110, and will be determined by referring to... Figures 8A to 8D Let's illustrate this with some non-restrictive examples.
[0102] Figures 8A to 8D An example is shown of the current CTU 150 (i.e., the current coding block to be encoded) and the left CTU 150' (i.e., the coding block that has already been encoded). As mentioned above, the BM search can be performed in the search regions R1 to R17 of those blocks for which samples have already been encoded. Figures 8A to 8D In the example, the z-scan order was applied (see...). Figure 6 As mentioned above, the available block search area Ri can depend on the position of the current block 110 within the current CTU 150.
[0103] Figure 8A An example is shown where the current block 110 is located within the first CU (coded sub-block) 151. It can be seen that, depending on the position of the current block 110 within the current CTU 150, not all of the aforementioned block search areas R1 to R17 (see [link to CTU]) are within the same area. Figure 7 All of them are available, but only the subset Ri of these block search regions R1 to R17 is available. SUB It is available. In this case, the subset Ri containing regions R1 to R4, R6, R8, and R14 to R17SUB It is usable. The reasons will be explained below.
[0104] As described above, only the following regions Ri are available for BM search: those regions Ri containing previously encoded samples. For example, samples contained in regions R1 and R2 within the first CU 151 of the current CTU 150 have been previously encoded. Therefore, they can be used for BM search. Furthermore, samples within the left CTU 150' may also have been previously encoded. In this example, samples contained in the second CU 152' and fourth CU 154' of the left CTU 150' may also have been previously encoded. Therefore, since the depicted regions R3, R4, R6, and R8 are arranged within the previously encoded second CU 152' of the left CTU 150', they are available for BM search. Additionally, since regions R14 to R17 are arranged within the previously encoded fourth CU 154' of the left CTU 150', they are also available for BM search.
[0105] Therefore, an embodiment may provide an encoder 10, wherein, for the current block 110 to be encoded, the encoder 10 is configured to select a predefined subset Ri of block search regions from a plurality of block search regions Ri. SUB (e.g., R1 to R4, R6, R8, and R14 to R17), wherein, contained in the predefined subset Ri SUB One or more block search regions (e.g., R1, R2) in R1 to R4, R6, R8, and R14 to R17 are at least partially located in the previous encoded portion of the current encoded block 150. Preferably, the subset Ri is included in the search region. SUB Each block search region Ri in the image can be at least partially located within a previously encoded portion of the current coded block 150. The previously encoded portion can also be referred to as a previously encoded region, i.e., regions within the image or within the coded block 150 (CTU) that have been previously encoded. In other words, a subset of regions Ri can be specified. SUB It may be partially located in the current coding block 150, depending on the current coding position and including only the previously coded area.
[0106] Additionally or alternatively, embodiments may provide an encoder 10, wherein, for the current block 110 to be encoded, the encoder (10) is configured to select a predefined subset Ri of block search regions from a plurality of block search regions Ri. SUB , wherein, contained in the predefined subset Ri SUB One or more block search regions in the subset Ri may be at least partially located in the previously encoded portion of the current encoded block 150, and at least partially located in the previously encoded portion of the previously encoded block 150'. Preferably, the subset Ri is included in the subset Ri.SUB Each block search region Ri can be at least partially located within the previously encoded portion of the current encoded block 150, and at least partially located within the previously encoded portion of the previously encoded block 150'. The previously encoded portion can also be referred to as the previously encoded region, i.e., regions within the image, or regions within encoded block 150 (CTU) and / or the previously encoded encoded block (CTU) 150', which have been previously encoded. In other words, a subset of regions Ri can be specified. SUB It may be located partially in the current coding block 150 and / or co-bit coding block 150', depending on the current coding position and including only the previous coding area.
[0107] Furthermore, encoder 10 can be configured to select a predefined subset Ri of the block search region based on the position of the current block 110 within the current CTU (coded block) 150 to be encoded. SUB Now we will refer to Figures 8A to 8D The different positions of the current block 110 are discussed in more detail, wherein the encoder 10 can be configured to divide the current CTU 150 into four CUs 151, 152, 153, and 154.
[0108] like Figure 8A As shown, the current block 110 can be located in the first CU (coded subblock) 151 of the current CTU (coded block) 150. In this case, the encoder 10 can be configured to select a predefined subset Ri of the block search region. SUB Such that it is included in the predefined subset Ri SUB The block search region is located at least partially in the first CU (coded subblock) 151 of the current CTU (coded block) 150, and at least partially in one or more co-bit CUs (coded subblocks) 152', 154' of the previously encoded CTU (coded block) 150'.
[0109] like Figure 8B As shown, the current block 110 can be located in the second CU (encoded subblock) 152 of the current CTU (encoded block) 150. In this case, the encoder 10 can be configured to select a predefined subset Ri of the block search region. SUB Such that it is included in the predefined subset Ri SUB The block search region is located at least partially in the second CU (encoded subblock) 152 of the current CTU (encoded block) 150 and at least partially in the first CU (encoded subblock) 151 of the current CTU (encoded block) 150.
[0110] like Figure 8CAs shown, the current block 110 can be located in the third CU (encoded subblock) 153 of the current CTU (encoded block) 150. In this case, the encoder 10 can be configured to select a predefined subset Ri of the block search region. SUB Such that it is included in the predefined subset Ri SUB The block search region is located at least partially in the third CU (encoded sub-block) 153 of the current CTU (encoded block) 150, at least partially in the first CU (encoded sub-block) 151 of the current CTU (encoded block) 150, at least partially in the second CU (encoded sub-block) 152 of the current CTU (encoded block) 150, and at least partially in one or more co-bit CUs (encoded sub-blocks) 152', 154' of the previously encoded CTU (encoded block) 150'.
[0111] like Figure 8D As shown, the current block 110 can be located in the fourth CU (coded subblock) 154 of the current CTU (coded block) 150. In this case, the encoder 10 can be configured to select a predefined subset Ri of the block search region. SUB Such that it is included in the predefined subset Ri SUB The block search region is located at least partially in the fourth CU (encoded sub-block) 154 of the current CTU (encoded block) 150, at least partially in the first CU (encoded sub-block) 151 of the current CTU (encoded block) 150, at least partially in the second CU (encoded sub-block) 152 of the current CTU (encoded block) 150, and at least partially in the third CU (encoded sub-block) 153 of the current CTU (encoded block) 150.
[0112] It can be seen, for example, in Figure 8C and Figure 8D In the x-direction and / or y-direction, the above (see Figure 7 The boundaries can be moved along the corresponding x-axis or y-axis to cover a large number of previously encoded samples with block search regions. For example, at least regions R10 and R11 are moved along the y-axis to cover samples contained in the top row of the first CU 151 and the second CU 152.
[0113] In summary, encoder 10 can select a predefined subset Ri of the block search region. SUB To apply BM search, where, contained in the corresponding subset Ri SUBThe region in the list depends on the position of the current block 110 within the current CTU (coded block) 150. Available regions Ri can be saved to a region list regList. In other words, after identifying the current position of the current block 110 to be predicted, a list of block search regions called regList can be generated. Let α be the number of block search regions (e.g., R1 to R17) in this list. This list can be obtained at any point in both the encoder and decoder, and it is identical on both sides. Therefore, this list regList can define a subset Ri of the block search regions. SUB .
[0114] BM (Block Matching) search can be performed in those block search regions Ri listed in the region list regList, that is, in the subset Ri. SUB The BM search is performed in those regions Ri. The BM search is used to search for a suitable matching second pre-defined block 112, which, in the case of predictive coding, can be a predictive block. The suitable matching second pre-defined block 112 can be found, for example, by utilizing an error minimization metric (e.g., the sum of absolute differences (SAD)).
[0115] During the BM search, the block search region Ri or a subset Ri of the block search region mentioned above can be examined. SUB The integer sample positions within are used to find the best match for the current original block 110, for example, by calculating the SAD between two blocks 110 and 112. The block 112 that gives the minimum SAD error can be considered the best match for the original block 110, and it can be designated as the second predetermined block 112 for proper matching.
[0116] The encoder can identify the region Ri in which a suitable match for the second predetermined block 112 is found, and the encoder 10 can encode the relevant region index i associated with the corresponding region Ri into the data stream 14. Therefore, the region index i can be sent to the decoder 20, which only needs to decode the region index i, which indicates to the decoder 20 a block search region Ri in which the second predetermined block 112 is located.
[0117] Additionally or alternatively, encoder 10 can also measure the difference Δ between the first predetermined block 111 and the second predetermined block 112. 111、112 The encoding is performed into data stream 14. Each region Ri can have its own first predetermined block 111, which, in the case of predictive coding, can be a predictive sub-block. The first predetermined block 111 of each region Ri can be known to both encoder 10 and decoder 20. In some examples, as previously referenced... Figure 5The first predetermined block 111 discussed here may be the center block defining the center of its block search region Ri. However, regardless of the specific location of the first predetermined block 111 within its region Ri, the difference Δ between the first predetermined block 111 and the second predetermined block 112 can be determined by the encoder 10. 111、112 For example, this can be achieved through the so-called differential block vector ribc_bvd (see...). Figure 5 The difference Δ is signaled to the other party. 111、 112.
[0118] In summary, encoder 10 identifies at least one region Ri in which a suitable matching second predetermined block 112 is found. Encoder 10 can calculate the difference Δ between the found second predetermined block 112 in region Ri and the first predetermined block 111 belonging to region Ri. 111、112 Encoder 10 can convert the index i and difference Δ of the region Ri. 111、112 At least one of them is encoded into data stream 14.
[0119] Figure 9 A corresponding decoder 20 is shown for decoding an image from data stream 14 based on blocks, wherein decoder 20 is configured to base its decoding on the difference Δ between a first predetermined block 111 and a second predetermined block 112 within a block search region Ri (R3 in this example). 111、112 To reconstruct the current block 110 of the image, the decoder 20 is configured to derive the difference Δ from the data stream 14. 111、112 Furthermore, the decoder 20 is also configured to divide the block search area 140 into multiple block search areas Ri (examples here: R1 to R4).
[0120] It can be seen that decoder 20 can derive at least the difference Δ from data stream 14. 111、112 For example, difference values, such as difference block vectors. Decoder 20 can convert this difference Δ 111、112 It is applied to at least one of the block search regions R1 to R4. Therefore, since, according to at least some embodiments, the region index i may optionally be sent in the data stream 14, the decoder 20 may obtain the region index i of the corresponding region Ri from the list (here: index 3 of region R3), or the decoder 20 may optionally derive the region index i of the corresponding region Ri from the data stream 14.
[0121] Decoder 20 can determine the position of the first predetermined block 111 within the corresponding block search region Ri (here: within R3). Knowing the difference Δ... 111、112In this case, decoder 20 can determine the position of the second predetermined block 112 within the corresponding region Ri (here: within R3). Based on this, decoder 20 can decode the current block 110 to be decoded. For example, in the case of predictive coding, the second predetermined block 112 can be a prediction block that can be used to predict the current block 110.
[0122] Everything described above about encoder 10 also applies to decoder 20.
[0123] For example, decoder 20 can be configured to identify a block search region Ri in which the second predetermined block 112 is located based on the region index i derived above, and decoder 20 can know the position of the first predetermined block 111 within the identified block search region Ri.
[0124] The first predetermined block 111 can be located at an integer position within the identified block search region Ri, the integer position being known to the decoder 20. For example, the integer position could be the center of the identified block search region Ri. That is, as referenced above... Figure 5 As exemplarily described, the first predetermined block 111 may be a center block.
[0125] Decoder 20 can be configured to be based on the difference Δ derived from data stream 14 111、112 Furthermore, the current block 110 is decoded based on the region index i derived from data stream 14. For example, decoder 20 can derive region index i from data stream 14, which indicates to decoder 20 the block search region Ri (e.g., R3 in the case of predictive coding) in which a suitable match for a second predetermined block 112 can be found. Additionally, decoder 20 can derive the difference Δ from data stream 14. 111、112 The difference represents the difference between the first predetermined block 111 (e.g., a predicted sub-block in the case of predictive coding) and the second predetermined block 112 within the indicated region Ri. This difference is based on the transmitted region index i and the transmitted difference Δ. 111、112 Decoder 20 can calculate the position of the second predetermined block 112 within the derived block search region Ri (R3 in this example). For example, the difference Δ 111、112 This could be the spatial difference between the first predetermined block 111 and the second predetermined block 112 within the block search region Ri. (See above reference.) Figure 5 As exemplarily described, spatial differences can be signaled via block vectors.
[0126] Therefore, decoder 20 can be configured to use predictive coding, wherein the first predetermined block 111 is a predictive sub-block, the second predetermined block 112 is a predictive block, and the current block 110 is the block to be predicted and decoded based on at least one of predictive sub-block 111 and predictive block 112. Additionally or alternatively, decoder 20 can be configured to use a first block vector bvp (see [link to documentation]). Figure 5 The first block vector bv indicates the relative spatial distance between the current block 110 and the first predetermined block 111, and the second block vector bv indicates the relative spatial distance between the current block 110 and the second predetermined block 112.
[0127] Decoder 20 may know the first block vector BVP, and decoder 20 may be configured to derive the differential vector ribc_bvd from data stream 14 (see [link to data stream]). Figure 5 The difference vectors represent the differences Δ between the first vector bvp and the second vector bv, respectively. 111、112 And the difference between the first predetermined block 111 and the second predetermined block 112. Decoder 20 can also be configured to calculate the second block vector bv based on the difference vector ribc_bvd and the first block vector bvp, thereby obtaining the relative spatial distance between the current block 110 and the second predetermined block 112, so as to perform predictive decoding of the current block 110, for example, according to the following equation:
[0128] bv = ribc_bvd + bvp
[0129] Based on the calculated vector bv, decoder 20 can decode the image content using the innovative principles of RIBC. Decoder 20 can decode each block search region Ri in the manner described above, wherein each block search region Ri may include its own first predetermined block 111 and / or its own associated block vector bvp.
[0130] Furthermore, the size of the current block 110, one or more block search regions Ri, and at least one of the block search regions 140 can be variable. Additionally, the number of block search regions Ri into which the block search region 140 can be divided can be variable. Furthermore, the subset Ri included above... SUB The number of block search regions Ri in the algorithm can be variable.
[0131] The present invention also relates to methods for block-based encoding and decoding of images using innovative principles of RIBC.
[0132] Figure 10AA block diagram of a method for block-based encoding of image 12 into data stream 14 is shown. In block 1010A, the encoding can be based on the difference Δ between a first predetermined block 111 and a second predetermined block 112 within the block search region 140. 111、112 To encode the current block 110 of image 12. In frame 1011A, the difference Δ 111、112 The data is encoded into data stream 14. Based on the innovative principles of RIBC, as detailed above, the block search area 140 is divided into multiple block search regions Ri.
[0133] Figure 10B A block diagram is shown for a method of decoding image 12 from data stream 14 on a block-by-block basis. In block 1010B, the method is based on the difference Δ between a first predetermined block 111 and a second predetermined block 112 within the block search region 140. 111、112 This is used to reconstruct the current block 110 of image 12. In frame 1011B, the difference Δ is derived from data stream 14. 111、112 Based on RIBC's innovative principles, as detailed above, the block search area 140 is divided into multiple block search regions Ri.
[0134] In the following text, the innovative principle of this invention will be briefly summarized as follows:
[0135] like Figure 7 As exemplified, the principle of region-based intra-block copying (RIBC) described herein can divide the block search area 140 into a plurality of block search areas Ri, such as R1 to R17. Generally, the block search area 140 can be divided into at least one block search area Ri. In this case, at least one block search area Ri may include the same size as the entire block search area 140. For example, RIBC can divide the block search area 140 into at least two block search areas R1, R2. In this case, each of the at least two block search areas R1, R2 may have a size smaller than the entire block search area 140.
[0136] At least one of the block search regions Ri (e.g., R1 to R17) may include a block 112 that gives the minimum SAD error (i.e., the second predetermined block 112, also called the prediction block). Therefore, the at least one region Ri can be considered as the optimal region. A region index i indicating the at least one region Ri can be sent to the decoder, for example, instead of the commonly used bvp_flag.
[0137] For example, region-based intra-block copying (RIBC) can divide the search region 140 into n square regions of size k (in the non-limiting example detailed in this document, n = 17 and k = 35). Regions R1 to R17 are explicitly defined so that encoder 10 and decoder 20 can be perfectly synchronized, and thus both encoder 10 and decoder 20 select the same prediction block (i.e., the second predetermined block) 112.
[0138] like Figure 5 As exemplified, and as will be discussed in more detail below, the first predetermined block in region i (e.g., the block at the center of region i) 111, which is signaled, can be a predictor of the current block 110. Therefore, the difference 112 between the predictor block (i.e., the first predetermined block in region i) and the predicted block (i.e., the second predetermined block in region i) can be the displacement vector ribc_bvd of the RIBC.
[0139] Non-limiting examples of the proposed method described in this paper can be implemented, for example, on the Multifunctional Video Coding (VVC) Reference Software (VTM), where CTUs are encoded from left to right.
[0140] Figure 6 An example of a CTU (Coding Tree Unit) 150 is shown. After the first split of the CTU 150 (which can be a quad split), four CUs of the same size, 151, 152, 153, and 154, can be formed.
[0141] However, the partitioning is not limited to the conventional quadrilateral partitioning, which results in only square or similarly sized CUs, such as... Figure 6 As shown. CUs of different shapes can also be provided, such as rectangular CUs generated by two consecutive binary divisions.
[0142] The four CUs 151, 152, 153, and 154 obtained can be encoded one by one in Z-scan order. Therefore, the search area available for BM search can depend on the position of the current block 110.
[0143] For example, because CUs 153 and 154 may not have been previously encoded, the second CU 152 cannot be searched within the third CU 153 (nor the fourth CU 154). However, because the first CU 152 and the second CU 152 may have been previously encoded, the third CU 153 can be searched within the second CU 152 (and also within the first CU 152). Therefore, the number of regions available for the current block 110 can depend on the location of the current block 110 within the current CTU 150.
[0144] For example, if the current block 110 is in the first position of the first CTU 150 in the image, then no region is available because there is no region for BM search. Furthermore, the boundaries of regions R1 to R17 can also depend on the position of the current block 110. However, the maximum region size can remain the same (in the non-restrictive example here, k = 35). References can now be made. Figures 8A to 8D Let's discuss more detailed examples.
[0145] like Figure 8A As shown in the non-limiting example, encoder 10 and / or decoder 20 can be configured to segment the current CTU 150 into at least a first CU 151, a second CU 152, a third CU 153, and a fourth CU 154. If the current block 110 is located in the first CU 151, encoder 10 and / or decoder 20 can be configured to select a predefined subset Ri of the block search region. SUB (In this case, R1 to R4, R6, R8, R14 to R17), such that the subset Ri is included in the predefined subset. SUB The block search region is located at least partially in the first CU 151 and at least partially in one or more co-bit CUs 152', 154' of the previously encoded CTU 150'.
[0146] like Figure 8B As shown in the non-limiting example, encoder 10 and / or decoder 20 can be configured to segment the current CTU 150 into at least a first CU 151, a second CU 152, a third CU 153, and a fourth CU 154. If the current block 110 is located in the second CU 152, encoder 10 and / or decoder 20 can be configured to select a predefined subset Ri of the block search region. SUB (In this case, R1 to R4, R6, R8, R14, R15), such that the subset Ri is included in the predefined subset. SUB The block search region is located at least partially in the second CU 152 and at least partially in the first CU 151.
[0147] like Figure 8C As shown in the non-limiting example, encoder 10 and / or decoder 20 can be configured to segment the current CTU 150 into at least a first CU 151, a second CU 152, a third CU 153, and a fourth CU 154. If the current block 110 is located in the third CU 153, encoder 10 and / or decoder 20 can be configured to select a predefined subset Ri of the block search region. SUB (In this case, R1 to R15), such that the subset Ri is included in the predefined subset. SUBThe block search region is located at least partially in the third CU 153, at least partially in the first CU 151, at least partially in the second CU 152, and at least partially in one or more co-bit CUs 152' and 154' of the previously encoded CTU 150'.
[0148] like Figure 8D As shown in the non-limiting example, encoder 10 and / or decoder 20 can be configured to segment the current CTU 150 into at least a first CU 151, a second CU 152, a third CU 153, and a fourth CU 154. If the current block 110 is located in the fourth CU 154, the encoder and / or decoder can be configured to select a predefined subset Ri of the block search region. SUB (In this case, R1 to R11, R14, R15), such that the subset Ri is included in the predefined subset. SUB The block search region is located at least partially in the fourth CU 154, at least partially in the first CU 151, at least partially in the second CU 152, and at least partially in the third CU 153.
[0149] After identifying the current position of the current block 110 to be predicted, a list of block search regions called regList can be generated. Let α be the number of block search regions Ri (e.g., R1 to R17) in this list. This list can be obtained at any location in encoder 10 and decoder 20, and the list is identical on both sides.
[0150] At encoder 10, the best match for the original block (current block) 110 can be found using an error minimization metric (e.g., SAD). The proposed method computes the SAD error of the original block 110 for each block in integer sample locations of each region Ri (e.g., R1 to R17) from regList[0] to regList[α-1]. The block that gives the minimum SAD error can be selected as a second predetermined block 112, for example, as a prediction block.
[0151] The index i of the region with prediction block 112 can be stored in the prediction unit (PU), where 0 ≤ i ≤ (α-1). The first predetermined block (i.e., prediction sub-block) 111 (e.g., the center block of the selected region Ri, such as...) can be stored in the prediction unit (PU). Figure 5 In the given example, the difference between the predicted sub-block 111 (with block vector bvp) and the predicted block 112 in RIBC is stored as mvd (i.e., ribc_bvd) in PU. If the predicted sub-block 111 is the center block within the block search region Ri, then the associated block vector can be the center block. iThe associated block vector can be known to both encoder 10 and decoder 20. The region index i and ribc_bvd can be sent to decoder 20 in data stream 14.
[0152] Encoder 10 can use its built-in rate-distortion optimization algorithm to calculate the RD (rate-distortion) cost of RIBC and compare it with other intra-frame methods. If RIBC gives the minimum RD cost, then i and ribc_bvd can be sent to decoder 20.
[0153] At decoder 20, if the current mode is MODE_IBC, decoder 20 can parse region index i from data stream 14 and can identify region Ri (and therefore predictive sub-block 111). It can also read ribc_bvd, and finally...
[0154] bv = ribc_bvd + centre i [2]
[0155] The BM search at encoder 10 can be performed at integer sample positions, and the ribc_bvd signaling can also be performed at the integer sample level.
[0156] It should be noted that the RIBC prediction subblock 111 can be any predetermined integer sample location within region i. In the non-restrictive example detailed here, it can be considered as the center of region i.
[0157] Region list generation
[0158] As mentioned earlier, a region list regList can be maintained at encoder 10 and decoder 20. The region list regList can be generated based on the current position of block 110, and therefore for a given block, the region list will be the same at both encoder 10 and decoder 20.
[0159] The region list regList can be generated in the following order:
[0160] Check the lower left PU (regarding the current PU). If it exists and it is an IBC (not an IBC merge), add its region index to regList.
[0161] Check the top right PU (regarding the current PU). If it exists and is an IBC (not an IBC merge), and is different from the previous entry in regList, add its region index to regList.
[0162] The remaining regions Ri can be added in a predefined order. This order can be changed based on the quadrant of the current block 110 in the current CTU150.
[0163] Before adding it to regList, check if it is different from any previous entry in regList. Also check if the region exists in the reconstructed image. If at least one sample exists in the region, it is considered a valid region.
[0164] Area Index Signaling
[0165] Signaling for region index i can be based on the number of regions α available in regList. For efficient signaling, encoding can be done such that as the value of α decreases, fewer binary bins can be used to transmit i. Any type of entropy coding scheme can be used to transmit region index i. To further improve the efficiency of the coding scheme, context modeling can be applied to the relevant binary bins. For example, the first two region indices can be considered the most probable regions, and a context model can be applied to signal their binary bins. The remaining regions can then be transmitted using fixed-length coding or unary coding.
[0166] The number of binary binaries used to signal i can depend on α. For example, if α = 8, then perhaps only three binary binaries are needed. However, if α = 4, then perhaps only two binary binaries (instead of three) are sufficient. Therefore, a variable number of binary binaries can be used to encode region index i based on the value of α. Since the value of α can vary to some extent depending on the current position of block 110, a variable signaling method may be more efficient.
[0167] Bvd signaling
[0168] RIBC can use different BVD signaling than general IBC (general IBC uses the same syntax as inter-frame MVD signaling for BVD signaling). RIBC may not use exponential Golomb coding for BVD signaling, but instead can use fixed-length coding. Since the maximum range of ribc_bvd is explicitly known (in the given example, -17 ≤ ribc_bvd(x,y) ≤ 17), fixed-length coding is more efficient than exponential Golomb coding.
[0169] optimization
[0170] To achieve a better trade-off between encoding benefits and encoder complexity, the following optimization scheme is proposed.
[0171] If most_probable_mode[0] = DC_IDX, then only region 1 is available for the current block 110. The encoder does not test other regions. In this case, region index i may not be sent.
[0172] Limit the application of a smaller region to large blocks; for example, apply all regions to a 4x4 block, and only apply region 1 to other blocks. The signaling can also be modified accordingly.
[0173] Encoder acceleration
[0174] The following acceleration can be applied to reduce encoder complexity, while slightly sacrificing encoding benefits.
[0175] After testing the general intra-frame method, RIBC testing is performed. Before starting RIBC testing, it is checked whether the transform skip tool is enabled in the current best CU. If so, the RIBC test for the current block is skipped. Otherwise, RIBC testing continues.
[0176] In short, to achieve a better trade-off between coding gains and encoder complexity, this paper describes a region-based approach for intra-block copying. Region-based intra-block copying (RIBC) divides the search region 140 into many regions Ri. Region i, which gives the minimum SAD error for block 112, is considered the optimal region. The region index i can be sent to the decoder 20 instead of bvp_flag. The predefined block 111 in region i (in the given example, it is the block at the center of the region) can be a predictor of the current block 110. Therefore, the difference between the predictor block 111 (i.e., the predefined block in region i) and the predicted block 112 is the displacement vector ribc_bvd of the RIBC.
[0177] Although some aspects have been described in the context of the apparatus, it will be clear that these aspects also represent descriptions of the corresponding methods, where a block or device corresponds to a method step or a feature of a method step. Similarly, aspects described in the context of method steps also represent descriptions of features of the corresponding block or item or the corresponding apparatus.
[0178] Some or all of the method steps may be performed by (or using) hardware devices (such as microprocessors, programmable computers, or electronic circuits). In some embodiments, one or more of the most important method steps may be performed by such devices.
[0179] Depending on certain implementation requirements, embodiments of the present invention can be implemented in hardware or software, or at least partially in hardware or at least partially in software. Implementation can be performed using a digital storage medium (e.g., floppy disk, DVD, Blu-ray, CD, ROM, PROM, EPROM, EEPROM, or flash memory) on which electronically readable control signals are stored, which cooperate with (or are capable of cooperating with) a programmable computer system to perform the corresponding methods. Therefore, the digital storage medium can be computer-readable.
[0180] Some embodiments of the invention include a data carrier having electronically readable control signals, which is capable of cooperating with a programmable computer system to perform one of the methods described herein.
[0181] Typically, embodiments of the present invention can be implemented as a computer program product having program code operable to perform one of the methods when the computer program product is run on a computer. The program code may, for example, be stored on a machine-readable medium.
[0182] Other embodiments include a computer program stored on a machine-readable medium for performing one of the methods described herein.
[0183] In other words, embodiments of the method of the present invention are therefore computer programs having program code for performing one of the methods described herein when the computer program is run on a computer.
[0184] Therefore, another embodiment of the method of the present invention is a data carrier (or digital storage medium or computer-readable medium) on which a computer program is recorded, the computer program being used to perform one of the methods described herein. The data carrier, digital storage medium, or recording medium is typically tangible and / or non-transitory.
[0185] Therefore, another embodiment of the method of the present invention represents a data stream or signal sequence of a computer program used to perform one of the methods described herein. The data stream or signal sequence may, for example, be configured to be transmitted via a data communication connection (e.g., via the Internet).
[0186] Another embodiment includes a processing means, such as a computer or a programmable logic device, which is configured or adapted to perform one of the methods described herein.
[0187] Another embodiment includes a computer having a computer program installed thereon for performing one of the methods described herein.
[0188] Another embodiment of the invention includes an apparatus or system configured to transmit a computer program to a receiver (e.g., electronically or optically), the computer program being used to perform one of the methods described herein. The receiver may be, for example, a computer, mobile device, storage device, etc. The apparatus or system may, for example, include a file server for transmitting the computer program to the receiver.
[0189] In some embodiments, a programmable logic device (e.g., a field-programmable gate array) may be used to perform some or all of the functions described herein. In some embodiments, the field-programmable gate array may cooperate with a microprocessor to perform one of the methods described herein. Generally, the methods are preferably performed by any hardware device.
[0190] The apparatus described herein can be implemented using hardware devices, a computer, or a combination of hardware devices and a computer.
[0191] The methods described herein can be performed using hardware devices, computers, or a combination of hardware devices and computers.
[0192] Although this disclosure has been described with reference to illustrative embodiments, this description is not intended to be limiting. Various modifications and combinations of these illustrative embodiments and other embodiments of this disclosure will be apparent to those skilled in the art upon reference to this description. Therefore, it is intended that the appended claims cover any such modifications or embodiments.
[0193] References
[0194] [1] ANDSYSTEMS,VOL.6,NO.4,December 2016
[0195] [2] G. Sullivan and J.R.R. Hm, “Meeting Report of the 12th meeting of the Joint Video Experts Team (JVET), Macao, CN, 3–12 October 2018”, Macao, China, October 3–12, 2018
[0196] [3] WJ Chien, V. Seregin, M. Karczewicz, “CE8-related: CPR mode signaling and interaction with inter coding tools”, Marrakech, MA, January 9-18, 2019
[0197] [4]X.Xu,X.Li,S.Liu,E.Chai,“CE8:CPR reference memory reuse without increasing memory requirement (CE8.1.2a and CE8.1.2d)”, Marrakech, MA, January 9–18, 2019.
Claims
1. An encoder (10) for block-based encoding of an image (12) into a data stream (14) using region-based intra-block copying, the encoder (10) comprising a processor and a memory, the memory storing instructions which, when executed, cause the processor to perform the following operations: For the current block (110) of the image (12), determine the difference between the predicted sub-block (111) and the predicted block (112) within the block search area (140). ), and the difference ( ) Encode into the data stream (14), in, The block search area (140) is divided into a plurality of smaller block search regions (Ri), wherein the block search regions (Ri) are located within the previously encoded region where the current block (110) is located in the image.
2. The encoder (10) according to claim 1. in, The prediction sub-block (111) and the prediction block (112) are both located within the same block search region (Ri).
3. The encoder (10) according to claim 1, wherein, The plurality of block search regions (Ri) define the regions in which the encoder (10) searches for the prediction block (112).
4. The encoder (10) according to claim 1, wherein, The predicted block (112) is identified based on an error minimization metric used to determine the similarity between the current block (110) and the predicted block (112).
5. The encoder (10) according to claim 1, wherein, Search within the block search area (140) for a specific block whose similarity to the current block (110) is above a predetermined similarity threshold, and designate the specific block as the predicted block (112).
6. The encoder (10) according to claim 1, wherein, The predicted block (112) is searched in at least one of the available block search regions (Ri), or in each of the available block search regions (Ri). If the predicted block (112) is found in one of the multiple available block search regions (Ri), then a block search region (Ri) in which the predicted block (112) is found is identified.
7. The encoder (10) according to claim 6. in, The region index (i) associated with an identified block search region (Ri) is encoded into the data stream (14).
8. The encoder (10) according to claim 6. in, An identified block search region (Ri) in which the prediction block (112) is found includes at least one block representing a prediction sub-block (111), wherein the prediction sub-block (111) is located at a predetermined sample location within the identified block search region (Ri), the predetermined sample location being known to the encoder (10).
9. The encoder (10) according to claim 8, wherein, The predicted sub-block (111) is a central block indicating the center of the identified block search region (Ri) in which the predicted block (112) is found.
10. The encoder (10) according to claim 1. in, Determine the spatial distance between the prediction sub-block (111) and the prediction block (112), where the spatial distance represents the difference between the prediction sub-block (111) and the prediction block (112). The difference ( ) is encoded into the data stream (14).
11. The encoder (10) according to claim 1. in, Predictive coding is used, wherein the current block (110) is the block to be predicted based on at least one of the predictive sub-block (111) and the predictive block (112).
12. The encoder (10) according to claim 1, wherein, Block vector-based signaling is applied, and a first block vector (bvp) and a second block vector (bv) are determined. The first block vector (bvp) indicates the relative spatial distance between the current block (110) and the predicted sub-block (111). The second block vector (bv) indicates the relative spatial distance between the current block (110) and the predicted block (112).
13. The encoder (10) according to claim 12, wherein, Determine the difference between the first block vector (bvp) and the second block vector (bv) to obtain a representation of the difference between the predicted sub-block (111) and the predicted block (112). The difference vector (ribc_bvd) of the difference ( ) is encoded into the data stream (14).
14. The encoder (10) according to claim 13, wherein, The difference vector (ribc_bvd) represents the relative spatial distance between the prediction sub-block (111) and the prediction block (112).
15. The encoder (10) according to claim 1. in, The block search area (140) is divided into n block search regions (Ri), and the size of each block search region is a predetermined size K x L.
16. The encoder (10) according to claim 1. in, The block search area (140) is divided into multiple block search regions (Ri) of the same size.
17. The encoder (10) according to claim 1. in, The block search area (140) is divided into multiple block search regions (Ri) of different sizes.
18. The encoder (10) according to claim 1. in, The block search area (140) is divided into multiple square block search areas (Ri).
19. The encoder (10) according to claim 1. in, The block search area (140) is divided into multiple adjacent block search regions (Ri).
20. The encoder (10) according to claim 1. in, The plurality of block search regions (Ri) are applied at the coding block level and / or at the coding sub-block level.
21. The encoder (10) according to claim 20. in, For the current block (110) to be encoded, select a predefined subset (Ri) of the block search regions from multiple block search regions (Ri). SUB ), wherein, contained in the predefined subset (Ri) SUB One or more block search regions in the current coded block (150) are located at least partially within the previously coded portion of the current coded block (150).
22. The encoder (10) according to claim 20. in, For the current block (110) to be encoded, select a predefined subset (Ri) of the block search regions from multiple block search regions (Ri). SUB ), wherein, contained in the predefined subset (Ri) SUB One or more block search regions in ) It is at least partially located in the previously encoded portion of the current encoded block (150), and It is at least partially located in the previously encoded block (150').
23. The encoder according to claim 21, in, The predefined subset (Ri) of the block search region is selected based on the position of the current block (110) within the current encoding block (150) to be encoded. SUB ).
24. The encoder (10) according to claim 20. in, The boundaries of one or more block search regions among the plurality of block search regions (Ri) are defined depending on the position of the current block (110) within the current encoding block (150) to be encoded.
25. The encoder (10) according to claim 20. in, The current coded block (150) is divided into at least a first coded sub-block (151), a second coded sub-block (152), a third coded sub-block (153), and a fourth coded sub-block (154), and If the current block (110) is located in the first encoded sub-block (151), Then select a predefined subset (Ri) of the block search region. SUB ), such that it is included in the predefined subset (Ri) SUB The block search region in ) It is at least partially located in the first coded sub-block (151), and It is located at least partially in one or more co-occurring coded sub-blocks (152', 154') of the previously coded block (150').
26. The encoder (10) according to claim 20. in, The current coded block (150) is divided into at least a first coded sub-block (151), a second coded sub-block (152), a third coded sub-block (153), and a fourth coded sub-block (154), and If the current block (110) is located in the second encoded sub-block (152), Then select a predefined subset (Ri) of the block search region. SUB ), such that it is included in the predefined subset (Ri) SUB The block search region in ) At least partially located in the second coded sub-block (152) of the current coded block (150), and It is located at least partially in the first coded sub-block (151) of the current coded block (150).
27. The encoder (10) according to claim 20. in, The current coded block (150) is divided into at least a first coded sub-block (151), a second coded sub-block (152), a third coded sub-block (153), and a fourth coded sub-block (154), and If the current block (110) is located in the third encoded sub-block (153), Then select a predefined subset (Ri) of the block search region. SUB ), such that it is included in the predefined subset (Ri) SUB The block search region in ) It is at least partially located in the third coded sub-block (153) of the current coded block (150), and At least partially located in the first coded sub-block (151) of the current coded block (150), and At least partially located in the second coded sub-block (152) of the current coded block (150), and It is located at least partially in one or more co-occurring coded sub-blocks (152', 154') of the previously coded block (150').
28. The encoder according to claim 20, in, The current coded block (150) is divided into at least a first coded sub-block (151), a second coded sub-block (152), a third coded sub-block (153), and a fourth coded sub-block (154), and If the current block (110) is located in the fourth encoded sub-block (154), Then select a predefined subset (Ri) of the block search region. SUB ), such that it is included in the predefined subset (Ri) SUB The block search region in ) It is at least partially located in the fourth coded sub-block (154) of the current coded block (150), and At least partially located in the first coded sub-block (151) of the current coded block (150), and At least partially located in the second coded sub-block (152) of the current coded block (150), and It is located at least partially in the third coded sub-block (153) of the current coded block (150).
29. The encoder (10) according to claim 21. in, This will be compared with the predefined subset (Ri) contained in the block search region. SUB The region indexes associated with those block search regions in the block search region list are stored in the block search region list.
30. The encoder (10) according to claim 29, wherein, The predefined subset (Ri) of the block search region SUB Search the prediction block (112) within ) and The region index (i) associated with a block search region (Ri) in which the predicted block (112) is found is encoded into the data stream (14).
31. The encoder (10) according to claim 30, wherein, The predetermined block within the block search region (Ri) in which the predicted block (112) is found is designated as the predicted sub-block (111). Determine the difference between the predicted sub-block (111) and the predicted block (112) within the block search region (Ri). The predicted block (112) is found in the block search region (Ri), and The difference (ribc_bvd) is used to divide the difference (ribc_bvd). Encode (10) into the data stream (14).
32. The encoder (10) according to claim 31. in, The rate-distortion cost associated with the reconstruction of the current block (110) is calculated using the region index (i) associated with the block search region (Ri) in which the predicted block (112) is found, and the difference value (ribc_bvd) is calculated. If the calculated rate distortion is less than the rate distortion of one or more available alternative reconstruction methods, then the corresponding region index (i) associated with the one block search region (Ri) in which the predicted block (112) is found, and the difference value (ribc_bvd) are both encoded into the data stream (14).
33. The encoder (10) according to claim 31. in, The differential value (ribc_bvd) is encoded into the data stream (14) using fixed-length encoding.
34. A decoder (20) for block-wise decoding of an image (12) from a data stream (14) using region-based intra-block copying, the decoder (20) comprising a processor and a memory storing instructions which, when executed, cause the processor to perform the following operations: Based on the difference between the predicted sub-block (111) and the predicted block (112) within the block search region (140) ), to reconstruct the current block (110) of the image (12), wherein, The difference is derived from the data stream (14). ), The block search area (140) is divided into multiple smaller block search regions (Ri), wherein the block search region (Ri) is located within the previously encoded region where the current block (110) is located in the image.
35. The decoder (20) according to claim 34. in, The prediction sub-block (111) and the prediction block (112) are both located within the same block search region (Ri).
36. The decoder (20) according to claim 34, wherein, The plurality of block search regions (Ri) define the regions in which the predicted block (112) is to be found, wherein a region index (i) indicating a block search region (Ri) in which the predicted block (112) is located is derived from the data stream (14).
37. The decoder (20) according to claim 36, wherein, Based on the derived region index (i), a block search region (Ri) in which the predicted block (112) is located is identified, and the position of the predicted sub-block (111) within the identified block search region (Ri) is known.
38. The decoder (20) according to claim 37. in, The predicted sub-block (111) is located at an integer position within the identified block search region (Ri), and the integer position is known.
39. The decoder (20) according to claim 38. in, The integer position is the center of the identified block search region (Ri).
40. The decoder (20) according to claim 36, wherein, Based on the difference derived from the data stream (14) And the current block (110) is decoded based on the region index (i) derived from the data stream (14).
41. The decoder (20) according to claim 34. in, Predictive coding is used, wherein the current block (110) is the block to be predicted and decoded based on at least one of the predictive sub-block (111) and the predictive block (112).
42. The decoder (20) according to claim 34, wherein, Block vector-based signaling is applied using a first block vector (BVP) and a second block vector (BV), where the first block vector (BVP) indicates the relative spatial distance between the current block (110) and the predicted sub-block (111), and The second block vector (bv) indicates the relative spatial distance between the current block (110) and the predicted block (112).
43. The decoder (20) according to claim 42, wherein, Given the first block vector (bvp), and wherein, derived from the data stream (14) is a representation of the difference between the first block vector (bvp) and the second block vector (bv) ( The difference vector (ribc_bvd) of ) and The second block vector (bv) is calculated based on the difference vector (ribc_bvd) and the first block vector (bvp) to obtain the relative spatial distance between the current block (110) and the prediction block (112) so as to perform prediction decoding on the current block (110).
44. The decoder (20) according to claim 34, wherein, The difference between the prediction sub-block (110) and the prediction block (112) The relative spatial distance between the predicted sub-block (111) and the predicted block (112) within the same block search region (Ri) corresponds to the relative spatial distance between them.
45. The decoder (20) according to claim 34, wherein, Derive a region index (i) from the data stream (14) that is associated with one of the predefined block search regions (Ri) among a plurality of block search regions, the region index (i) indicating which predefined block search region the predicted block (112) is located in.
46. The decoder (20) according to claim 45. in, Knowing a predefined position within a predefined block search area, the predefined position indicating the predicted sub-block (111) within the predefined block search area.
47. The decoder (20) according to claim 46. in, Derive an indicator (ribc_bvd) from the data stream (14), the indicator (ribc_bvd) indicating the spatial distance between the predefined location and the prediction block within the search area of a predefined block, the spatial distance representing the difference between the prediction sub-block (111) and the prediction block (112) within the search area of a predefined block (112). ).
48. The decoder (20) according to claim 34. in, The block search area (140) is divided into n block search regions (Ri), and the size of each block search region is a predetermined size K x L.
49. The decoder (20) according to claim 34. in, The block search area (140) is divided into multiple block search regions (Ri) of the same size.
50. The decoder (20) according to claim 34. in, The block search area (140) is divided into multiple block search regions (Ri) of different sizes.
51. The decoder (20) according to claim 34. in, The block search area (140) is divided into multiple square block search areas (Ri).
52. The decoder (20) according to claim 34. in, The block search area (140) is divided into multiple adjacent block search regions (Ri).
53. The decoder (20) according to claim 34. in, The plurality of block search regions (Ri) are applied at the coding block level and / or at the coding sub-block level.
54. The decoder (20) according to claim 34. in, For the current block (150) to be encoded, select a predefined subset (Ri) of the block search regions from multiple block search regions (Ri). SUB ), wherein, contained in the predefined subset (Ri) SUB One or more block search regions in the current coded block (150) are located at least partially within the previously coded portion of the current coded block (150).
55. The decoder (20) according to claim 34. in, For the current block (110) to be encoded, select a predefined subset (Ri) of the block search regions from multiple block search regions (Ri). SUB ), wherein, contained in the predefined subset (Ri) SUB One or more block search regions in ) It is at least partially located in the previously encoded portion of the current encoded block (150), and It is at least partially located in the previously encoded block (150').
56. The decoder (20) according to claim 54. in, The predefined subset (Ri) of the block search region is selected based on the position of the current block (110) within the current encoding block (150) to be encoded. SUB ).
57. The decoder (20) according to claim 53. in, The boundaries of one or more block search regions among the plurality of block search regions (Ri) are defined depending on the position of the current block (110) within the current encoding block (150) to be encoded.
58. The decoder (20) according to claim 53. in, The current coded block (150) is divided into at least a first coded sub-block (151), a second coded sub-block (152), a third coded sub-block (153), and a fourth coded sub-block (154), and If the current block (110) is located in the first encoded sub-block (151), Then select a predefined subset (Ri) of the block search region. SUB ), such that it is included in the predefined subset (Ri) SUB The block search region in ) It is at least partially located in the first coded sub-block (151), and It is located at least partially in one or more co-occurring coded sub-blocks (152', 154') of the previously coded block (150').
59. The decoder (20) according to claim 53. in, The current coded block (150) is divided into at least a first coded sub-block (151), a second coded sub-block (152), a third coded sub-block (153), and a fourth coded sub-block (154), and If the current block (110) is located in the second encoded sub-block (152), Then select a predefined subset (Ri) of the block search region. SUB ), such that it is included in the predefined subset (Ri) SUB The block search region in ) At least partially located in the second coded sub-block (152) of the current coded block (150), and It is located at least partially in the first coded sub-block (151) of the current coded block (150).
60. The decoder (20) according to claim 53. in, The current coded block (150) is divided into at least a first coded sub-block (151), a second coded sub-block (152), a third coded sub-block (153), and a fourth coded sub-block (154), and If the current block (110) is located in the third encoded sub-block (153), Then select a predefined subset (Ri) of the block search region. SUB ), such that it is included in the predefined subset (Ri) SUB The block search region in ) It is at least partially located in the third coded sub-block (153) of the current coded block (150), and At least partially located in the first coded sub-block (151) of the current coded block (150), and At least partially located in the second coded sub-block (152) of the current coded block (150), and It is located at least partially in one or more co-occurring coded sub-blocks (152', 154') of the previously coded block (150').
61. The decoder (20) according to claim 53. in, The current coded block (150) is divided into at least a first coded sub-block (151), a second coded sub-block (152), a third coded sub-block (153), and a fourth coded sub-block (154), and If the current block (110) is located in the fourth encoded sub-block (154), Then select a predefined subset (Ri) of the block search region. SUB ), such that it is included in the predefined subset (Ri) SUB The block search region in ) It is at least partially located in the fourth coded sub-block (154) of the current coded block (150), and At least partially located in the first coded sub-block (151) of the current coded block (150), and At least partially located in the second coded sub-block (152) of the current coded block (150), and It is located at least partially in the third coded sub-block (153) of the current coded block (150).
62. The decoder (20) according to claim 54. in, Retrieve the predefined subset (Ri) contained in the block search region (Ri) from the block search region list (regList). SUB The corresponding index (i) of those block search regions (Ri) in ).
63. The decoder (20) according to claim 62, wherein, Identify a specific predefined block search region (Ri) from the block search region list (regList), in which the predicted block (112) is located.
64. The decoder (20) according to claim 63, wherein, Designate a predefined block within the specific predefined block search region (Ri) as the prediction sub-block (111), and A difference value (ribc_bvd) is derived from the data stream (14), which indicates the difference between the predicted sub-block (111) and the predicted block (112) within a specific predefined block search region (Ri). ).
65. The decoder (20) according to claim 36, wherein, The current block (110) is decoded based on the region index (i) derived from the data stream (14) and the difference value (ribc_bvd) derived from the data stream (14), according to the prediction block (112).
66. The decoder (20) according to claim 64. in, The differential value (ribc_bvd) is signaled in the data stream (14) using fixed-length encoding.
67. A codec system comprising an encoder (10) according to claim 1 and a decoder according to claim 34.
68. A method for block-based encoding of an image (12) into a data stream (14) using region-based intra-block copying, the method comprising the steps of: Based on the difference between the predicted sub-block (111) and the predicted block (112) within the block search region (140) ), to reconstruct the current block (110) of the image (12), and to transfer the difference ( ) Encode into the data stream (14), The block search area (140) is divided into multiple smaller block search regions (Ri), wherein the block search region (Ri) is located within the previously encoded region where the current block (110) is located in the image.
69. A method for block-based decoding of a picture (12) from a data stream (14) using region-based intra-block copying, the method comprising the steps of: Based on the difference between the predicted sub-block (111) and the predicted block (112) within the block search region (140) ), to reconstruct the current block (110) of the image (12), wherein the difference is derived from the data stream (14). ), The block search area (140) is divided into multiple smaller block search regions (Ri), wherein the block search region (Ri) is located within the previously encoded region where the current block (110) is located in the image.
70. A computer-readable digital storage medium having stored thereon a computer program having program code that, when executed on a computer, performs the method according to claim 68 or claim 69.
71. A method for transmitting a data stream (14), said data stream (14) being obtained by the method according to claim 68.
Citation Information
Patent Citations
Parallel processing motion estimation for H.264 video codec
US20080126278A1