Apparatus and method for performing deblocking
The deblocking filter apparatus and method improve deblocking efficiency by using asymmetric and longer tap filters to differentiate sample modifications on block edges, reducing processing time and enhancing accuracy in image coding.
Patent Information
- Application Number
- JP2024166727
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2018-08-27
- Filing Date
- 2024-09-25
- Publication Date
- 2025-11-10
- Estimated Expiration
- 2039-08-12
AI Technical Summary
Conventional deblocking filtering methods are inefficient and time-consuming, particularly when dealing with image blocks that utilize sub-block tools, leading to visible edge artifacts and increased processing times.
A deblocking filter apparatus and method that employs asymmetric and longer tap filters to determine and filter edges between coding blocks and sub-blocks, allowing parallel processing by differentiating sample modifications on either side of the edges, reducing overlap and processing time.
The proposed solution enables efficient and accurate deblocking filtering with reduced processing time by avoiding filtering overlap between block and sub-block edges, ensuring parallel execution.
Smart Images

Figure 0007766759000048 
Figure 0007766759000049 
Figure 0007766759000050
Abstract
Description
[Background technology]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority to U.S. Provisional Patent Application No. 62 / 717,029, filed August 10, 2018, and U.S. Provisional Patent Application No. 62 / 723,453, filed August 27, 2018. The foregoing patent applications are incorporated herein by reference in their entireties.
[0002] Technical Field FIELD OF THE INVENTION Embodiments of the present invention relate to the field of image processing, such as still image and / or video image coding. In particular, embodiments of the present invention deal with improvements to deblocking filters.
[0003] background Image coding (encoding and decoding) is used in a wide range of digital imaging applications, such as digital broadcast TV, video transmission over the Internet and mobile networks, real-time conversation applications such as video chat, video conferencing, DVD and Blu-ray discs, video content acquisition and editing systems, and camcorders for security applications.
[0004] Since the development of the block-based hybrid video coding approach in the H.261 standard in 1990, new video coding techniques and tools have been developed, forming the basis for new video coding standards. One of the goals of most video coding standards has been to achieve a reduction in bitrate compared to previous standards without sacrificing image quality. Furthermore, video coding standards include MPEG-1 Video, MPEG-2 Video, ITU-T H.262 / MPEG-2, ITU-T H.263, ITU-T H.264 / MPEG-4 Part 10, Advanced Video Coding (AVC), ITU-T H.265, High Efficiency Video Coding (HEVC), ITU-T H.266 / Versatile Video Coding (VVC), and extensions to these standards, such as scalability and / or three-dimensional (3D) extensions.
[0005] Block-based image coding methods share the commonality that edge artifacts may occur along block edges. These artifacts result from the independent coding of coding blocks. These edge artifacts are often easily visible to the user. The goal of block-based image coding is to reduce edge artifacts below the visibility threshold. This is done by performing deblocking filtering. Such deblocking filtering is performed on the decoding side to remove visible edge artifacts, and on the encoding side to prevent edge artifacts from being coded into the image. Deblocking filtering can be particularly challenging for image blocks that use sub-block tools (such as transform units (TUs), prediction units (PUs), and coding units (CUs)). Summary of the Invention
[0006] In consideration of the above-mentioned problems, embodiments of the present invention aim to improve conventional deblocking filtering. The present invention has an objective of providing a deblocking filter device, an encoder, a decoder, and corresponding methods capable of performing deblocking filtering with a reduced processing time. Furthermore, the deblocking should be efficient and accurate.
[0007] Embodiments of the invention are defined by the features of the independent claims, further advantageous implementations of the embodiments are defined by the features of the dependent claims.
[0008] Particular embodiments are outlined in the accompanying independent claims, other embodiments in the dependent claims.
[0009] According to a first aspect of the present invention, there is provided a deblocking filter apparatus, the deblocking filter apparatus being intended for use in an image encoder and / or an image decoder, the deblocking filter apparatus comprising: an edge positioning unit configured to determine edges between blocks, the edges between blocks including block edges (e.g., CU edges or CU boundaries or TU boundaries) between a first coding block P and a second coding block Q, and sub-block edges between sub-blocks of the first coding block P or the second coding block Q (i.e., the first coding block P or the second coding block Q has sub-blocks or uses sub-block tools), wherein the first coding block P has a block size of M×N samples or N×M samples, and the second coding block Q has a block size of L×T samples or T×L samples (the block size of either of the two coding blocks may be expressed by W*H, where W and H indicate the width and height of the respective coding blocks), for example, N or T is an even integer 2; n(i.e., an integer power of 2 where n is an integer) and greater than a threshold value (e.g., having a value such as 8 or 16), an edge positioning unit, A deblocking determination unit configured to determine whether a block edge between a first coding block P and a second coding block Q should be filtered by applying a first filter (i.e., a longer tap filter, or an asymmetric filter, or an asymmetric tap filter, or an asymmetric long filter), A deblocking filtering unit configured to apply a first filter (i.e., a longer tap filter, or an asymmetric filter, or an asymmetric tap filter, or an asymmetric long filter) to the values of samples in the vicinity of the block edge between the first coding block P and the second coding block Q when it is determined that the block edge between the first coding block P and the second coding block Q should be filtered by applying the first filter. For each line, at most MA sample values of an adjacent first coding block perpendicular to the block edge are corrected, and at most MB sample values of an adjacent second coding block perpendicular to the block edge are corrected, or for each line, at most MA sample values of an adjacent second coding block perpendicular to the block edge are corrected, and at most MB sample values of an adjacent first coding block perpendicular to the block edge are corrected. Here, MA ≠ MB, and in particular, MA < MB such as MA < MB = 7. For example, MA = 3 and MB = 7, or MA = 4 and MB = 7, or MA = 5 and MB = 7, etc. It is possible to understand that the values of MA or MB depend on the values of N or T.
[0010] If the second image block Q is a current block having sub-blocks or using the sub-block tool, and the first image block P is a neighboring block of the current block, then in the second coding block, for each line of adjacent input samples perpendicular to the block edge, at most MA samples are modified to generate output filtered samples, and in the first coding block, for each line of adjacent input samples perpendicular to the block edge, at most MB samples are modified to generate output filtered samples. For example, N or T may be an even integer greater than 8, 2 n and M or L is an even integer greater than 2. n (e.g., M or L can have the following values: 4, 8, 16, or 32, ...), where M is different from N, or M is the same as N, or L is different from T, or L is the same as T, and M x N (where N > 8) applies to horizontal edges and N x M (where N > 8) applies to vertical edges. In another example, N or T is an even integer greater than 16, 2 n where M×N (N>16) applies to horizontal edges and N×M (where N>16) applies to vertical edges.
[0011] The difference between block edges and sub-block edges is explained further in the description. A sub-block edge is an edge internal to a block using sub-block tools, including sub-pu tools such as Affine or Advanced Temporal Motion Vector Prediction (ATMVP), while a block edge (i.e., a coding unit (CU) edge or coding block edge or CU boundary) is an edge shared between two coding units, two coding blocks, or two transform blocks. Sub-block tools may also include tools such as an intra-sub-partition tool (ISP) and a sub-block transform (SBT) tool.
[0012] It should be noted that the terms "block," "coding block," or "image block" are used in this disclosure to apply to transform units (TUs), prediction units (PUs), coding units (CUs), etc. In VVC, generally, transform units and coding units are largely consistent, except in the few scenarios where TU tiling or sub-block transforms (SBTs) are used. It is understood that the terms "block / image block / coding block / transform block" and "block size / transform block size" may be interchanged in this disclosure. The terms "sample / pixel" may be interchanged in this disclosure.
[0013] The present invention works for both vertical and horizontal edges. For vertical edges, the width of the first or second coding block is checked to see if it is greater than 8 samples (e.g., 16 or 32). For horizontal edges, the height of the first or second coding block is checked to see if it is greater than 8 samples (e.g., 16 or 32). For vertical edges, the width of the block is considered, and a longer tap filter (i.e., a long filter) is applied only for blocks with a width greater than or equal to 16. For horizontal edges, the height of the block is considered, and a longer tap filter (i.e., a long filter) is applied only for blocks with a height greater than or equal to 16.
[0014] The first filter (i.e., a longer tap filter, an asymmetric filter, an asymmetric tap filter, or an asymmetric long filter) is a filter that uses DA samples for filter determination on one side of the block edge and DB samples for filter determination on the other side of the block edge, where MB samples are modified on one side of the block edge (CU edge or TU edge) and MA samples are modified on the other side of the block edge (CU edge or TU edge), with MA ≠ MB, and in particular MA < MB, such as MA < MB = 7. For example, note that MA = 3 and MB = 7, or MA = 4 and MB = 7, or MA = 5 and MB = 7. Generally, DA = MA + 1 and DB = MB + 1. The first filter may be an asymmetric filter that modifies a different number of samples on either side of the block edge (e.g., CU edge or TU edge).
[0015] This allows for different handling of the two sides of the block edge, so the method can avoid filtering overlap between the block edge and the sub - block edge, and thus can ensure that deblocking can be performed in parallel. Therefore, the processing time of the deblocking filtering is significantly reduced.
[0016] Note that the filter device may include a processor configured to perform filtering and modification. Furthermore, this can also ensure, in particular, that the edges between any blocks that use sub - block tools can be deblocked in parallel.
[0017] In a possible implementation of such an apparatus according to the first aspect, a sub-block edge between sub-blocks exists within a first coding block and a sub-block edge between sub-blocks exists within a second coding block (i.e., the first coding block and the second coding block have sub-blocks), and the deblocking decision unit is further configured to determine whether the block edge between the first coding block and the second coding block should be filtered by applying a second filter (e.g., an HEVC strong filter); and The deblocking filtering unit is further configured to, when it is determined that the block edge between the first coding block and the second coding block should be filtered by applying a second filter (e.g., an HEVC strong filter), apply a second filter (e.g., an HEVC strong filter) to values of samples near the block edge, where MA' sample values of the first coding block adjacent to the block edge are modified and MB' sample values of the second coding block adjacent to the block edge are modified, where MA'=MB' such that MA'=MB'<7, for example MA'=MB'=3 or MA'=MB'=5.
[0018] Note that the second filter may be an HEVC strong filter, where MA' (e.g., 3) samples are modified on one side of the block edge (CU edge) and MB' (e.g., 3) samples are modified on the other side of the block edge (CU edge). In another example, the second filter is a strong filter that can modify at most three samples on both sides of the edge. HEVC specifies two filters as deblocking filters: a normal filter and a strong filter. The normal filter modifies at most two samples on both sides of the edge. The strong filter performs three more checks between samples along the edge.
[0019] In a possible implementation of such a device according to the first aspect, if a sub-block edge between sub-blocks does not exist within the second coding block but does exist within the first coding block (i.e. the first coding block has sub-blocks), then at most MA sample values of the first coding block adjacent to the block edge per line are modified, and at most MB sample values of the second coding block adjacent to the block edge per line are modified, e.g. MA=3 and MB=7, or MA=4 and MB=7, or MA=5 and MB=7; or If the sub-block edge between sub-blocks does not exist within the first coding block, but exists within the second coding block (i.e., the second coding block has sub-blocks), then at most MA sample values of the second coding block adjacent to the block edge per line are modified, and at most MB sample values of the first coding block adjacent to the block edge per line are modified, for example, MA=3 and MB=7, or MA=4 and MB=7, or MA=5 and MB=7.
[0020] In a possible implementation form of the device according to such first aspect or any of the above implementations of the first aspect, the deblocking decision unit further determines whether a block edge between the first coding block and the second coding block should be filtered by applying a first filter (i.e., a longer tap filter, or an asymmetric filter, or an asymmetric tap filter, or an asymmetric longer filter), by: - at most D A sample values of the first coding block adjacent to the block edge as the first filter decision, and - at most DB sample values of the second coding block adjacent to the block edge as the second filter decision value; The method is configured to determine the value based on the
[0021] In general, DA=MA+1 and DB=MB+1. If MA=3 and MB=3, then DA=DB=4, or if MA=7 and MB=7, then DA=DB=8, or if MA=3 and MB=7, then DA=4, DB=8, or if MA=4 and MB=7, then DA=5, DB=8, or if MA=5 and MB=7, then DA=6, DB=8. This allows very accurate parallel determination of which edges are actually deblocked and which edges are not deblocked.
[0022] In a possible implementation form of the device according to such first aspect or any of the above implementations of the first aspect, if a sub-block edge between sub-blocks is inside the second coding block Q (i.e., the second coding block Q has sub-blocks), the deblocking decision unit may determine whether the sub-block edge is within the second coding block Q (i.e., the second coding block Q has sub-blocks) by using the following first formula:
number
[0023] A new filter condition is proposed, which significantly reduces the line memory required to store pixel values of past coding units, which is necessary to perform deblocking at the edges of coding units.
[0024] In a possible implementation form of the device according to such first aspect or any of the above implementations of the first aspect, if a sub-block edge between sub-blocks exists inside the first coding block P (i.e., the first coding block P has sub-blocks), the deblocking decision unit may determine whether the sub-block edge is within the first coding block P (i.e., the first coding block P has sub-blocks) by using the following second formula:
number
[0025] A new filter condition is proposed, which significantly reduces the line memory required to store pixel values of past coding units, which is necessary to perform deblocking at the edges of coding units.
[0026] In a possible implementation form of the apparatus according to such first aspect or any of the above implementations of the first aspect, the threshold parameter β is determined based on a quantization parameter QP associated with a quantization step size of the plurality of samples, or the threshold parameter β is determined based on the quantization parameter QP using a look-up table.
[0027] In a possible implementation form of the device according to such first aspect or any of the above implementations of the first aspect, if a sub-block edge between sub-blocks does not exist inside the first coding block P and a sub-block edge between sub-blocks exists inside the second coding block Q (i.e., the first coding block P does not have a sub-block and the second coding block Q has a sub-block), the deblocking filtering unit may be configured to:
number
[0028] New filter coefficients are proposed, which allow two types of filter coefficients, including HEVC strong filter coefficients and longer tap asymmetric filter coefficients.
[0029] In a possible implementation form of the device according to such first aspect or any of the above implementations of the first aspect, if a sub-block edge between sub-blocks does not exist inside the first coding block P and a sub-block edge between sub-blocks exists inside the second coding block Q (i.e., the first coding block P does not have a sub-block and the second coding block Q has a sub-block), the deblocking filtering unit may be configured to:
number
[0030] In a possible implementation form of the device according to such first aspect or any of the above implementations of the first aspect, if a sub-block edge between sub-blocks does not exist inside the first coding block P and a sub-block edge between sub-blocks exists inside the second coding block Q (i.e., the first coding block P does not have a sub-block and the second coding block Q has a sub-block), the deblocking filtering unit may be configured to:
number
[0031] In a possible implementation form of the device according to such first aspect or any of the above implementations of the first aspect, if a sub-block edge between sub-blocks does not exist inside the first coding block P and a sub-block edge between sub-blocks exists inside the second coding block Q (i.e., the first coding block P does not have a sub-block and the second coding block Q has a sub-block), the deblocking filtering unit may be configured to:
number
[0032] According to a second aspect, there is provided a deblocking filter apparatus, the deblocking filter apparatus being intended for use in an image encoder and / or an image decoder. an edge positioning unit configured to determine edges between blocks, the edges between blocks including block edges between a first coding block P and a second coding block Q and sub-block edges between sub-blocks of the first coding block P or the second coding block Q (i.e., the first coding block P or the second coding block Q has sub-blocks or the first coding block P or the second coding block Q uses a sub-block tool), the first coding block P has a block size that is M×N or N×M, and the second coding block Q has a block size that is L×T or T×L, for example, N or T is an even integer 2 greater than a threshold (e.g., 8 or 16, etc.); n an edge positioning unit, a deblocking decision unit configured to decide whether a block edge between a first coding block P and a second coding block Q should be filtered by applying a first filter (i.e., a longer tap filter, or an asymmetric filter, or an asymmetric tap filter, or an asymmetric long filter); and a deblocking filtering unit configured to apply a third filter to values of samples near the block edge between the first coding block P and the second coding block Q when it is determined that the block edge between the first coding block P and the second coding block Q should not be filtered by applying the first filter, wherein at most MA sample values of the first coding block adjacent to the block edge per line are modified and at most MB sample values of the second coding block adjacent to the block edge per line are modified, where MA=MB<7, for example MA=MB=4.
[0033] For example, N or T is an even integer greater than 8. n and M or L is an even integer greater than 2. n and M is different from N, or M is the same as N, or L is different from T, or L is the same as T. In one example, the third filter may be an HEVC strong filter capable of modifying up to four samples on both sides of a block edge (CU edge). In other words, the third filter may be an HEVC strong filter in which up to four samples are modified on one side of the block edge (CU edge) while up to four samples are modified on the other side of the block edge (CU edge).
[0034] This allows modifying a small number of sample values on both sides of the block edge, so the method can avoid some filtering overlap between the block edge and the sub-block edge, thus ensuring that deblocking can be performed in parallel, thus shortening the processing time of deblocking filtering.
[0035] According to a third aspect of the present invention, there is provided a deblocking filter apparatus, the deblocking filter apparatus being intended for use in an image encoder and / or an image decoder, the deblocking filter apparatus comprising: an edge positioning unit configured to determine edges between blocks, the edges between blocks including block edges between a first coding block P and a second coding block Q and sub-block edges between sub-blocks of the first coding block P or the second coding block Q (i.e., the first coding block P or the second coding block Q has sub-blocks), the first coding block P has a block size that is M×N or N×M, and the second coding block Q has a block size that is L×T or T×L, for example, N or T is an even integer 2 greater than a threshold (e.g., 8 or 16, etc.); n an edge positioning unit, a deblocking decision unit configured to decide that sub-block edges between sub-blocks of the first coding block P or the second coding block Q (interior) should not be filtered, i.e., to decide that sub-block edges between sub-blocks of the first coding block P or the second coding block Q (interior) are disabled with respect to deblocking; a deblocking filtering unit configured to apply a fourth filter (a conventional longer tap filter) to values of samples near a block edge between the first coding block P and the second coding block Q, where at most MA sample values of the first coding block adjacent to the block edge are modified and at most MB sample values of the second coding block adjacent to the block edge are modified, where MA=MB, e.g. MA=MB=7.
[0036] For example, N or T is an even integer greater than 8. nand M or L is an even integer greater than 2. n and M is different from N, or M is the same as N, or L is different from T, or L is the same as T.
[0037] In one example, the fourth filter may be a conventional longer tap filter capable of modifying at most seven samples on either side of a block edge (e.g., a CU edge or CU boundary).
[0038] This allows the sub-block edges between sub-blocks of the first coding block P or the second coding block Q (interior) to be disabled for deblocking, so the method can avoid filtering overlap between block edges and sub-block edges, thus ensuring that deblocking can be performed in parallel, thus significantly reducing the processing time of deblocking filtering.
[0039] According to a fourth aspect of the present invention, there is provided a video encoding device (100) for encoding images of a video stream, the video encoding device (100) comprising: a reconstruction unit (114) configured to reconstruct a picture; and a filter unit (120) as previously described for processing the reconstructed picture into a filtered reconstructed picture. This allows for very efficient and accurate encoding of images.
[0040] According to a fifth aspect of the present invention, there is provided a video decoding device (200) for decoding pictures of an encoded video stream (303), the video decoding device (200) comprising: a reconstruction unit (214) configured to reconstruct a picture; and a loop filter unit (220) as described above for processing the reconstructed picture into a filtered reconstructed picture. This allows for particularly accurate and efficient decoding of images.
[0041] According to a sixth aspect, the present invention relates to a deblocking method for use in image encoding and / or decoding, the method comprising: determining inter-block edges, the inter-block edges including block edges between a first coding block P and a second coding block Q and sub-block edges between sub-blocks of the first coding block P or the second coding block Q (e.g., the first coding block P or the second coding block Q has a sub-block, or the first coding block P or the second coding block Q has a sub-block tool), wherein the first coding block P has a block size of M×N samples or N×M samples, and the second coding block Q has a block size of L×T samples or T×L samples, for example, N or T is an even integer 2 greater than a threshold (e.g., a value of 8 or 16, etc.); n Steps determining whether a block edge between a first coding block P and a second coding block Q should be filtered by applying a first filter (i.e., a longer tap filter, or an asymmetric filter, or an asymmetric tap filter, or an asymmetric long filter), in other words, determining whether the block edge between the first coding block P and the second coding block Q is enabled for deblocking by applying a first filter (i.e., a longer tap filter, or an asymmetric filter, or an asymmetric tap filter); When it is determined that the block edge between the first coding block P and the second coding block Q should be filtered by applying the first filter, the value of the sample in the vicinity of the block edge between the first coding block P and the second coding block Q is filtered by applying the first filter (i.e., a longer tap filter, or an asymmetric filter, or an asymmetric tap filter, or an asymmetric long filter). The step is such that at most MA sample values of the first coding block adjacent to the block edge are corrected for each line, and at most MB sample values of the second coding block adjacent to the block edge are corrected for each line, or at most MA sample values of the second coding block adjacent to the block edge are corrected for each line, and at most MB sample values of the first coding block adjacent to the block edge are corrected for each line, where MA ≠ MB, and in particular MA < MB, such as MA < MB = 7. For example, MA = 3 and MB = 7, or MA = 4 and MB = 7, or MA = 5 and MB = 7, etc.
[0042] For example, N or T is an even integer 2 greater than 8 n (for example, N or T adopts 16 or 32,...), M or L is an even integer 2 greater than 2 n (for example, M or L adopts 4, 8, 16 or 32 ···), M is different from N, or M is the same as N, or L is different from T, or L is the same as T. In another example, N or T is an even integer 2 greater than 16 n (for example, N or T adopts 32 or 64,...), M or L is an even integer 2 greater than 2 n (for example, M or L adopts 4, 8, 16 or 32 ···), M is different from N, or M is the same as N, or L is different from T, or L is the same as T, and M × N (where N > 16) is applied to the horizontal edge, and N × M (where N > 16) is applied to the vertical edge.
[0043] For example, the first filter (i.e., a longer tap filter, an asymmetric filter, an asymmetric tap filter) uses DB samples for filter determination on one side of the block edge and DA samples for filter determination on the other side of the block edge, where MB samples are modified on one side of the block edge (CU edge or TU edge), MA samples are modified on the other side of the block edge (CU edge or TU edge), MA ≠ MB, especially MA < MB, for example MA = 3 and MB = 7, or MA = 4 and MB = 7, or MA = 5 and MB = 7. The first filter may be an asymmetric filter that modifies a different number of samples on either side of the block edge (CU edge or TU edge).
[0044] This allows for particularly accurate and efficient deblocking. In particular, this allows for treating the two sides of the block edge differently, so the method can avoid the filtering overlap between the block edge and the sub-block edge, and thus can ensure that deblocking can be performed in parallel. Therefore, the processing time of the deblocking filtering is significantly reduced.[[ID=B]]
[0045] In a possible implementation of the method according to such a sixth aspect, the sub-block edge between sub-blocks is within the first coding block, and the sub-block edge between sub-blocks is within the second coding block (i.e., the first coding block P and the second coding block Q have sub-blocks, or the first coding block P and the second coding block Q have sub-block tools),
[0046] The method further includes determining whether the block edge between the first coding block and the second coding block should be filtered by applying a second filter;
[0047] and if it is determined that the block edge between the first coding block and the second coding block should be filtered by applying a second filter, applying the second filter to values of samples near the block edge, wherein MA' sample values of the first coding block adjacent to the block edge are modified and MB' sample values of the second coding block adjacent to the block edge are modified, where MA'=MB', for example MA'=MB'=3 or MA'=MB'=5.
[0048] In such a possible implementation form of the method according to the sixth aspect or any of the above implementations of the sixth aspect, if a sub-block edge between sub-blocks does not exist within the second coding block (e.g., the first coding block P has sub-blocks while the second coding block Q does not have sub-blocks), then at most MA sample values of the first coding block adjacent to the block edge per line are modified, and at most MB sample values of the second coding block adjacent to the block edge per line are modified, where MA=3 and MB=7, or MA=4 and MB=7, or MA=5 and MB=7; or If there is no sub-block edge between sub-blocks within the first coding block (e.g., the second coding block Q has sub-blocks while the first coding block P does not), then at most MA sample values of the second coding block adjacent to the block edge per line are modified, and at most MB sample values of the first coding block adjacent to the block edge per line are modified, where MA=3 and MB=7, or MA=4 and MB=7, or MA=5 and MB=7.
[0049] In such a possible implementation form of the method according to the sixth aspect or any of the above implementations of the sixth aspect, whether a block edge between the first coding block and the second coding block should be filtered by applying the first filter may be determined by: - at most D A sample values of the first coding block adjacent to the block edge as the first filter decision, and - at most DB sample values of the second coding block adjacent to the block edge as the second filter decision value; is determined based on the
[0050] In such a possible implementation form of the method according to the sixth aspect or any of the above implementations of the sixth aspect, if a sub-block edge between sub-blocks is inside the second coding block Q (e.g., the second coding block Q has sub-blocks), then the first formula:
number
[0051] In such a possible implementation form of the method according to the sixth aspect or any of the above implementations of the sixth aspect, if a sub-block edge between sub-blocks is inside the first coding block P (e.g., the first coding block P has sub-blocks), then the second formula:
number
[0052] In such a possible implementation form of the method according to the sixth aspect or any of the above implementations of the sixth aspect, the threshold parameter β is determined based on a quantization parameter QP associated with a quantization step size of the plurality of samples, or the threshold parameter β is determined based on the quantization parameter QP using a look-up table.
[0053] In such a possible implementation form of the method according to the sixth aspect or any of the above implementations of the sixth aspect, if a sub-block edge between sub-blocks does not exist inside the first coding block P but exists inside the second coding block Q (such that the first coding block P has no sub-blocks and the second coding block Q has sub-blocks), the filtered sample value q0′ of the first sample of the current row or column of samples to the right or below the vertical or horizontal edge between the first coding block P and the second coding block Q is calculated by the following formula:
number
[0054] In such a possible implementation form of the method according to the sixth aspect or any of the above implementations of the sixth aspect, if a sub-block edge between sub-blocks does not exist inside the first coding block P but exists inside the second coding block Q (such that the first coding block P has no sub-blocks and the second coding block Q has sub-blocks), then the filtered sample value q1′ of the second sample of the current row or column of samples to the right or below of the vertical or horizontal edge between the first coding block P and the second coding block Q is calculated by the following formula:
number
[0055] In such a possible implementation form of the method according to the sixth aspect or any of the above implementations of the sixth aspect, if a sub-block edge between sub-blocks does not lie within the first coding block P but lies within the second coding block Q (such that the first coding block P does not have a sub-block and the second coding block Q has a sub-block), the filtered sample value q2′ of the third sample of the current row or column of samples to the right or below the vertical or horizontal edge between the first coding block P and the second coding block Q is calculated by the following formula:
number
[0056] In such a possible implementation form of the method according to the sixth aspect or any of the above implementations of the sixth aspect, if a sub-block edge between sub-blocks does not exist inside the first coding block P but exists inside the second coding block Q (such that the first coding block P does not have a sub-block and the second coding block Q has a sub-block), the filtered sample value p of the corresponding sample of the current row or column of samples is set to the left or top of the vertical or horizontal edge between the first coding block P and the second coding block Q. i ' is the following formula:
number
[0057] In such a possible implementation form of the method according to the sixth aspect or any of the above implementations of the sixth aspect, N and T are even integers greater than 16, 2 n Then, MA=3 and MB=7, or MA=4 and MB=7, or MA=5 and MB=7.
[0058] According to a seventh aspect, the present invention relates to a deblocking method for deblocking a block edge between a first coding block P and a second coding block Q of an image for image coding and / or image decoding, the first coding block P having a block size of M*N or N*M, the second coding block Q having a block size of L*T or T*L, for example, N or T being an even integer 2 greater than 8 n and in particular N or T being an even integer 2 greater than 16 n and there being a sub-block edge between sub-blocks of the first coding block or the second coding block (i.e., the first coding block or the second coding block having sub-blocks), the method comprising when there is a sub-block edge between sub-blocks of the first coding block (i.e., the first coding block having sub-blocks or the first coding block using sub-block tools, where the first coding block is the current block), - the step of modifying at most MA sample values of the first coding block adjacent to the block edge as the first filter output sample values, and - the step of modifying at most MB sample values of the second coding block adjacent to the block edge as the second filter output sample values where MA≠MB, in particular MA<MB such that MA<MB = 7, for example MA = 3 and MB = 7, or MA = 4 and MB = 7, or MA = 5 and MB = 7, etc., or when there is a sub-block edge between sub-blocks of the second coding block (i.e., the second coding block having sub-blocks or the second coding block using sub-block tools, where the second coding block is the current block), - the step of modifying at most MA sample values of the second coding block adjacent to the block edge as the first filter output sample values, and - As the second filter output sample value, a step (1404) of modifying at most MB sample values of the first coding block (902, 1302) adjacent to the block edge is included, where MA ≠ MB, particularly MA < MB, such as MA < MB = 7, for example MA = 3 and MB = 7, or MA = 4 and MB = 7, or MA = 5 and MB = 7, etc.
[0059] This allows particularly accurate and efficient deblocking. In particular, this allows treating the two sides of the block edge differently, so that this method can avoid the filtering overlap between the block edge and the sub - block edge, and thus can ensure that deblocking can be executed in parallel. Therefore, the processing time of the deblocking filtering is significantly shortened.
[0060] According to an eighth aspect, the present invention relates to a deblocking method for use in image coding and / or image decoding, and the method is as follows: A step of determining an edge between blocks, where the edge between blocks includes a block edge between the first coding block P and the second coding block Q, and a sub - block edge between sub - blocks of the first coding block P or the second coding block Q, the first coding block P having a block size of M × N or N × M, and the second coding block Q having a block size of L × T or T × L;
[0061] A step of determining whether the block edge between the first coding block P and the second coding block Q should be filtered by applying a first filter (i.e., a longer tap filter, an asymmetric filter, or an asymmetric tap filter, or an asymmetric longer filter); When it is determined that the block edge between the first coding block P and the second coding block Q should not be filtered by applying the first filter, a step of applying a third filter to the values of the samples in the vicinity of the block edge between the first coding block P and the second coding block Q, where at most MA sample values of the first coding block adjacent to the block edge are corrected for each line, at most MB sample values of the second coding block adjacent to the block edge are corrected for each line, MA = MB < 7, i.e., MA = MB, for example, MA = MB = 4, and the step is included.
[0062] In one example, N or T is an even integer 2 greater than 8 n and in particular, N or T is an even integer 2 greater than 16 n and M or L is an even integer 2 greater than 2 n and M is different from N, or M is the same as N, or L is different from T, or L is the same as T.
[0063] In one example, the first filter (i.e., a longer tap filter, an asymmetric filter, an asymmetric tap filter, or an asymmetric long filter) is a filter that uses DB samples for filter determination on one side of the block edge and DA samples for filter determination on the other side of the block edge, where MB samples are corrected on one side of the block edge (CU edge or TU edge), MA samples are corrected on the other side of the block edge (CU edge or TU edge), MA ≠ MB, and in particular, MA < MB = 7, i.e., MA < MB, for example, MA = 3 and MB = 7, or MA = 4 and MB = 7, or MA = 5 and MB = 7.
[0064] In one example, the third filter may be an HEVC strong filter capable of modifying up to four samples on either side of a block edge (CU edge or TU edge). In other words, the third filter may be an HEVC strong filter in which up to four samples are modified on one side of the block edge (CU edge or TU edge) while up to four samples are modified on the other side of the block edge (CU edge or TU edge).
[0065] This allows for particularly accurate and efficient deblocking.
[0066] According to a ninth aspect, the present invention relates to a deblocking method for use in image encoding and / or image decoding, said method comprising: determining inter-block edges, the inter-block edges including block edges between a first coding block P and a second coding block Q and sub-block edges between sub-blocks of the first coding block P or the second coding block Q, wherein the first coding block P has a block size that is M×N or N×M, and the second coding block Q has a block size that is L×T or T×L; determining that sub-block edges between sub-blocks of the first coding block P or the second coding block Q should not be filtered (e.g., determining that sub-block edges between sub-blocks of the first coding block P or the second coding block Q are disabled with respect to deblocking); applying a fourth filter (a conventional longer tap filter) to the values of samples near the block edge between the first coding block P and the second coding block Q, where at most MA sample values of the first coding block adjacent to the block edge are modified and at most MB sample values of the second coding block adjacent to the block edge are modified, where MA=MB, such as MA=MB=7.
[0067] In one example, N or T is an even integer greater than 8. n In particular, N or T is an even integer greater than 16. n and M or L is an even integer greater than 2. n and M is different from N, or M is the same as N, or L is different from T, or is the same as T.
[0068] In one example, the fourth filter may be a conventional longer tap filter capable of modifying at most seven samples on either side of a block edge (e.g., a CU edge or CU boundary).
[0069] This allows for particularly accurate and efficient deblocking.
[0070] According to a tenth aspect, the present invention relates to a coding method for coding an image, including a deblocking method as described above or below according to any aspect or any implementation of any such aspect, which allows a particularly accurate and efficient coding of the image.
[0071] According to an eleventh aspect, the present invention relates to a decoding method for decoding an image, comprising a deblocking method as described above or below according to any aspect or any implementation of any such aspect, which allows a particularly accurate and efficient encoding of the image.
[0072] According to a twelfth aspect of the present invention, there is provided a deblocking filter apparatus, the deblocking filter apparatus being intended for use in an image encoder and / or an image decoder, the deblocking filter apparatus comprising: an edge positioning unit configured to determine edges between blocks, the edges between blocks including block edges (e.g., CU edges) between a first coding block P and a second coding block Q, and sub-block edges (e.g., sub-pu edges) between sub-blocks within the first coding block P and / or the second coding block Q, wherein the first coding block P has a block size of M×N or N×M, and the second coding block Q has a block size of L×T or T×L, where N or T is an even integer greater than a threshold (e.g., 8 or 16, etc.); n an edge positioning unit, a deblocking decision unit configured to determine that a first set of block edges between the first coding block P and the second coding block Q and sub-block edges between the sub-blocks within the first coding block P and / or the second coding block Q should be filtered, and that a second set of sub-block edges between the sub-blocks within the first coding block P and / or the second coding block Q should not be filtered; a deblocking filtering unit configured to perform deblocking filtering on sample values near a block edge between the first coding block P and the second coding block Q, and to perform deblocking filtering on sample values near each of a first set of sub-block edges between sub-blocks within the first coding block P and / or the second coding block Q.
[0073] For example, the deblocking decision unit may be configured to determine that the "first" sub-block edge between the sub-blocks of the first coding block P or the second coding block Q (interior) should not be filtered, in other words, to determine that the "first" sub-block edge between the sub-blocks of the first coding block P or the second coding block Q (interior) is disabled with respect to deblocking. For example, the deblocking decision unit may be configured to determine that the “last” sub-block edge between sub-blocks of the first coding block P or the second coding block Q (interior) should not be filtered, in other words, to determine that the “last” sub-block edge between sub-blocks of the first coding block P or the second coding block Q (interior) is disabled with respect to deblocking.
[0074] For example, the deblocking determination unit may be configured to determine all sub-pu edges that overlap the 16x16 grid for the first coding block P and / or the second coding block Q and apply deblocking only to those interior edges. Other interior sub-pu edges are not deblocked. Also, a longer tap filter may be used to deblock interior sub-pu edges that overlap the 16x16 grid, while a longer tap filter may be applied to CU edges.
[0075] In such a possible implementation of the device according to the twelfth aspect, the first set of sub-block edges between sub-blocks within the first coding block and / or the second coding block includes (consists of) a plurality of sub-block edges excluding a first sub-block edge and a last sub-block edge between sub-blocks within the first coding block P and / or the second coding block Q, wherein the first sub-block edge is closest to one of the first coding block P and the second coding block Q and the last sub-block edge is closest to the other of the first coding block P and the second coding block Q; The second set of sub-block edges between sub-blocks within the first coding block and / or the second coding block consists of a first sub-block edge and a last sub-block edge between sub-blocks within the first coding block P and / or the second coding block Q, where the first sub-block edge is closest to one of the first coding block P and the second coding block Q, and the last sub-block edge is closest to the other of the first coding block P and the second coding block Q.
[0076] In such a possible implementation form of the apparatus according to aspect 12, the deblocking filtering unit is configured to apply a fifth filter to values of samples in the vicinity of each first set of sub-block edges within the first coding block P and / or the second coding block Q, wherein at most NA sample values on one side of each first set of sub-block edges are modified within the first coding block P and / or the second coding block Q and at most NB sample values on the other side of each first set of sub-block edges are modified, where NA, NB=4.
[0077] In such a possible implementation form of the device according to the twelfth aspect, when it is determined that a fifth filter, which is HEVC deblocking filtering, should be applied if no sub-block edge between sub-blocks exists inside the first coding block P and multiple sub-block edges between sub-blocks exist inside the second coding block Q, the deblocking filtering unit may be configured to:
number
[0078] In such a possible implementation of the device according to the twelfth aspect, the first set of sub-block edges between sub-blocks within the first coding block and / or the second coding block comprises (consists of) one or more sub-block edges that overlap a 16×16 grid between sub-blocks within the first coding block P and / or the second coding block Q; The second set of sub-block edges between sub-blocks within the first or second coding block includes (consists of) one or more sub-block edges excluding sub-block edges overlapping the 16x16 grid between sub-blocks within the first coding block P and / or the second coding block Q.
[0079] In one possible implementation of the device according to the twelfth aspect, the deblocking filtering unit is configured to apply a sixth filter to values of samples near each of a first set of sub-block edges within the first coding block P and / or the second coding block Q, such that at most NA' sample values on one side of each of the first set of sub-block edges are modified within the first coding block P or the second coding block Q, and at most NB' sample values on the other side of each of the first set of sub-block edges are modified, such that NA' = NB' = 7. It can be appreciated that NA' and NB' may be determined based on the block size, i.e., NA' and NB' depend on the block size of the respective block. In this implementation, for large blocks, i.e., block size ≥ 32, the maximum number of modified samples may be 7 (corresponding to a long filter).
[0080] In such a possible implementation form of the device according to the twelfth aspect, when there is no sub-block edge between sub-blocks within the first coding block P and there are multiple sub-block edges between sub-blocks within the second coding block Q, the deblocking filtering unit is configured to:
number
[0081] In such a possible implementation form of the device according to the twelfth aspect, when there are multiple sub-block edges between sub-blocks within the first coding block P and there are multiple sub-block edges between sub-blocks within the second coding block Q, the deblocking filtering unit may be configured to:
number
[0082] In such a possible implementation of the device according to the twelfth aspect, the deblocking decision unit is further configured to decide whether a block edge between the first coding block P and the second coding block Q should be filtered by applying the first filter; and The deblocking filtering unit is further configured to apply a first filter to values of samples near a block edge between the first coding block P and the second coding block Q when it is determined that the block edge between the first coding block P and the second coding block Q should be filtered by applying the first filter, wherein at most MA sample values of the first coding block adjacent to the block edge per line are modified, and at most MB sample values of the second coding block adjacent to the block edge per line are modified, or at most MA sample values of the second coding block adjacent to the block edge per line are modified and at most MB sample values of the first coding block adjacent to the block edge per line are modified, where MA=3 and MB=7.
[0083] In such a possible implementation of the device according to the twelfth aspect, when a plurality of sub-block edges between sub-blocks are present inside the first coding block and a plurality of sub-block edges between sub-blocks are present inside the second coding block,
[0084] The deblocking determination unit is further configured to determine that a block edge between the first coding block and the second coding block should be filtered by applying a second filter; and The deblocking filtering unit is further configured to, when it is determined that the block edge between the first coding block and the second coding block should be filtered by applying a second filter, apply a second filter to values of samples near the block edge, such that MA' sample values of the first coding block adjacent to the block edge are modified and MB' sample values of the second coding block adjacent to the block edge are modified, where MA'=3 and MB'=3.
[0085] In such a possible implementation of the device according to the twelfth aspect, if a sub-block edge between sub-blocks does not lie inside the second coding block, at most MA sample values of the first coding block adjacent to the block edge per line are modified, and at most MB sample values of the second coding block adjacent to the block edge per line are modified; or If a sub-block edge between sub-blocks does not lie inside the first coding block, at most MA sample values of the second coding block adjacent to the block edge per line are modified, and at most MB sample values of the first coding block adjacent to the block edge per line are modified, where MA=3 and MB=7.
[0086] In such a possible implementation of the apparatus according to the twelfth aspect, the deblocking decision unit determines whether a block edge between the first coding block and the second coding block should be filtered by applying a first filter by: - at most DA sample values of the first coding block adjacent to the block edge as the first filter decision value, and - At most DB sample values of the second coding block adjacent to the block edge as the second filter decision value and further configured to determine based on:
[0087] In such a possible implementation form of the device according to the twelfth aspect, the deblocking decision unit determines, when multiple sub-block edges between sub-blocks exist inside the second coding block Q, the first equation:
number
[0088] In such a possible implementation form of the device according to the twelfth aspect, the deblocking decision unit determines, when multiple sub-block edges between sub-blocks exist inside the first coding block P, the following second equation:
number
[0089] In such a possible implementation of the apparatus according to the twelfth aspect, the threshold parameter β is determined based on a quantization parameter QP associated with a quantization step size of the plurality of samples; or The threshold parameter β is determined based on the quantization parameter QP using a look-up table.
[0090] In such a possible implementation form of the device according to the twelfth aspect, the deblocking filtering unit is configured to, when there is no sub-block edge between sub-blocks within the first coding block P and there is a sub-block edge between sub-blocks within the second coding block Q, calculate the following equation:
number
[0091] In such a possible implementation form of the device according to the twelfth aspect, the deblocking filtering unit is configured to, when there is no sub-block edge between sub-blocks within the first coding block P and there is a sub-block edge between sub-blocks within the second coding block Q, calculate the following equation:
number
[0092] In such a possible implementation form of the device according to the twelfth aspect, the deblocking filtering unit is configured to, when there is no sub-block edge between sub-blocks within the first coding block P and there is a sub-block edge between sub-blocks within the second coding block Q, calculate the following equation:
number
[0093] In such a possible implementation form of the device according to the twelfth aspect, the deblocking filtering unit is configured to, when there is no sub-block edge between sub-blocks within the first coding block P and there is a sub-block edge between sub-blocks within the second coding block Q, calculate the following equation:
number
[0094] In such a possible implementation form of the device according to aspect 12, the deblocking determination unit is further configured to determine whether a block edge between the first coding block P and the second coding block Q should be filtered by applying the first filter, and the deblocking filtering unit is further configured to apply a third filter to values of samples near the block edge between the first coding block P and the second coding block Q if it is determined that the block edge between the first coding block P and the second coding block Q should not be filtered by applying the first filter, so that at most MA sample values of the first coding block adjacent to the block edge per line are modified and at most MB sample values of the second coding block adjacent to the block edge per line are modified, where MA=MB=4.
[0095] According to a thirteenth aspect, the present invention relates to a deblocking method for use in image encoding and / or image decoding, said method comprising: determining inter-block edges, the inter-block edges including block edges between a first coding block P and a second coding block Q and sub-block edges between sub-blocks within the first coding block P and / or the second coding block Q, wherein the first coding block P has a block size of M×N or N×M, and the second coding block Q has a block size of L×T or T×L, where N or T is an even integer greater than a threshold (e.g., 8 or 16), n Steps determining that a first set of block edges between a first coding block P and a second coding block Q and sub-block edges between sub-blocks within the first coding block P and / or the second coding block Q should be filtered, and that a second set of sub-block edges between sub-blocks within the first coding block P and / or the second coding block Q should not be filtered; performing deblocking filtering on sample values near block edges between the first coding block P and the second coding block Q, and performing deblocking filtering on sample values near each of a first set of sub-block edges between sub-blocks within the first coding block P and / or the second coding block Q.
[0096] In such a possible implementation of the method according to aspect 13, the first set of sub-block edges between sub-blocks within the first coding block and / or the second coding block comprises (consists of) a plurality of sub-block edges excluding a first sub-block edge and a last sub-block edge between sub-blocks within the first coding block P and / or the second coding block Q, wherein the first sub-block edge is closest to one of the first coding block P and the second coding block Q and the last sub-block edge is closest to the other of the first coding block P and the second coding block Q; The second set of sub-block edges between sub-blocks within the first coding block and / or the second coding block consists of a first sub-block edge and a last sub-block edge between sub-blocks within the first coding block P and / or the second coding block Q, where the first sub-block edge is closest to one of the first coding block P and the second coding block Q, and the last sub-block edge is closest to the other of the first coding block P and the second coding block Q.
[0097] In such a possible implementation of the method according to aspect 13, the step of performing deblocking filtering on values of neighbouring samples of each of a first set of sub-block edges between sub-blocks of the first coding block P and / or the second coding block Q comprises: applying a fifth filter to values of samples near each of the first set of sub-block edges within the first coding block P and / or the second coding block Q, wherein at most NA sample values on one side of each of the first set of sub-block edges are modified within the first coding block P and / or the second coding block Q and at most NB sample values on the other side of each of the first set of sub-block edges are modified, where NA=NB=4.
[0098] In such a possible implementation form of the method according to aspect 13, when no sub-block edges between sub-blocks exist within the first coding block P and multiple sub-block edges between sub-blocks exist within the second coding block Q, the step of performing deblocking filtering on values of neighboring samples of each of a first set of sub-block edges between sub-blocks within the first coding block P and / or the second coding block Q comprises: When it is decided that the fifth filter should be applied, which is the HEVC deblocking filtering, the following equation:
number
[0099] In such a possible implementation of the method according to aspect 13, the first set of sub-block edges between sub-blocks within the first coding block and / or the second coding block comprises (consists of) one or more sub-block edges that overlap a 16x16 grid between sub-blocks within the first coding block P and / or the second coding block Q; The second set of sub-block edges between sub-blocks within the first or second coding block includes (consists of) one or more sub-block edges excluding sub-block edges overlapping the 16x16 grid between sub-blocks within the first coding block P and / or the second coding block Q.
[0100] In such a possible implementation of the method according to aspect 13, the step of performing deblocking filtering on values of neighbouring samples of each of a first set of sub-block edges between sub-blocks of the first coding block P and / or the second coding block Q comprises: applying a sixth filter to values of samples in the vicinity of each of a first set of sub-block edges within the first coding block P and / or the second coding block Q, wherein at most N A' sample values on one side of each of the first set of sub-block edges are modified within the first coding block P or the second coding block Q and at most N B' sample values on the other side of each of the first set of sub-block edges are modified, where N A' = N B' = 7.
[0101] In such a possible implementation form of the method according to the thirteenth aspect, when there is no sub-block edge between sub-blocks within the first coding block P and there are multiple sub-block edges between sub-blocks within the second coding block Q, the step of performing deblocking filtering on values of neighboring samples of each of a first set of sub-block edges between sub-blocks within the first coding block P and / or the second coding block Q is performed by the following formula:
number
[0102] In such a possible implementation form of the method according to aspect 13, when there are multiple sub-block edges between sub-blocks within the first coding block P and there are multiple sub-block edges between sub-blocks within the second coding block Q, the step of performing deblocking filtering on values of neighboring samples of each of a first set of sub-block edges between sub-blocks within the first coding block P and / or the second coding block Q may be performed by:
number
[0103] In such a possible implementation of the method according to the thirteenth aspect, the method further comprises: determining whether a block edge between a first coding block P and a second coding block Q should be filtered by applying a first filter; and applying the first filter to values of samples near the block edge between the first coding block P and the second coding block Q when it is determined that the block edge between the first coding block P and the second coding block Q should be filtered by applying the first filter, wherein at most MA sample values of the first coding block adjacent to the block edge per line are modified, at most MB sample values of the second coding block adjacent to the block edge per line are modified, or at most MA sample values of the second coding block adjacent to the block edge per line are modified and at most MB sample values of the first coding block adjacent to the block edge per line are modified, where MA=3 and MB=7.
[0104] In such a possible implementation of the method according to the thirteenth aspect, when a plurality of sub-block edges between sub-blocks are present inside the first coding block and a plurality of sub-block edges between sub-blocks are present inside the second coding block, the method may further comprise: determining that a block edge between the first coding block and the second coding block should be filtered by applying a second filter; and if it is determined that the block edge between the first coding block and the second coding block should be filtered by applying a second filter, applying the second filter to values of samples near the block edge, wherein MA' sample values of the first coding block adjacent to the block edge are modified and MB' sample values of the second coding block adjacent to the block edge are modified, where MA'=3 and MB'=3.
[0105] In such a possible implementation of the method according to aspect 13, if a sub-block edge between sub-blocks does not lie inside the second coding block, then at most MA sample values of the first coding block adjacent to the block edge per line are modified, and at most MB sample values of the second coding block adjacent to the block edge per line are modified, or If a sub-block edge between sub-blocks does not lie inside the first coding block, at most MA sample values of the second coding block adjacent to the block edge per line are modified, and at most MB sample values of the first coding block adjacent to the block edge per line are modified, where MA=3 and MB=7.
[0106] In such a possible implementation of the method according to the thirteenth aspect, the method further comprises: whether the block edge between the first coding block and the second coding block should be filtered by applying the first filter; - at most DA sample values of the first coding block adjacent to the block edge, DA=4, as the first filter decision value, and - As the second filter decision value, at most DB sample values of the second coding block adjacent to the block edge, DB=4 determining based on
[0107] In such a possible implementation of the method according to the thirteenth aspect, the method further comprises, if there are multiple sub-block edges between sub-blocks within the second coding block Q, determining whether the first equation:
number
[0108] In such a possible implementation of the method according to the thirteenth aspect, the method further comprises, if there are multiple sub-block edges between sub-blocks within the first coding block P, determining whether the first coding block P is a sub-block edge or not by using the second formula:
number
[0109] In such a possible implementation form of the method according to the thirteenth aspect, the threshold parameter β is determined based on a quantization parameter QP related to a quantization step size of the plurality of samples, or The threshold parameter β is determined based on the quantization parameter QP using a look-up table.
[0110] In such a possible implementation form of the method according to the thirteenth aspect, when there is no sub-block edge between sub-blocks within the first coding block P and there is a sub-block edge between sub-blocks within the second coding block Q, the step of performing deblocking filtering on values of samples near the block edge between the first coding block P and the second coding block Q is performed by the following formula:
number
[0111] In such a possible implementation form of the method according to the thirteenth aspect, when there is no sub-block edge between sub-blocks within the first coding block P and there is a sub-block edge between sub-blocks within the second coding block Q, the step of performing deblocking filtering on values of samples near the block edge between the first coding block P and the second coding block Q is performed by the following formula:
number
[0112] In such a possible implementation form of the method according to the thirteenth aspect, when there is no sub-block edge between sub-blocks within the first coding block P and there is a sub-block edge between sub-blocks within the second coding block Q, the step of performing deblocking filtering on values of samples near the block edge between the first coding block P and the second coding block Q is performed by the following formula:
number
[0113] In such a possible implementation form of the method according to the thirteenth aspect, when there is no sub-block edge between sub-blocks within the first coding block P and there is a sub-block edge between sub-blocks within the second coding block Q, the step of performing deblocking filtering on values of samples near the block edge between the first coding block P and the second coding block Q is performed by the following formula:
number
[0114] In such a possible implementation of the method according to aspect 13, the method further comprises the steps of determining whether a block edge between the first coding block P and the second coding block Q should be filtered by applying a first filter; and if it is determined that the block edge between the first coding block P and the second coding block Q should not be filtered by applying the first filter, applying a third filter to values of samples near the block edge between the first coding block P and the second coding block Q, wherein at most MA sample values of the first coding block adjacent to the block edge per line are modified and at most MB sample values of the second coding block adjacent to the block edge per line are modified, where MA=MB=4.
[0115] The method according to the sixth or seventh aspect of the invention can be performed by an apparatus according to the first aspect of the invention. Further features and implementation forms of the method according to the sixth or seventh aspect of the invention result directly from the functionality of the apparatus according to the first aspect of the invention and its various implementation forms.
[0116] The method according to the eighth aspect of the invention can be performed by an apparatus according to the second aspect of the invention. Further features and implementation forms of the method according to the eighth aspect of the invention result directly from the functionality of the apparatus according to the second aspect of the invention and its various implementation forms. The method according to the thirteenth aspect of the invention can be performed by an apparatus according to the twelfth aspect of the invention. Further features and implementation forms of the method according to the eighth aspect of the invention result directly from the functionality of the apparatus according to the second aspect of the invention and its various implementation forms.
[0117] According to another aspect, the present invention relates to an apparatus for decoding a video stream, comprising a processor and a memory, the memory storing instructions for causing the processor to perform a deblocking method according to any aspect as described above or any implementation of any of the aspects described above.
[0118] According to another aspect, the present invention relates to an apparatus for encoding a video stream, comprising a processor and a memory, the memory storing instructions for causing the processor to perform a deblocking method according to any aspect as described above or any implementation of any of the aspects described above.
[0119] According to another aspect, a computer-readable storage medium is proposed having stored thereon instructions that, when executed, cause one or more processors configured to code video data to perform a deblocking method according to any aspect as described above or any of the implementations described above for any of the aspects described above.
[0120] According to another aspect, there is provided a computer program product having program code for performing a deblocking method according to any aspect as described above or any implementation of any aspect described above, when the computer program runs on a computer.
[0121] The details of one or more embodiments are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will become apparent from the description, drawings, and claims. [Brief explanation of the drawings]
[0122] The following embodiments of the present invention will now be described in more detail with reference to the accompanying figures and drawings.
[0123] [Figure 1] FIG. 1 is a block diagram illustrating an example of a video encoder configured to implement embodiments of the present invention.
[0124] [Figure 2] FIG. 2 is a block diagram illustrating an exemplary structure of a video decoder configured to implement embodiments of the present invention.
[0125] [Figure 3] 1 is a block diagram illustrating an example of a video coding system configured to implement embodiments of the present invention.
[0126] [Figure 4] Two exemplary coding blocks are shown where the coding block Q uses sub-pu tools (generally sub-block tools).
[0127] [Figure 5] 10 shows two exemplary coding blocks and the individual sample values that are used and modified during filtering according to the exemplary method shown in FIG.
[0128] [Figure 6] 1 illustrates a first embodiment of a deblocking filter device according to an embodiment of the present invention.
[0129] [Figure 7] 1 shows a flowchart illustrating a method for determining whether a longer tap filter shall be used.
[0130] [Figure 8] 1 shows a flowchart illustrating a method for determining whether an HEVC strong filter condition is met.
[0131] [Figure 9] 10 illustrates two exemplary coding blocks and sample values used and modified during filtering according to another embodiment of the present invention.
[0132] [Figure 10] 1 shows a flow diagram illustrating an exemplary process for increasing the efficiency of deblocking filtering.
[0133] [Figure 11A] 1 shows a flow diagram illustrating an exemplary process for increasing the efficiency of deblocking filtering.
[0134] [Figure 11B] 1 shows a flow diagram illustrating an exemplary process for increasing the efficiency of deblocking filtering.
[0135] [Figure 12] 1 shows a flow diagram illustrating an exemplary process for increasing the efficiency of deblocking filtering.
[0136] [Figure 13] 13 shows a simplified block diagram of an apparatus 1300 that may be used as one or both of the source device 310 and the destination device 320 from FIG. 3 according to an example embodiment.
[0137] [Figure 14] A schematic diagram of a device for video coding is shown.
[0138] [Figure 15] We show how deblocking can be applied to all interior sub-pu edges on a 16x16 grid.
[0139] [Figure 16] We show how HEVC deblocking can be applied to all interior sub-pu edges except the first and last sub-pu edges.
[0140] [Figure 17] Shown are two example sub-blocks within a coding block where the coding block uses the sub-pu tool;
[0141] [Figure 18] Shown are exemplary sub-blocks within a coding block. The coding block uses sub-pu tools, and each of these sub-pus uses a separate motion vector.
[0142] [Figure 19] An example of a picture sample on an 8x8 grid, with horizontal and vertical block boundaries, is shown below. In the following, the same reference signs refer to the same or at least functionally equivalent features. In some cases, different reference signs referring to the same entities are used in different figures. DETAILED DESCRIPTION OF THE INVENTION
[0143] In the following description, reference is made to the accompanying drawings which form a part of this disclosure and which show, by way of illustration, specific aspects of embodiments of the invention or in which embodiments of the invention may be used. It is understood that embodiments of the invention may be used in other ways and may include structural or logical changes not shown in the drawings. The following detailed description, therefore, is not to be taken in a limiting sense, and the scope of the present invention is defined by the appended claims.
[0144] For example, it is understood that disclosure related to a described method also applies to a corresponding device or system configured to perform the method, and vice versa. For example, when one or more particular method steps are described, a corresponding device may include one or more units, e.g., functional units (e.g., one unit that performs one or more steps, or multiple units that each perform one or more of the steps), to perform the described one or more method steps, even if such one or more units are not explicitly described or shown in a figure. Conversely, for example, when a particular apparatus is described based on one or more units, e.g., functional units, a corresponding method may include one step (e.g., one step that performs the function of one or more units, or multiple steps that each perform the function of one or more units) to perform the function of one or more units, even if such one or more steps are not explicitly described or shown in a figure. Furthermore, it is understood that features of various exemplary embodiments and / or aspects described herein may be combined with each other, unless otherwise specified.
[0145] Video coding typically refers to the processing of a series of pictures that form a video or video sequence. The terms frame or image, rather than picture, may be used synonymously in the field of video coding. Video coding includes two parts: video encoding and video decoding. Video encoding is performed at the source side and typically involves processing the original video picture (e.g., by compression) to reduce the amount of data required to represent the video picture (for more efficient storage and / or transmission). Video decoding is performed at the destination side and typically involves the reverse process compared to the encoder to reconstruct the video picture. Embodiments relating to the "coding" of a video picture (or picture generally, as described below) shall be understood to relate to both the "encoding" and "decoding" of a video picture. The combination of the encoder and decoder is also referred to as a CODEC (encoding and decoding).
[0146] In the case of lossless video coding, the original video picture can be reconstructed, i.e., the reconstructed video image has the same quality as the original video picture (assuming there are no transmission or other data losses during storage or transmission). In the case of non-lossless video coding, further compression, e.g., by quantization, is performed to reduce the amount of data representing the video picture that cannot be fully reconstructed at the decoder, i.e., the quality of the reconstructed video picture is lower or degraded than the quality of the original video picture.
[0147] Several video coding standards since H.261 belong to the group of "non-lossless hybrid video codecs" (i.e., they combine spatial and temporal prediction in the sample domain with 2D transform coding to apply quantization in the transform domain). Each picture of a video sequence is typically partitioned into a set of non-overlapping blocks, and coding is typically performed at the block level. In other words, at the encoder, video is typically processed, or encoded, at the block (video block) level, for example, by generating a predictive block using spatial (intra-picture) and temporal (inter-picture) prediction, subtracting the predictive block from a current block (the block currently being processed / to be processed) to obtain a residual block, transforming the residual block, and quantizing the residual block in the transform domain to reduce the amount of data to be transmitted (compression). At the decoder, on the other hand, the reverse process is applied to the coded or compressed block compared to the encoder in order to reconstruct the current block for representation. Additionally, the encoder replicates the decoder processing loop so that both generate the same predictions (eg, intra and inter predictions) and / or reconstructions for processing, ie, coding, subsequent blocks.
[0148] Since video picture processing (also referred to as moving image processing) and still image processing (this term includes coding) share many concepts and techniques or tools, hereinafter the term "picture" will be used to refer to video pictures (as described above) and / or still images of a video sequence, avoiding unnecessary repetition and distinguishing between video pictures and still images where it is not necessary. When the description refers only to still pictures (or still images), the term "still image" shall be used.
[0149] In the following embodiments of the encoder 100, the decoder 200 and coding system 300 will be described with reference to FIGS. 1 to 3 before describing the embodiments of the invention in more detail with reference to FIGS.
[0150] FIG. 3 is a conceptual or schematic block diagram illustrating an embodiment of a coding system 300, e.g., a picture coding system 300, including a source device 310 configured to provide coded data 330, e.g., coded pictures 330, to a destination device 320, e.g., for decoding the coded data 330.
[0151] The source device 310 includes an encoder 100 or encoding unit 100 and may further optionally include a picture source 312 , a pre-processing unit 314 , eg, a picture pre-processing unit 314 , and a communication interface or unit 318 .
[0152] Picture source 312 may include or be any kind of picture capture device, e.g., for capturing real-world pictures, and / or any kind of picture generation device, e.g., a computer graphics processor for generating computer-animated pictures, or any kind of device that acquires and / or provides real-world pictures, computer-animated pictures (e.g., screen content, virtual reality (VR) pictures), and / or any combination thereof (e.g., augmented reality (AR) pictures). In the following, all these kinds of pictures and any other kinds of pictures will be referred to as "pictures" or "images" unless otherwise specified, although the above explanation of the term "picture" covering "video pictures" and "still pictures" remains valid unless explicitly specified otherwise.
[0153] A (digital) picture is, or can be thought of as, a two-dimensional array or matrix of samples with intensity values. The samples in the array may be referred to as pixels (a short form of picture element) or pels. The number of samples in the horizontal and vertical directions (or axes) of the array or picture defines the size and / or resolution of the picture. For color representation, three color components are typically used, i.e., a picture may be represented by or contain three sample arrays. In an RGB format or color space, a picture contains corresponding red, green, and blue sample arrays. However, in video coding, each pixel is typically represented in a luma / chroma format or color space, e.g., YCbCr, which contains a luma component denoted Y (although L is often used instead) and two chroma components denoted Cb and Cr. The luma (or luma for short) component Y represents the brightness or gray-level intensity (e.g., a grayscale picture), while the two chroma (or chroma for short) components Cb and Cr represent the color or color information components. Thus, a picture in YCbCr format contains a luma sample array of luma sample values (Y) and two chroma sample arrays of chroma values (Cb and Cr). A picture in RGB format can be converted or transformed to YCbCr format, and vice versa; the process is also known as color transformation or conversion. If a picture is monochrome, it may contain only a luma sample array.
[0154] The picture source 312 may be, for example, a camera for capturing a picture, a memory, such as a picture memory, that contains or stores previously captured or generated pictures, and / or any type of interface (internal or external) for acquiring or receiving pictures. The camera may be, for example, a local or integrated camera integrated into the source device, and the memory may be local or integrated memory, such as one integrated into the source device. The interface may be, for example, an external interface for receiving pictures from an external video source, such as a camera, external memory, or an external picture capture device, such as an external computer graphics processor, computer, or server. The interface may be any type of interface, such as a wired or wireless interface, or an optical interface, following any proprietary or standardized interface protocol. The interface for obtaining the picture data 312 may be the same interface as or part of the communication interface 318.
[0155] To distinguish between the pre-processing unit 314 and the processing performed by the pre-processing unit 314, the picture or picture data 313 may also be referred to as a raw picture or raw picture data 313.
[0156] The preprocessing unit 314 is configured to receive (raw) picture data 313 and perform preprocessing on the picture data 313 to obtain a preprocessed picture 315 or preprocessed picture data 315. The preprocessing performed by the preprocessing unit 314 may include, for example, cropping, color format conversion (e.g., from RGB to YCbCr), color correction, or noise removal.
[0157] The encoder 100 is configured to receive pre-processed picture data 315 and provide encoded picture data 171 (described in further detail, eg, with reference to FIG. 1).
[0158] The communication interface 318 of the source device 310 can be configured to receive the coded picture data 171 and transmit it to another device, such as the destination device 320 or any other device, for storage or direct reconstruction, or to process the coded picture data 171, respectively, before storing the coded data 330 and / or transmitting the coded data 330 to another device, such as the destination device 320 or any other device, for decoding or storage.
[0159] The destination device 320 includes a decoder 200 or decoding unit 200 , and may further, i.e. optionally, include a communication interface or unit 322 , a post processor 326 , and a display device 328 .
[0160] The communication interface 322 of the destination device 320 is configured to receive the coded picture data 171 or the coded data 330, e.g. directly from the source device 310 or from any other source, e.g. a memory, e.g. a memory of coded picture data.
[0161] The communication interface 318 and the communication interface 322 may be configured to transmit and receive the encoded picture data 171 or the encoded data 330, respectively, via a direct communication link between the source device 310 and the destination device 320, such as a direct wired or wireless connection, or via any kind of network, such as a wired or wireless network or any combination thereof, or any kind of private and public network or any combination thereof.
[0162] The communications interface 318 may be configured, for example, to package the encoded picture data 171 into an appropriate format, e.g., packets, for transmission over a communications link or network, and may further include data loss protection and data loss recovery.
[0163] The communications interface 322, which forms a counterpart of the communications interface 318, may be configured to unpackage the encoded data 330, for example to obtain the encoded picture data 171, and may further be configured to perform data loss protection and data loss recovery, including, for example, error concealment.
[0164] Both communication interface 318 and communication interface 322 may be configured as unidirectional communication interfaces, as indicated by the arrow of coded picture data 330 in FIG. 3 pointing from source device 310 to destination device 320, or as bidirectional communication interfaces, and may be configured to, for example, send and receive messages, to, for example, set up connections, to confirm and / or retransmit missing or delayed data, including picture data, and to exchange any other information related to the communication link and / or data transmission, e.g., coded picture data transmission.
[0165] The decoder 200 is configured to receive the coded picture data 171 and provide decoded picture data 231 or decoded pictures 231 (described in further detail, e.g., with reference to FIG. 2).
[0166] The post-processing processor 326 of the destination device 320 is configured to post-process the decoded picture data 231, e.g., the decoded picture 231, to obtain post-processed picture data 327, e.g., the post-processed picture 327. The post-processing performed by the post-processing unit 326 may include, for example, color format conversion (e.g., from YCbCr to RGB), color correction, cropping, resampling, or other processing, for example, to prepare the decoded picture data 231 for display by a display device 328.
[0167] The display device 328 of the destination device 320 is configured to receive the post-processed picture data 327 for displaying the picture, e.g., to a user or viewer. The display device 328 may be or include any type of display for presenting the reconstructed picture, e.g., an integrated or external display or monitor. The display may include, e.g., a cathode ray tube (CRT), a liquid crystal display (LCD), a plasma display, an organic light-emitting diode (OLED) display, or any other type of display, e.g., beamer, holographic (3D), etc.
[0168] 3 depicts source device 310 and destination device 320 as separate devices, an embodiment of the devices may include both or both functionality, source device 310 or corresponding functionality, and destination device 320 or corresponding functionality. In such an embodiment, source device 310 or corresponding functionality and destination device 320 or corresponding functionality may be implemented using the same hardware and / or software, or using separate hardware and / or software, or any combination thereof.
[0169] As will be apparent to those skilled in the art based on the description, the presence and (exact) division of various units or functions within source device 310 and / or destination device 320 as shown in FIG. 3 may vary depending on the actual device and application.
[0170] Therefore, the source device 310 and destination device 320 shown in FIG. 3 are merely exemplary embodiments of the present invention, and embodiments of the present invention are not limited to those shown in FIG.
[0171] The source device 310 and destination device 320 may include any of a wide range of devices, including any kind of portable or stationary device, such as a notebook or laptop computer, a mobile phone, a smartphone, a tablet or tablet computer, a camera, a desktop computer, a set-top box, a television, a display device, a digital media player, a video game console, a video streaming device, a broadcast receiving device, etc. (as well as servers and workstations for large-scale professional encoding / decoding, e.g., network entities), and may use any kind of operating system, or none at all.
[0172] 1 is a schematic / conceptual block diagram of an embodiment of an encoder 100, such as a picture encoder 100, including an input 102, a residual calculation unit 104, a transform unit 106, a quantization unit 108, an inverse quantization unit 110, an inverse transform unit 112, a reconstruction unit 114, a buffer 118, a loop filter 120, a decoded picture buffer (DPB) 130, a prediction unit 160 (inter estimation unit 142, inter prediction unit 144, intra estimation unit 152, intra prediction unit 154, mode selection unit), an entropy coding unit 170, and an output 172. The video encoder 100 shown in FIG. 1 may also be referred to as a hybrid video encoder or a video encoder using a hybrid video codec.
[0173] For example, the residual calculation unit 104, the transform unit 106, the quantization unit 108, and the entropy coding unit 170 form a forward signal path of the encoder 100, while the inverse quantization unit 110, the inverse transform unit 112, the reconstruction unit 114, the buffer 118, the loop filter 120, the decoded picture buffer (DPB) 130, the inter prediction unit 144, and the intra prediction unit 154 form a backward signal path of the encoder, which corresponds to the signal path of the decoder (see decoder 200 in FIG. 2).
[0174] The encoder is configured to receive, for example, an input 102, a picture 101, or a picture block 103 of the picture 101, e.g., a picture of a video or a series of pictures forming a video sequence. The picture block 103 is also called a current picture block or a picture block to be coded, and the picture 101 is also called a current picture or a picture to be coded (particularly in video coding, the current picture is distinguished from other pictures, e.g., previously coded and / or decoded pictures of the same video sequence, i.e., a video sequence that also includes the current picture).
[0175] Embodiments of encoder 100 may also include a division unit (not shown in FIG. 1 ), which may also be referred to as a picture division unit, configured to divide, for example, picture 103 into multiple blocks, and a block such as block 103, typically into multiple non-overlapping blocks. The division unit may be configured to use the same block size for all pictures of a video sequence and a corresponding grid defining the block size, or to vary the block size between pictures, subsets, or groups of pictures, and divide each picture into corresponding blocks.
[0176] Similar to picture 101, block 103 is, or can be thought of as, a two-dimensional array or matrix of samples having intensity values (sample values), although again with smaller dimensions than picture 101. In other words, block 103 may include, for example, one sample array (e.g., a luma array in the case of a monochrome picture 101) or three sample arrays (e.g., a luma and two chroma arrays in the case of a color picture 101), or any other number and / or type of arrays depending on the applied color format. The number of samples in the horizontal and vertical directions (or axes) of block 103 define the size of block 103.
[0177] As shown in FIG. 1, the encoder 100 is configured to encode a picture 101 block by block, eg, encoding and prediction is performed block by block 103 .
[0178] The residual calculation unit 104 is configured to calculate the residual block 105 sample-by-sample (pixel-by-pixel) based on the picture block 103 and the prediction block 165 (further details about the prediction block 165 will be described later), for example by subtracting sample values of the prediction block 165 from sample values of the picture block 103, to obtain the residual block 105 in the sample domain.
[0179] The transform unit 106 is configured to apply a transform, such as a spatial frequency transform or a linear spatial transform, such as a discrete cosine transform (DCT) or a discrete sine transform (DST), to the sample values of the residual block 105 to obtain transform coefficients 107 in a transform domain. The transformed coefficients 107 are also called transformed residual coefficients and can represent the residual block 105 in the transform domain.
[0180] The transform unit 106 may be configured to apply an integer approximation of a DCT / DST, such as the core transform specified for HEVC / H.265. Compared to an orthogonal DCT transform, such an integer approximation is typically scaled by a factor. To preserve the norm of the residual blocks processed by the forward and inverse transforms, an additional scaling factor is applied as part of the transform process. The scaling factor is typically selected based on certain constraints, such as scaling factors that are powers of two for shift operations, the bit depth of the transform coefficients, a trade-off between accuracy and implementation cost, etc. A particular scaling factor may be specified for the inverse transform, e.g., by the inverse transform unit 212 in the decoder 200 (and the corresponding inverse transform, e.g., by the inverse transform unit 112 in the encoder 100), and a corresponding scaling factor may be specified for the forward transform, e.g., by the transform unit 106 in the encoder 100.
[0181] The quantization unit 108 is configured to quantize the transformed coefficients 107 to obtain quantized coefficients 109, for example, by applying scalar quantization or vector quantization. The quantized coefficients 109 are also referred to as quantized residual coefficients 109. For example, in the case of scalar quantization, different scaling may be applied to achieve finer or coarser quantization. A smaller quantization step size corresponds to finer quantization, and a larger quantization step size corresponds to coarser quantization. The applicable quantization step size may be indicated by a quantization parameter (QP). The quantization parameter may, for example, be an index into a predetermined set of applicable quantization step sizes. For example, a small quantization parameter may correspond to fine quantization (small quantization step size) and a large quantization parameter may correspond to coarse quantization (large quantization step size), or vice versa. Quantization may involve division by a quantization step size, and the corresponding inverse dequantization, eg, by inverse quantization unit 110, may involve multiplication by the quantization step size.
[0182] An HEVC embodiment may be configured to use a quantization parameter to determine the quantization step size. Generally, the quantization step size may be calculated based on the quantization parameter using a fixed-point approximation of a mathematical formula involving division. Additional scaling factors may be introduced for quantization and dequantization to restore the norm of the residual block, which may be modified due to the scaling used in the fixed-point approximation of the mathematical formula for the quantization step size and the quantization parameter. In one implementation, scaling for the inverse transform and dequantization may be combined. Alternatively, customized quantization tables may be used and signaled from the encoder to the decoder, e.g., in the bitstream. Quantization is a non-lossless operation, with increasing loss occurring as the quantization step size increases.
[0183] An embodiment of encoder 100 (or of quantization unit 108, respectively) may be configured to output a quantization scheme and a quantization step size, e.g., via a corresponding quantization parameter, so that decoder 200 may receive and apply a corresponding inverse quantization. An embodiment of encoder 100 (or quantization unit 108) may be configured to output a quantization scheme and a quantization step size, e.g., directly or entropy coded via entropy coding unit 170 or any other entropy coding unit.
[0184] The inverse quantization unit 110 is configured to apply the inverse quantization of the quantization unit 108 to the quantized coefficients, e.g., by applying the inverse of the quantization scheme applied by the quantization unit 108, e.g., based on or using the same quantization step size as the quantization unit 108, to obtain unquantized coefficients 111. The unquantized coefficients 111 are also referred to as unquantized residual coefficients 111 and typically correspond to the transform coefficients 108, although they are not identical to the transform coefficients due to loss due to quantization.
[0185] The inverse transform unit 112 is configured to apply an inverse transform of the transform applied by the transform unit 106, for example, an inverse discrete cosine transform (DCT) or an inverse discrete sine transform (DST), to obtain an inverse transformed block 113 in the sample domain. The inverse transform block 113 is also referred to as an inverse transformed dequantized block 113 or an inverse transformed residual block 113.
[0186] The reconstruction unit 114 is configured to combine the inverse transform block 113 and the prediction block 165 to obtain a reconstructed block 115 in the sample domain, for example by adding sample values of the decoded residual block 113 and sample values of the prediction block 165 sample by sample.
[0187] A buffer unit 116 (or "buffer" 116 for short), e.g., a line buffer 116, is configured to buffer or store the reconstructed blocks and their respective sample values, e.g., for intra-estimation and / or intra-prediction. In further embodiments, the encoder may be configured to use the not-yet-filtered reconstructed blocks and / or their respective sample values stored in the buffer unit 116 for any kind of estimation and / or prediction.
[0188] Embodiments of encoder 100 may be configured, for example, such that buffer unit 116 is used not only to store reconstructed blocks 115 for intra-estimation 152 and / or intra-prediction 154, but also for loop filter unit 120 (not shown in FIG. 1 ), and / or such that buffer unit 116 and decoded picture buffer 130 form one buffer. Further embodiments may be configured to use blocks or samples from filtered blocks 121 and / or decoded picture buffer 130 (both not shown in FIG. 1 ) as input or basis for intra-estimation 152 and / or intra-prediction 154.
[0189] The loop filter unit 120 (or "loop filter" 120 for short) is configured to filter the reconstruction block 115 to obtain a filtered block 121, for example by applying a deblocking sample adaptive offset (SAO) filter or other filters, such as a sharpening or smoothing filter or a collaborative filter. The filtered block 121 is also referred to as a filtered reconstruction block 121. Hereinafter, the loop filter 120 is also referred to as a deblocking filter. Further details of the loop filter unit 120 are described below, for example with reference to Figures 6 or 7 or 10 to 12.
[0190] An embodiment of loop filter unit 120 may include a filter analysis unit and an actual filter unit (not shown in FIG. 1 ), where the filter analysis unit is configured to determine loop filter parameters for the actual filter. The filter analysis unit may be configured to apply fixed, predetermined filter parameters to the actual loop filter, adaptively select filter parameters from a set of pre-defined filter parameters, or adaptively calculate filter parameters for the actual loop filter.
[0191] An embodiment of loop filter unit 120 may include one or more filters (loop filter components / sub-filters), e.g., one or more different kinds or types of filters connected in series, in parallel, or in any combination thereof (not shown in FIG. 1 ), and each filter, individually or together with other filters of the plurality of filters, may include a filter analysis unit for determining respective loop filter parameters, e.g., as described in the preceding paragraph.
[0192] Embodiments of the encoder 100 (respectively the loop filter unit 120) may be configured to output entropy-coded loop filter parameters, e.g., directly or via the entropy coding unit 170 or any other entropy coding unit, so that the decoder 200, for example, can receive and apply the same loop filter parameters for decoding.
[0193] A decoded picture buffer (DPB) 130 is configured to receive and store the filtered block 121. The decoded picture buffer 130 may further be configured to store other previously filtered blocks, e.g., previously reconstructed filtered block 121, of the same current picture or a different picture, e.g., a previously reconstructed picture, and may provide a previously fully reconstructed, i.e., decoded, picture (and corresponding reference blocks and samples) and / or a partially reconstructed current picture (and corresponding reference blocks and samples), e.g., for inter-estimation and / or inter-prediction.
[0194] Further embodiments of the present invention may be configured to use previously filtered blocks and corresponding filtered sample values of the decoded picture buffer 130 for any type of estimation or prediction, such as intra and inter estimation and prediction.
[0195] The prediction unit 160, also called block prediction unit 160, is configured to receive or obtain decoded or at least reconstructed picture data, such as a picture block 103 (current picture block 103 of current picture 101), e.g., reference samples of the same (current) picture from buffer 116, and / or decoded picture data 231 from one or more previously decoded pictures from the decoded picture buffer 130, and to process such data for prediction, i.e., to provide a prediction block 165, which may be an inter-prediction block 145 or an intra-prediction block 155.
[0196] The mode selection unit 162 may be configured to select a prediction mode (e.g., intra or inter prediction mode) and / or a corresponding prediction block 145 or 155 to be used as the prediction block 165 for the calculation of the residual block 105 and for the reconstruction of the reconstruction block 115.
[0197] Embodiments of mode selector 162 may be configured to select a prediction mode (e.g., from among those supported by prediction unit 160) that considers or balances best match, or in other words, minimum residual (minimum residual means better compression for transmission or storage), or minimum signaling overhead (minimum signaling overhead means better compression for transmission or storage), or both. Mode selection unit 162 can be configured to determine the prediction mode based on rate-distortion optimization (RDO), i.e., to select a prediction mode that provides minimum rate-distortion optimization, or at least a prediction mode whose associated rate-distortion satisfies a prediction mode selection criterion.
[0198] The prediction process performed by the exemplary encoder 100 (eg, prediction unit 160 and mode selection (by mode select unit 162)) is described in more detail below.
[0199] As mentioned above, the encoder 100 is configured to determine or select the best or optimal prediction mode from a (predetermined) set of prediction modes, which may include, for example, intra-prediction modes and / or inter-prediction modes.
[0200] The set of intra prediction modes may include 32 different intra prediction modes, e.g., non-directional modes such as DC (or average) mode and planar mode, or directional modes, as specified in, for example, H.264, or may include 65 different intra prediction modes, e.g., non-directional modes such as DC (or average) mode and planar mode, or directional modes, as specified in, for example, H.265.
[0201] The set of (or possible) inter prediction modes depends on the available reference pictures (i.e., at least partially decoded previous pictures stored in DBP 230) and other inter prediction parameters, such as whether the entire reference picture or only a part of the reference picture, e.g., a search window area around the area of the current block, is used to search for the best matching reference block, and / or whether pixel interpolation is applied, e.g., whether half / semi-pel and / or quarter-pel interpolation is applied.
[0202] In addition to the above prediction modes, skip mode and / or direct mode may also be applied.
[0203] Further, the prediction unit 160 may be configured to divide the block 103 into smaller block partitions or sub-blocks, for example by iteratively using quadtree partitioning (QT), binary tree partitioning (BT), ternary tree partitioning (TT), or any combination thereof, and perform prediction for each of the block partitions or sub-blocks, for example, wherein the mode selection includes selecting a tree structure for the divided block 103 and a prediction mode to be applied to each of the block partitions or sub-blocks.
[0204] The inter estimation unit 142, also referred to as inter picture estimation unit 142, is configured to receive or obtain a picture block 103 (current picture block 103 of current picture 101) and a decoded picture 231, or at least one or more previously reconstructed blocks, e.g., reconstructed blocks of one or more other / different previously decoded pictures 231, for inter prediction (or "inter picture estimation"). For example, a video sequence may include the current picture and the previously decoded picture 231; in other words, the current picture and the previously decoded picture 231 may be part of a picture forming a video sequence or may form a sequence of pictures.
[0205] The encoder 100 may be configured to, for example, select a reference block from multiple reference blocks of the same or different pictures among multiple other pictures, and provide the reference picture (or reference picture index, ...) and / or the offset (spatial offset) between the position (x, y coordinates) of the reference block and the position of the current block as inter estimation parameters 143 to the inter prediction unit 144. This offset is also called a motion vector (MV). Inter estimation is also called motion estimation (ME) and inter prediction, motion prediction (MP).
[0206] The inter prediction unit 144 is configured to obtain, eg, receive, received inter prediction parameters 143 and perform inter prediction based on or using the inter prediction parameters 143 to obtain an inter prediction block 145 .
[0207] Although FIG. 1 shows two separate units (or steps) for inter-coding, namely inter-estimation 142 and inter-prediction 152, both functions may be performed, with one (inter-prediction) requiring / including calculating the inter-predicted block, namely the or "more or less" inter-prediction 152, for example, by iteratively testing a subset of all possible or predetermined possible inter-prediction modes, while storing the current best inter-prediction mode and the respective inter-predicted block, and using the current best prediction mode and the respective inter-predicted block as the (final) inter-prediction parameters 143 and inter-prediction block 145 without performing another inter-prediction 144.
[0208] The intra estimation unit 152 is configured to obtain, e.g., receive, a picture block 103 of the same picture (current picture block) and one or more previously reconstructed blocks, e.g., reconstructed neighboring blocks, for intra estimation. The encoder 100 may, for example, be configured to select an intra prediction mode from a plurality of (predetermined) intra prediction modes and provide it as intra prediction parameters 153 to the intra prediction unit 154.
[0209] Embodiments of the encoder 100 may be configured to select an intra-prediction mode based on an optimization criterion, such as minimum residual (e.g., the intra-prediction mode that provides the predicted block 155 that is most similar to the current picture block 103) or minimum rate distortion.
[0210] The intra prediction unit 154 is configured to determine an intra prediction block 155 based on intra prediction parameters 153 , eg, a selected intra prediction mode 153 .
[0211] Although Figure 1 shows two separate units (or steps) for intra-coding, i.e., intra estimation 152 and intra prediction 154, both functions may be performed, with one (intra prediction) requiring / including calculating the intra prediction block, i.e., the or "more likely" intra prediction 154, for example by iteratively testing a subset of all possible or predetermined possible intra prediction modes, while storing the current best intra prediction mode and the respective intra prediction block, and using the current best prediction mode and the respective intra prediction block as the (final) intra prediction parameters 153 and intra prediction block 155 without performing another intra prediction 154.
[0212] The entropy coding unit 170 is configured to apply an entropy coding algorithm or scheme (e.g., a variable length coding (VLC) scheme, a context-adaptive VLC scheme (CALVC), an arithmetic coding scheme, a context-adaptive binary arithmetic coding (CABAC)) to the quantized residual coefficients 109, the inter-prediction parameters 143, the intra-prediction parameters 153, and / or the loop filter parameters, individually or jointly (or not at all), to obtain coded picture data 171, which may be output by an output 172, e.g. in the form of a coded bitstream 171.
[0213] Other structural variations of the video encoder 100 can be used to encode the video stream. For example, a non-transform-based encoder 100 can quantize the residual signal directly for a particular block or frame, without relying on a transform processing unit. In another embodiment, the encoder 100 can have the quantization unit and the inverse quantization unit combined into a single unit.
[0214] FIG. 2 shows an exemplary video decoder 200 configured to receive coded picture data (e.g., coded bitstream) 171, e.g., coded by encoder 100, to obtain a decoded picture 231.
[0215] The decoder 200 includes an input 202, an entropy decoding unit 204, an inverse quantization unit 210, an inverse transform unit 212, a reconstruction unit 214, a buffer 216, a loop filter 220, a decoded picture buffer 230, a prediction unit 260, an inter prediction unit 244, an intra prediction unit 254, a mode selection unit 260, and an output 232.
[0216] The entropy decoding unit 204 is configured to perform entropy decoding on the coded picture data 171 to obtain, for example, quantized coefficients 209 and / or decoded coding parameters (not shown in FIG. 2), such as (decoded) any or all of the inter-prediction parameters 143, intra-prediction parameters 153, and / or loop filter parameters.
[0217] In the decoder 200 embodiment, the inverse quantization unit 210, the inverse transform unit 212, the reconstruction unit 214, the buffer 216, the loop filter 220, the decoded picture buffer 230, the prediction unit 260, and the mode selection unit 262 are configured to perform the inverse processes of the encoder 100 (and their respective functional units) to decode the coded picture data 171.
[0218] In particular, the inverse quantization unit 210 may be functionally identical to the inverse quantization unit 110, the inverse transform unit 212 may be functionally identical to the inverse transform unit 112, the reconstruction unit 214 may be functionally identical to the reconstruction unit 114, the buffer 216 may be functionally identical to the buffer 116, the loop filter 220 may be functionally identical to the loop filter 120 (for an actual loop filter, typically the loop filter 220 does not include a filter analysis unit for determining filter parameters based on the original image 101 or the block 103, but receives or obtains (explicitly or implicitly) the filter parameters used for encoding, e.g., from the entropy decoding unit 204), and the decoded picture buffer 230 may be functionally identical to the decoded picture buffer 130.
[0219] The prediction unit 260 includes an inter prediction unit 244 and an intra prediction unit 254, which may be functionally identical to the inter prediction unit 144, and which may be functionally identical to the intra prediction unit 154. The prediction unit 260 and the mode selection unit 262 are typically configured to perform block prediction and / or obtain the prediction block 265 from the coded data 171 alone (without further information about the original picture 101), and to receive or obtain (explicitly or implicitly) information about the prediction parameters 143 or 153 and / or the selected prediction mode, for example, from the entropy decoding unit 204.
[0220] The decoder 200 is configured to output the decoded pictures 231, for example via an output 232, for presentation or display to a user.
[0221] Although embodiments of the present invention have been described primarily in terms of video coding, it should be noted that embodiments of the encoder 100 and decoder 200 (and corresponding system 300) may also be configured for still picture processing or coding, i.e., processing or coding of individual pictures independent of any preceding or subsequent pictures, as in video coding. Generally, when picture processing coding is limited to a single picture 101, only inter estimation 142 and inter prediction 144, 242 are available. Most, if not all, of the other functions (also called tools or techniques) of the video encoder 100 and video decoder 200, such as partitioning, transform (scaling) 106, quantization 108, inverse quantization 110, inverse transform 112, intra estimation 142, intra prediction 154, 254, and / or loop filtering 120, 220, and entropy coding 170 and entropy decoding 204, can be used equally well for still pictures.
[0222] The present invention deals with the internal operation of the deblocking filter, also referred to as the loop filter in Figures 1 and 2. Further details of the loop filter unit 120, 220 are described below, for example, with reference to Figures 6, 7, or 10-12, or 15-16.
[0223] Video coding schemes such as H.264 / AVC and HEVC are designed around the successful principles of block-based hybrid video coding. Using this principle, a picture is first divided into blocks, and each block is then predicted using intra- or inter-picture prediction. These blocks are coded relative to neighboring blocks to approximate the original signal with a certain degree of similarity. Because coded blocks only approximate the original signal, discontinuities between the approximations can cause discontinuities at prediction and transform block boundaries. These discontinuities are attenuated by a deblocking filter. HEVC replaces the macroblock structure of H.264 / AVC with the concept of coding tree units (CTUs), which have a maximum size of 64x64 pixels. CTUs are further divided into smaller coding units (CUs) using a quadtree partitioning scheme, which can be further subdivided down to a minimum size of 8x8 pixels. HEVC also introduces the concepts of prediction blocks (PBs) and transform blocks (TBs).
[0224] In HEVC, two filters are specified for the deblocking filter: normal and strong. The normal filter modifies at most two samples on either side of an edge. The strong filter evaluates three additional tests between the samples along the edge and predefined thresholds. If all of these tests are true, the strong filter is applied. The strong filter has a stronger smoothing effect on samples along the edge and can modify at most three samples on either side of the edge.
[0225] ITU-T VCEG (Q6 / 16) and ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) are researching a next-generation video codec: Generic Video Coding (VVC). This new video codec standard aims to achieve compression capabilities significantly beyond those of the current HEVC standard (including current and near-future extensions for screen content coding and high dynamic range coding). These groups are collaborating on this exploration effort in a joint effort known as the Joint Video Exploration Team (JVET), evaluating compression technology designs proposed by experts in the field.
[0226] The VVC Test Model (VTM) is a feature of collaborative test model research by the ITU-T VCEG and ISO / IEC MPEG Joint Video Exploration Team (JVET) as a potential enhanced video coding technology that exceeds the capabilities of HEVC.
[0227] The VTM software uses a new split-block structure method called Quad-Tree-Binary-Tree-Territory (QTBTTT).
[0228] The QTBTTT structure eliminates the concept of multiple partition types, i.e., the distinction between coding units (CUs), prediction units (PUs), and transform units (TUs). Thus, CU = PU = TU.
[0229] QTBTTT supports more flexible CU partitioning shapes, where CUs can have either square or rectangular shapes. The minimum width and height of a CU can be 4 samples, and the size of a CU can be 4xN or Nx4, where N can be a value in the range [4, 8, 16, 32]. Furthermore, the maximum CTU size has been increased to 128x128 pixels, which is four times larger than the CTU size in HEVC.
[0230] For rectangular CUs, distortion near the short edges can be evident, resulting in block artifacts even when the HEVC Strong Filter is applied. Block artifacts can be observed along the edges of large CUs, and the distortion is more pronounced due to the larger prediction and transformation processes.
[0231] Currently, additional sub-pu tools (i.e., sub-block tools in general), such as Affine and ATMVP, are being adopted in the Generic Video Coding (VVC) standard. In some implementations, for sub-pu tools, particularly Affine, deblocking may be performed on sub-pu edges / boundaries that overlap with the 8x8 grid. In another implementation, for sub-pu tools, particularly Affine, only sub-pu boundaries that overlap with the 16x16 grid are deblocked, and all other sub-pu boundaries are not deblocked, i.e., deblocking is not performed on sub-pu boundaries that overlap with the 8x8 grid, as shown in Figure 15. In another implementation, for sub-pu tools, particularly Affine, the first and last internal sub-pu boundaries are not deblocked. All other internal sub-pu edges are deblocked, as shown in Figure 16. In other words, the solutions shown in Figures 15 and 16 allow deblocking for at least some of the internal sub-pu edges. All of these implementations exist primarily to cover the harmonic nature of longer tap filter applications when one of the edge-sharing blocks uses a sub-pu tool like Affine or ATMVP.
[0232] The current deblocking filter process (using quad-tree plus binary-tree plus ternary-tree (QTBTTT) decomposition) is shown in Figure 4.
[0233] The problem of applying the "longer tap filter" to the sub-pu tool is illustrated in Figure 4. The coding blocks 401 and 402, also called P and Q, are two CUs, each with a size of 16x4 samples.
[0234] When a CU edge (marked by a thick black line) is filtered, up to seven samples on either side of the CU edge are modified. Thus, Q 0,0 From Q 6,0 Samples up to are corrected. Also, sample Q 7,0 Q 6,0 Q 5,0 is used in the deblocking decision on the sub-pu boundaries (marked with thin black lines). Thus, filtering results in overlaps and also edges that should not be deblocked in parallel.
[0235] Therefore, it is necessary to perform deblocking filtering in a serial manner, which incurs very long processing times. This leads to unnecessarily long processing times, especially as near-future processor technologies employ increasingly parallel processing structures. Adapting deblocking filtering to operate in parallel can save considerable processing time.
[0236] In particular, parallelizing the deblocking filtering can be achieved by approaches such as those shown in Figures 5, 15, or 16.
[0237] 7.1 Embodiments of the present invention Solution 1: 1.1 If the current block Q uses a sub-pu tool such as Affine or ATMVP, the present invention uses an asymmetric version of a longer tap filter, i.e., an asymmetric filter as shown in Table 1, to deblock the CU boundary between blocks P and Q. Essentially, a coding unit can utilize inter-prediction. For inter-prediction, there are several different tools a coding unit can use. Affine and ATMVP are two sub-pu tools. The sub-pu tool means that a given coding unit uses smaller prediction units (sub-pus), and motion compensation is performed separately for each sub-pu. For example, if we have a coding unit of 16x4 size, the affine tool will use two sub-pus of 8x4 size or four sub-pus of 4x4 size (as shown in Figure 4). For example, if we have a coding unit of 16x16 size, the affine tool will use 16 sub-pus of 4x4 size or four sub-pus of 8x8 size, as shown in Figures 17(a) and 17(b). Each of these sub-pus or sub-blocks uses a separate motion vector, as shown in Figure 18. Therefore, for coding unit Q using sub-pu tools, up to three samples are modified, and for coding unit P, up to seven samples are modified. See Figures 4 or 5. If the width of coding unit P is greater than eight samples, e.g., 16 or 32 samples, then up to seven samples are modified for coding unit P. Note that in some scenarios, three, four, five, or six samples may be modified for coding units P and Q.
[0238] [Table 1]
[0239] The input pixels correspond to the pixel or sample values used for filtering, and the output pixels correspond to the modified sample values. Note that the input pixels may be consecutive pixels starting at a block edge and perpendicular to the block edge. Alternatively, the output pixels may be consecutive pixels starting at a block edge and perpendicular to the block edge. As shown in Table 1, in one example, the first output values (associated with coding block Q) correspond to q2, q1, q0, and the second output values (associated with coding block P) correspond to p0, p1, p2, ... p5, p6. Correspondingly, coding unit Q corresponds to the second image block using the sub-block tool, and coding unit P corresponds to the first image block. Coding unit Q is the current block, and coding unit P is the neighboring block of the current block. Also, the filter condition (Equation 1) ensures that only a maximum of four samples from block Q are used in the filter decision.
[0240] In one example, for both the first and fourth lines of the blocking segment:
number
[0241] Only four samples can be used for the filter decision (in the case of Equation 1). Thus, in Equation 1 for block Q, only samples q0 through q3 are used. In Equation 1 for block P, four samples as shown in Equation 1 can be used. In one example, the second decision values correspond to q3, q2, q1, and q0, and the first decision values correspond to p0, p3, p4, p7, p0, p2, and p 3、 Corresponds to p5.
[0242] If Equation 1 is satisfied, then the longer tap filter mentioned in Table 1 can be used. If Equation 1 is not satisfied, then the HEVC strong filter can be used. Also, here a maximum of three samples from block Q, namely q0 to q2, are modified. Essentially, to apply the longer tap filter, Equation 1 is taken into consideration. Only if Equation / Condition 1 is true, then the longer tap filter shown in Table 1 may be applied. Note that Equation 1 may be used in step 707 of Figure 7.
[0243] Equation 1 essentially checks the gradient on either side of the CU edge. Since only a maximum of four samples are available to make a filter decision from block Q, therefore, only samples q0 through q3 are used from block Q, and β denotes a threshold parameter known, for example, from the HEVC standard. Regarding the filter condition, the value of the threshold parameter β depends on the quantization parameter QP. As mentioned above, QP is a well-known parameter in video coding standards that controls the trade-off between bit rate and video content quality. In an embodiment, QP may range from 0 to 51. In an embodiment, the processing circuitry of filter device 120, 220 is configured to determine the threshold parameter β based on the quantization parameter QP using a look-up table. In an embodiment, the look-up table may be defined as follows:
[0244] Look-up Table
[52] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64}
[0245] For further details regarding the threshold parameter β and its dependence on the QP reference, see Chapter 7 of the book “High Efficiency Video Coding (HEVC)” by Sze et al., which is incorporated herein by reference.
[0246] 1.2 If the neighboring block P uses a sub-pu tool such as Affine or ATMVP, we use an asymmetric version of the longer tap filter, i.e., the asymmetric filter shown in Table 2, to deblock the CU boundary between blocks P and Q. Thus, for a coding unit P using the sub-pu tool, in one example, a maximum of three samples are modified, whereas for the current coding unit Q, a maximum of seven samples are modified.
[0247] [Table 2]
[0248] The input pixels correspond to the pixel or sample values used for filtering, and the output pixels correspond to the modified sample values. Note that the input pixels may be consecutive pixels starting at a block edge and perpendicular to the block edge. The output pixels may also be consecutive pixels starting at a block edge and perpendicular to the block edge. As shown in Table 2, in one example, the first output values (associated with coding block P) correspond to p2, p1, p0, and the second output values (associated with coding block Q) correspond to q0, q1, q2, ... q5, q6. Correspondingly, coding unit P corresponds to the second image block using the sub-block tool, and coding unit Q corresponds to the first image block. Coding unit P is the current block, and coding unit Q is the neighboring block of the current block.
[0249] Also, the filter condition (Equation 2) ensures that only a maximum of four samples from block P are used in the filter decision.
[0250] In one example, for both the first and fourth lines of the blocking segment:
number
[0251] Only four samples can be used for the filter decision (in Equation 2). Thus, in Equation 2 for block P, only samples p0 through p3 are used. In Equation 2 for block Q, four samples as shown in Equation 2 can be used. In one example, the second decision values correspond to p3, p2, p1, p0, and the first decision values correspond to q0, q3, q4, q7, q0, q2, q 3、 Corresponds to q5.
[0252] If Equation 2 is satisfied, the longer tap filter mentioned in Table 2 can be used. If Equation 2 is not satisfied, the HEVC strong filter can be used. Also, here, up to three samples from block P, namely p0 to p2, are modified. Essentially, Equation 2 is taken into account to apply the longer tap filter. Only if Equation 2 is true, the longer tap filter shown in Table 2 may be applied. Note that Equation 2 may be used in step 707 of FIG. 7.
[0253] It is allowed to use a maximum of four samples from block P to make a filter decision. Therefore, samples p4, p5...p7 cannot be used, and therefore the filter coefficients for samples p4, p5...p7 are zero. In this way, p4, p5,...p7 are not used in the filtering process.
[0254] Equation 2 essentially checks the gradient on either side of the block. To make a filter decision from block P, only a maximum of four samples are available, so only samples p0 through p3 are used from block P.
[0255] 1.3 In an alternative implementation, the coefficients of p0, p1, p2 or q0, q1, q2 may use HEVC strong filter coefficients. When coding unit P uses the sub-pu filter, the coefficients are shown in Table 3. In other words, the present invention may use an asymmetric version of a longer tap filter, i.e., an asymmetric filter as shown in Table 3, to deblock the CU boundary between blocks P and Q. Correspondingly, coding unit P corresponds to the second image block, and coding unit Q corresponds to the first image block. Coding unit P is the current block, and coding unit Q is the neighboring block of the current block.
[0256] [Table 3]
[0257] Alternatively, the filter coefficients for p0, p1, p2 or q0, q1, q2 may use HEVC strong filter coefficients. When coding unit Q uses the sub-pu tool, the filter coefficients are shown in Table 4. In other words, the present invention may use an asymmetric version of a longer tap filter, i.e., an asymmetric filter as shown in Table 4, to deblock the CU boundary between blocks P and Q. Correspondingly, coding unit Q corresponds to the second image block, and coding unit P corresponds to the first image block. Coding unit Q is the current block, and coding unit P is the neighboring block of the current block.
[0258] [Table 4]
[0259] The filter condition used can be Equation 1 or Equation 2 based on whether block P or block Q uses a sub-pu tool. For example, if block P uses a sub-pu tool, the filter condition is Equation 2, and if block Q uses a sub-pu tool, the filter condition is Equation 1.
[0260] 1.4 If both coding unit Q and coding unit P use sub-pu tools, the longer tap filter is no longer applied at the CU boundary. For the CU edge (abbreviated as CE), the HEVC strong filter may be considered. In the implementation, up to three samples on one side of the CU edge are modified within block P, and up to three samples on the other side of the CU edge are modified within block Q. The filters used are as shown in Table 5. In other words, the present invention can use the filters as shown in Table 5 to deblock the CU boundary between blocks P and Q. [Table 5]
[0261] FIG. 7 is a flowchart illustrating a method for determining whether a longer tap filter (or asymmetric long filter) is to be used. As shown in FIG. 7, the HEVC strong filter condition should be satisfied for the "longer tap filter" condition to be true. In step 707, the details are described above. The longer tap filter used in step 709 is different from the regular longer tap filter used in step 708, the details are described above. The regular longer tap filter condition is:
number
[0262] Details for determining whether the HEVC strong filter condition should be satisfied are shown in FIG. 8. The deblocking filtering decision for block boundaries including the decision between strong filtering and normal filtering is summarized in the flowchart of FIG. 8.
[0263] In the first step 800, it is checked whether the currently filtered block edge is aligned with the 8×8 coded sample grid. If that is the case, in the second step 801, it is checked whether the block edge to be filtered is at the boundary between prediction units or transform units. If that is the case, in the third step 802, it is checked whether the boundary strength Bs > 0. If this condition is also satisfied, in the fourth step 803, it is checked whether condition 7.1 is true.
[0264] Condition 7.1 is used to check whether deblocking filtering is applied to the block boundary. In particular, it checks how much signal deviates from a straight line (ramp) on each side of the block boundary.
[0265] If this condition is not met, or if any of the checks of steps 800, 801 and 802 are not satisfied, then in a fifth step 804 it is decided that no filtering will be performed.
[0266] In a sixth step 805 (not shown in Figure 8), it is now checked whether the block size of either of the two blocks surrounding the edge to be filtered is 4. If this is not the case, in a seventh step 806 it is checked whether further conditions 7.2, 7.3 and 7.4 are fulfilled.
[0267] Condition 7.2 checks that there are no significant signal variations on the side of the block boundary, condition 7.3 ensures that the signals on both sides are flat, and condition 7.4 ensures that the step between sample values on either side of the block boundary is small.
[0268] If all of these conditions are true, then in an eighth step 807, strong filtering is performed, and step 807 is simply replaced by step 702 of Figure 7. If that is not the case, then in a ninth step 808, it is decided that regular filtering is to be performed.
[0269] This solution executes a portion of the deblocking flow chart, resulting in only one sample correction being performed.
[0270] This means that at least one block size is an even integer greater than the threshold 2. n (e.g., 8 or 16), especially if at least one block size is an even integer greater than 16. n This allows for a significant reduction in the amount of checking required to determine if filtering is performed and what type of filtering is performed if .
[0271] To avoid filter overlap when longer tap filters are applied to either or both blocks using sub-pu tools such as Affine and ATMVP, the following solution is proposed in this disclosure.
[0272] Solution 1: Use an "asymmetric" filter, which allows for a modification of at most MA samples for blocks using sub-pu tools, such as Affine or ATMVP, if either block Q or block P uses a sub-pu tool, e.g., MA=3, 4, 5, or 6.
[0273] Solution 2: If both coding unit Q and coding unit P use the sub-pu tool, the longer tap filter is not applied to the CU edge. The HEVC strong filter is considered for the edge. Therefore, the same number of samples are modified on either side of the CU edge for blocks P and Q, MA' = MB'.
[0274] Solution 3: If either block Q or block P uses a sub-pu tool such as Affine or ATMVP, deblocking is performed only on the CU edge, while disabling deblocking on the sub-pu edge.
[0275] Solutions 4 and 5: If either block Q or block P uses a sub-pu tool such as Affine or ATMVP, deblocking is not only performed on some of the sub-pu edges, but also on the CU edges.
[0276] Solution 4: In this solution, the longer tap deblocking filter or the regular HEVC deblocking filter can be applied to all CU edges. For internal sub-pu edges, only edges that overlap with the 16x16 grid are deblocked. Internal sub-pu edges that overlap with the 8x8 grid are not deblocked. The main advantage of this solution is that the longer tap filter can also be applied to some of the internal sub-pu edges that are far from the CU edge.
[0277] As shown in Figure 15, this example includes three coding units (blocks) P, Q, and R. Block Q uses a sub-pu tool such as Affine or ATMVP and therefore consists of an internal sub-pu edge. There are two coding unit edges: one shared between block P (e.g., CU P) and block Q (e.g., CU Q), and the other shared between block Q (e.g., CU Q) and block R (e.g., CU R). To apply longer tap filters to coding unit edges without introducing filter overlap and thus sacrificing parallel deblocking, the proposed solution only deblocks all internal sub-pu edges that overlap the 16x16 grid. All other internal sub-pu edges are not deblocked. This situation is also shown in Figure 15, where the dashed lines indicate internal sub-pu edges that overlap the 8x8 grid and are not deblocked. Regular lines indicate internal sub-pu edges that overlap the 16x16 grid, so they can be deblocked. An important property of this solution is that longer tap filters can be applied to CU edges and also to internal sub-pu edges that overlap the 16x16 grid.
[0278] The blocks P, Q, and R have a block size of M×N, N×M, L×T, or T×L, where N or T is an even integer greater than a threshold (e.g., 8 or 16). n For example, the size (i.e., width or height) of blocks P, Q, R may be 32 or 64 samples.
[0279] For a 16x16 grid, there will be at least one interior sub-pu edge that overlaps.
[0280] In general, for smaller blocks, there will be only one first and one last internal sub-pu edge that overlaps the 8x8 grid, and therefore it cannot be deblocked. This is the situation shown in Figure 4.
[0281] An 8x8 grid is shown in Figure 19. An 8x8 grid has vertical and horizontal lines spaced apart by gaps of 8 samples. A 16x16 grid would have vertical and horizontal lines spaced apart by gaps of 16 samples.
[0282] A sixth filter, such as a longer tap filter that modifies up to seven samples on either side of the sub-block edge, i.e., NA' = NB' = 7, may be used. Incidentally, a regular HEVC deblocking filter may also be applied to all of these sub-pu edges that overlap with the 16x16 grid. In general, a regular HEVC deblocking filter may modify up to three samples on either side of the edge. When a regular HEVC deblocking filter is applied to these sub-pu edges that overlap with the 16x16 grid, the number of samples to be modified on either side of the sub-pu edge may be adapted according to different scenarios.
[0283] In Figure 15, i.e., for Solution 4 (16x16 grid), the sixth filter may refer to a longer tap filter. A longer tap filter is a filter that modifies an equal number of samples on either side of the edge. In this case, any longer tap filter with NA' = NB' = 7 can be used, i.e., the longer tap filter can modify up to seven samples on either side of the edge. For longer tap filters, NA' = NB' = 7. The longer tap filter modifies up to seven samples on either side of the sub-PU edge. Alternatively, a regular HEVC filter can be applied. Samples inside the sub-PU block are used for filter decision and filter modification.
[0284] Solution 5: In this solution, deblocking is disabled for the first and last interior sub-pu edges, e.g., those overlapping the 8x8 grid. All other sub-pu edges, e.g., overlapping the 8x8 grid, are allowed to have a fifth filter (such as the regular HEVC deblocking filter or any other filter) modifying up to four samples. A longer tap deblocking filter can still be safely applied to all CU edges.
[0285] As shown in Figure 16, this example consists of three coding units (blocks) P, Q, and R. Block Q uses a sub-pu tool such as Affine or ATMVP and therefore consists of an internal sub-pu edge. There are two coding unit edges: one shared between blocks P and Q, and the other shared between blocks Q and R. To apply longer tap filters to coding unit edges without introducing filter overlap and thus sacrificing parallel deblocking, the solution only deblocks all internal sub-pu edges except the first and last. Also, a fifth filter, such as an HEVC deblocking filter that modifies up to three samples or any other deblocking filter that modifies up to four samples, can be used to deblock all internal sub-pu edges except the first and last. Note that for the internal sub-pu edges in this solution, each consecutive edge is eight samples apart, which is equivalent to filtering generally on an 8x8 grid. Therefore, a regular HEVC deblocking filter, or any other filter capable of modifying up to four samples, can be used in Solution 5.
[0286] In Figure 16, i.e., for solution 5 (excluding the first and last), the fifth filter may refer to a longer tap filter. The longer tap filter may be a filter that modifies an equal number of samples on either side of the edge. In this case, any longer tap filter with NA=NB can be used. For longer tap filters, NA=NB=4. The longer tap filter modifies up to four samples on either side of the sub-PU edge. A regular HEVC filter can also be applied. Samples inside the sub-PU block are used for filter decision and filter modification.
[0287] The blocks P, Q, and R have a block size that is M×N or N×M or L×T or T×L, where N or T is an even integer greater than 8. n For example, the size (i.e., width or height) of blocks P, Q, R may be 32 or 64 samples. In general, for smaller blocks, there will be only one first and one last interior sub-pu edge that overlaps with the 8x8 grid, and therefore it cannot be deblocked. This is the situation shown in Figure 4.
[0288] Regarding the first and last sub-pu edges between sub-blocks within the first coding block P or the second coding block Q, the first sub-pu edge is closest to one of the first coding block P and the second coding block Q, and the last sub-pu edge is closest to the other of the first coding block P and the second coding block Q.
[0289] This disclosure applies well to both vertical and horizontal edges. The disclosure can define the first sub-pu edge using the top-left position (x,y) of the sub-pu block, and for the first vertical edge, we can say that the top-left position is (x+n,y+8), where n is the increment along the edge, but the positions are the same. For the last vertical edge, we can say that its position is next to the adjacent block position (p,q), and the position of the last vertical edge will start from (p+n,q-8). For horizontal edges, it's similar, just the other way around.
[0290] In summary, the solutions can ensure that parallel deblocking operations can be performed, thus improving the subjective and objective quality of video coding. Solution 3 disables deblocking for all internal sub-pu edges, while Solutions 4 and 5 allow deblocking for at least some of the internal sub-pu edges.
[0291] This approach is also illustrated in Figures 15 and 16. In Figure 5, an image 500 is shown containing two blocks 501 and 502. A block edge 504 separates blocks 501 and 502. A block edge 505 separates block 502 into blocks 5021 and 5022. According to a first embodiment of the present invention, every seventh sample near block edge 504 is modified within block 501, and three samples near block edge 504 are modified within blocks 502 and 5021, while two consecutive samples on either side of block edge 504 are used as filter inputs. In Figure 9, only the relevant blocks 901 and 902 of image 900 are shown; the same applies to horizontal edges. The present invention applies to all block types for the application of longer tap filters; it works for both vertical and horizontal edges, e.g., for vertical edges with widths > 8.
[0292] Future video coding standards may use "long tap" filters that modify more than three samples. In the following, whenever the block size is 16 samples or larger, "long tap" filters may be used that take 8 samples as the filter input and modify up to 7 samples.
[0293] To ensure that parallel deblocking is possible in scenarios where the current block uses sub-block tools, we propose the following improved mechanism.
[0294] Mechanism 1a: Force a "long tap" filter if the current block size is ≥ 16 samples and if the neighboring block size is also ≥ 16 samples.
[0295] Mechanism 2a: Enforce "asymmetric NAS" as described above.
[0296] Thus, the "asymmetric filter" modifies the samples used as input values and the modification values block-wide. For example, · If the block width == 4, 3 samples can be used for filter determination and 1 sample can be corrected. · If the block width == 8, 4 samples can be used for filter determination and correction. · When the block width ≥ 16, the long - tap filter can be applied as described above. For example, in a scenario where the current block uses a sub - block tool, at most MA sample values of the current block (using the sub - block tool) adjacent to the block edge are corrected for each line, and at most MB sample values of the adjacent block adjacent to the block edge are corrected for each line, where MA ≠ MB, especially MA < MB. For example, MA = 3 and MB = 7, or MA = 4 and MB = 7, or MA = 5 and MB = 7. In a scenario where the current block has a sub - block tool, it can be understood that MA and MB may be determined based on the block size, that is, MA and MB depend on the block size of their respective blocks. In the implementation method, for a large block, that is, when the block size ≥ 32, the maximum number of samples to be corrected may be 7 (corresponding to the long filter).
[0297] FIG. 6 is a block diagram illustrating an example deblocking filter apparatus 600 according to the techniques described in this disclosure (further details will be described below, for example, with reference to FIGS. 7 and 8 or 10, 11A, 11B, and 12). Deblocking filter apparatus 600 may be configured to perform deblocking techniques according to various examples described herein. In general, either or both of loop filter 120 of FIG. 1 and loop filter 220 of FIG. 2 may include components substantially similar to those of deblocking filter apparatus 600. Other video coding devices, such as a video encoder, a video decoder, or a video encoder / decoder (CODEC), may also include components substantially similar to deblocking filter 600. Deblocking filter apparatus 600 may be implemented in hardware, software, or firmware, or any combination thereof. When implemented in software or firmware, corresponding hardware (e.g., one or more processors or processing units and memory for storing software or firmware instructions) may also be provided.
[0298] In the example of FIG. 6, the deblocking filter apparatus 600 includes a deblocking determination unit 604, a support definition 602 stored in memory, a deblocking filtering unit 606, deblocking filter parameters 608 stored in memory, an edge location unit 603, and an edge location data structure 605. Any or all of the components of the deblocking filter 600 may be functionally integrated. The components of the deblocking filter 600 are shown separately for illustrative purposes only. Generally, the deblocking filter 600 receives data for a decoded block from, for example, a summing component 114, 214, which combines prediction data with residual data for the block. The data may further include an indication of how the block was predicted. In the example described below, the delocking filter device 600 is configured to receive data including decoded video blocks associated with a CTB (or LCU) and a CU quadtree of the CTB, which describes how the CTB is divided into CUs and the prediction modes of the TUs and PUs of the leaf-node CUs.
[0299] Deblocking filter device 600 may maintain an edge location data structure 605 in its memory or in an external memory provided by a corresponding video coding device. In some examples, edge location unit 603 may receive a quadtree corresponding to a CTB that indicates how the CTB is divided into CUs. Edge location unit 603 may then analyze the CU quadtree to determine edges between decoded video blocks associated with TUs and PUs of CUs in the CTB that are candidates for deblocking.
[0300] The edge location data structure 605 may include an array having a horizontal dimension, a vertical dimension, and dimensions representing horizontal and vertical edges. In general, an edge between video blocks may occur between two video blocks associated with a minimum-sized CU of the CTB, or a TU and PU of a CU. Assuming the CTB has a size of NxN and the minimum-sized CU of the CTB is a size of MxM, the array may contain a size of [N / M]x[N / M]x2, where "2" represents the two possible edge directions (horizontal and vertical) between CUs. For example, assuming the CTB has 64x64 pixels and an 8x8 minimum-sized CU, the array may contain [8x[8x2] entries.
[0301] Each entry may generally correspond to a possible edge between two video blocks. An edge may not actually exist at each of the positions in the LCU corresponding to each entry in the edge position data structure 605. Thus, the value of the data structure may be initialized to false. In general, the edge positioning unit 603 may analyze the CU quadtree to determine the location of an edge between two video blocks associated with the TU and PU of a CU in the CTB and set the corresponding value in the edge position data structure 605 to true.
[0302] In general, an entry in the array may describe whether a corresponding edge exists in the CTB as a candidate for deblocking. That is, if the edge location unit 603 determines that an edge exists between two adjacent video blocks associated with a TU and a PU of a CU in the CTB, the edge location unit 603 may set the value of the corresponding entry in the edge position data structure 605 to indicate that an edge exists (e.g., to a value of “true”).
[0303] The deblocking determination unit 604 generally determines, for two adjacent blocks, whether the edge between the two blocks should be deblocked. The deblocking determination unit 604 may determine the location of the edge using an edge location data structure 605. If the values of the edge location data structure 605 have Boolean values, the deblocking determination unit 604 may, in some instances, determine that a value of "true" indicates the presence of an edge, and a value of "false" indicates the absence of an edge.
[0304] In general, the deblocking decision unit 604 is configured to provide one or more deblocking decision functions. A function may include multiple coefficients that are applied to a line of pixels that cross an edge between blocks. For example, a function may be applied to a line of pixels perpendicular to the edge, with MA (e.g., 3, 4, or 5) pixels in one of two blocks and MB (e.g., 7) pixels in the other of the two blocks. The support definition 602 specifies the support of the function. In general, "support" corresponds to the pixels to which the function is applied.
[0305] The deblocking decision unit 604 may be configured to apply one or more deblocking decision functions to one or more sets of supports, as defined by the support definition 602, to determine whether a particular edge between two blocks of video data should be deblocked. The dashed lines emanating from the deblocking decision unit 604 represent data of the block that is output without filtering. If the deblocking decision unit 604 determines that the edge between the two blocks should not be filtered, the deblocking filter 600 may output the data of the block without modifying the data. That is, the data may bypass the deblocking filtering unit 606. On the other hand, if the deblocking decision unit 604 determines that the edge should be deblocked, the deblocking decision unit 604 may have the deblocking filtering unit 606 filter values of pixels near the edge to deblock the edge.
[0306] The deblocking filtering unit 606 derives a deblocking filter definition from the deblocking filter parameters 608 for the edge to be deblocked, as instructed by the deblocking decision unit 604. Generally, edge filtering uses pixel values from the neighborhood of the current edge to be deblocked. Thus, both the deblocking decision function and the deblocking filter may have specific support regions on both sides of the edge. By applying a deblocking filter to pixels near the edge, the deblocking filtering unit 606 can smooth the pixel values, resulting in attenuating high-frequency transitions near the edge. In this way, applying a deblocking filter to pixels near the edge can reduce blockiness artifacts near the edge.
[0307] FIG. 10 is a block diagram illustrating an example deblocking method according to techniques described in this disclosure (further details will be described below, eg, with reference to FIGS. 7 and 8).
[0308] In FIG. 10, an embodiment of the deblocking method is shown.
[0309] In a first step 1001, edges between blocks are determined, including block edges between a first coding block and a second coding block and sub-block edges between sub-blocks of the first coding block or the second coding block (e.g., the first coding block or the second coding block has a sub-block, or the first coding block or the second coding block has a sub-block tool), where the first coding block has a block size that is M×N or N×M, and the second coding block has a block size that is L×T or T×L, where N or T is an even integer greater than a threshold (e.g., 8 or 16). n and;
[0310] In a second step 1002, it is determined whether the block edge between the first coding block and the second coding block should be filtered by applying a first filter (i.e., a longer tap filter, or an asymmetric filter, or an asymmetric tap filter, or an asymmetric long filter), in other words, it is determined whether the block edge between the first coding block and the second coding block is enabled for deblocking by applying a first filter (i.e., a longer tap filter, or an asymmetric filter, or an asymmetric tap filter, or an asymmetric long filter);
[0311] In the third step 1003, when it is determined that the block edge between the first coding block and the second coding block should be filtered by applying the first filter, the first filter (longer tap filter, or asymmetric filter, or asymmetric tap filter, or asymmetric longer filter) is applied to the values of the samples (i.e., input pixels) near the block edge between the first coding block and the second coding block. When the first coding block has sub-blocks (or the first coding block has sub-block tool, the first coding block is the current block, and the second coding block is the adjacent block of the current block), at most MA sample values of the first coding block adjacent (i.e., vertical) to the block edge for each line are corrected, and at most MB sample values of the second coding block adjacent (i.e., vertical) to the block edge for each line are corrected. Or when the second coding block has sub-blocks (or the second coding block has sub-block tool, the second coding block is the current block, and the first coding block is the adjacent block of the current block), at most MA sample values of the second coding block adjacent (i.e., vertical) to the block edge for each line are corrected, and at most MB sample values of the first coding block adjacent (i.e., vertical) to the block edge for each line are corrected. MA≠MB, especially MA<MB, for example
[0312] MA < MB = 7, for example, MA = 3 and MB = 7, MA = 4 and MB = 7, or MA = 5 and MB = 7.
[0313] In a scenario where the current block has sub-block filters, it is possible to understand that MA and MB may be determined based on the block size, in other words, MA and MB depend on the block size of the respective block. In the implementation, for large blocks, i.e., block size ≥ 32, the maximum number of modified samples may be 7 (corresponding to a long filter). The input pixels correspond to pixel or sample values used for filtering, and the output pixels correspond to the modified sample values. It should be noted that the input pixels may be consecutive pixels starting at a block edge and perpendicular to the block edge. Also, the output pixels may be consecutive pixels starting at a block edge and perpendicular to the block edge. Details of the deblocking method disclosed earlier can be referenced and will not be repeated here.
[0314] FIG. 11A is a block diagram illustrating another example deblocking method according to techniques described in this disclosure (further details will be described below, eg, with reference to FIGS. 7 and 8).
[0315] In FIG. 11A, another embodiment of the deblocking method is shown.
[0316] In a first step 1101, edges between blocks are determined, including block edges between a first coding block and a second coding block and sub-block edges between sub-blocks of the first coding block or the second coding block, where the first coding block has a block size of M×N or N×M, and the second coding block has a block size of L×T or T×L, where N or T is an even integer greater than a threshold (e.g., 8 or 16). n and;
[0317] In a second step 1102, it is determined whether the block edge between the first coding block and the second coding block should be filtered by applying a first filter (i.e., a longer tap filter, or an asymmetric filter, or an asymmetric tap filter, or an asymmetric long filter), in other words, it is determined whether the block edge between the first coding block and the second coding block is enabled for deblocking by applying a first filter (i.e., a longer tap filter, or an asymmetric filter, or an asymmetric tap filter, or an asymmetric long filter);
[0318] In a second step 1103, if it is determined that the block edge between the first coding block and the second coding block should not be filtered by applying the first filter, a third filter is applied to the values of samples (i.e., input pixels) near the block edge between the first coding block and the second coding block, modifying at most MA sample values of the first coding block adjacent (i.e., perpendicular) to the block edge per line and modifying at most MB sample values of the second coding block adjacent (i.e., perpendicular) to the block edge per line, where MA=MB, for example MA=MB=4.
[0319] It can be understood that the first coding block is the current block and the second coding block is the neighboring block of the current block, or the second coding block is the current block and the first coding block is the neighboring block of the current block.
[0320] The input pixels correspond to the pixel or sample values used for filtering, and the output pixels correspond to the modified sample values. Note that the input pixels can be contiguous pixels starting at a block edge and perpendicular to the block edge. The output pixels can also be contiguous pixels starting at a block edge and perpendicular to the block edge.
[0321] Reference can be made to the details of the exemplary deblocking method disclosed above, which will not be repeated here.
[0322] FIG. 11B is a block diagram illustrating another example deblocking method according to techniques described in this disclosure (further details will be described below, eg, with reference to FIGS. 7 and 8).
[0323] In FIG. 11B, another embodiment of the deblocking method is shown.
[0324] In a first step 1121, edges between blocks are determined, including block edges between a first coding block P and a second coding block Q and sub-block edges between sub-blocks of the first coding block P or the second coding block Q, where the first coding block P has a block size of M×N or N×M, and the second coding block Q has a block size of L×T or T×L, where N or T is an even integer greater than a threshold (e.g., 8 or 16). n and;
[0325] In a second step 1122, it is determined that sub-block edges between sub-blocks of the first coding block P or the second coding block Q should not be filtered, in other words, it is determined that sub-block edges between sub-blocks of the first coding block P or the second coding block Q are disabled for deblocking;
[0326] In a third step 1123, a fourth filter (e.g., a conventional longer tap filter) is applied to the values of samples (i.e., input pixels) near the block edge between the first coding block P and the second coding block Q, modifying at most MA sample values of the first coding block adjacent (i.e., perpendicular) to the block edge and modifying at most MB sample values of the second coding block adjacent (i.e., perpendicular) to the block edge, where MA=MB=7. It can be understood that the first coding block is the current block and the second coding block is the neighboring block of the current block, or the second coding block is the current block and the first coding block is the neighboring block of the current block.
[0327] The input pixels correspond to the pixel or sample values used for filtering, and the output pixels correspond to the modified sample values. Note that the input pixels can be contiguous pixels starting at a block edge and perpendicular to the block edge. The output pixels can also be contiguous pixels starting at a block edge and perpendicular to the block edge.
[0328] FIG. 12 is a block diagram illustrating another exemplary deblocking method according to the techniques described in this disclosure (further details will be described below, for example, with reference to FIGS. 7, 8, 10, 11A, 11B, 12, and 15 and 16).
[0329] Another embodiment of the deblocking method is shown in Fig. 12. In a first step 1201, inter-block edges are determined, including block edges between a first coding block P and a second coding block Q, and sub-block edges between sub-blocks within the first coding block P and / or the second coding block Q, where the first coding block P has a block size of MxN or NxM, and the second coding block Q has a block size of LxT or TxL, where N or T is an even integer greater than a threshold (e.g., 8 or 16). n and;
[0330] In a second step 1202, it is determined that a first set of block edges between the first coding block P and the second coding block Q and sub-block edges between sub-blocks within the first coding block P and / or the second coding block Q should be filtered, and that a second set of sub-block edges between sub-blocks within the first coding block P and / or the second coding block Q should not be filtered;
[0331] In a third step 1203, deblocking filtering is performed on sample values near block edges between the first coding block P and the second coding block Q, and deblocking filtering is performed on sample values near each of a first set of sub-block edges between sub-blocks within the first coding block P and / or the second coding block Q. It can be understood that the first coding block is the current block and the second coding block is the neighboring block of the current block, or the second coding block is the current block and the first coding block is the neighboring block of the current block.
[0332] The input pixels correspond to the pixel or sample values used for filtering, and the output pixels correspond to the modified sample values. Note that the input pixels can be contiguous pixels starting at a block edge and perpendicular to the block edge. The output pixels can also be contiguous pixels starting at a block edge and perpendicular to the block edge.
[0333] As shown in FIG. 16 , the first set of sub-block edges between sub-blocks within the first coding block and / or the second coding block includes (consists of) a plurality of sub-block edges excluding a first sub-block edge and a last sub-block edge between sub-blocks within the first coding block P and / or the second coding block Q, where the first sub-block edge is closest to one of the first coding block P and the second coding block Q, and the last sub-block edge is closest to the other of the first coding block P and the second coding block Q;
[0334] The second set of sub-block edges between sub-blocks within the first coding block and / or the second coding block consists of a first sub-block edge and a last sub-block edge between sub-blocks within the first coding block P and / or the second coding block Q, where the first sub-block edge is closest to one of the first coding block P and the second coding block Q, and the last sub-block edge is closest to the other of the first coding block P and the second coding block Q.
[0335] In a second step 1203, performing deblocking filtering on values of neighboring samples of each of a first set of sub-block edges between sub-blocks of the first coding block P and / or the second coding block Q comprises: applying a fifth filter to values of samples near each of a first set of sub-block edges within the first coding block P and / or the second coding block Q, wherein at most NA sample values on one side of each of the first set of sub-block edges are modified within the first coding block P and / or the second coding block Q and at most NB sample values on the other side of each of the first set of sub-block edges are modified, where NA=NB=4.
[0336] If there are no sub-block edges between sub-blocks within the first coding block P and there are multiple sub-block edges between sub-blocks within the second coding block Q, in a second step 1203, performing deblocking filtering on values of neighboring samples of each of a first set of sub-block edges between sub-blocks within the first coding block P and / or the second coding block Q comprises: When it is decided that the fifth filter should be applied, which is the HEVC deblocking filtering, the following equation:
number
[0337] As shown in FIG. 15 , the first set of sub-block edges between sub-blocks within the first coding block and / or the second coding block includes (consists of) one or more sub-block edges that overlap a 16×16 grid between sub-blocks within the first coding block P and / or the second coding block Q; The second set of sub-block edges between sub-blocks within the first or second coding block includes (consists of) one or more sub-block edges excluding sub-block edges overlapping the 16x16 grid between sub-blocks within the first coding block P and / or the second coding block Q.
[0338] Correspondingly, in a second step 1203, performing deblocking filtering on values of neighbouring samples of each of a first set of sub-block edges between sub-blocks of the first coding block P and / or the second coding block Q comprises: applying a sixth filter to values of samples in the vicinity of each of a first set of sub-block edges within the first coding block P and / or the second coding block Q, wherein at most N A' sample values on one side of each of the first set of sub-block edges are modified within the first coding block P or the second coding block Q and at most N B' sample values on the other side of each of the first set of sub-block edges are modified, where N A' = N B' = 7.
[0339] If there are no sub-block edges between sub-blocks within the first coding block P, but there are multiple sub-block edges between sub-blocks within the second coding block Q (such that the first coding block P has no sub-blocks, but the second coding block Q has sub-blocks), then in the second step 1203, the step of performing deblocking filtering on values of neighboring samples of each of a first set of sub-block edges between sub-blocks within the first coding block P and / or the second coding block Q comprises: The following formula:
number
[0340] In the case where there are multiple sub-block edges between sub-blocks within the first coding block P and multiple sub-block edges between sub-blocks within the second coding block Q, the step of performing deblocking filtering in the second step 1203 on values of neighboring samples of each of a first set of sub-block edges between sub-blocks within the first coding block P and / or the second coding block Q comprises: The following formula:
number
[0341] The deblocking method according to an embodiment further includes determining whether the block edge between the first coding block P and the second coding block Q should be filtered by applying a first filter, and when it is determined that the block edge between the first coding block P and the second coding block Q should be filtered by applying a first filter, including the step of applying the first filter to the values of the samples in the vicinity of the block edge between the first coding block P and the second coding block Q, at most MA sample values of the first coding block adjacent to the block edge per line are corrected, at most MB sample values of the second coding block adjacent to the block edge per line are corrected, or at most MA sample values of the second coding block adjacent to the block edge per line are corrected, and at most MB sample values of the first coding block adjacent to the block edge per line are corrected, where MA ≠ MB, particularly MA < MB, for example, MA = 3 and MB = 7, or MA = 4 and MB = 7, or MA = 5 and MB = 7.
[0342] ]>When a plurality of sub-block edges between the sub-blocks are within the first coding block and a plurality of sub-block edges between the sub-blocks are within the second coding block, the method further comprises: The method includes a step of determining that a block edge between the first coding block and the second coding block should be filtered by applying a second filter, and if it is determined that the block edge between the first coding block and the second coding block should be filtered by applying the second filter, applying the second filter to values near the block edge, wherein MA' sample values of the first coding block adjacent to the block edge are modified, and MB' sample values of the second coding block adjacent to the block edge are modified, where MA'=3 and MB'=3.
[0343] if a sub-block edge between sub-blocks does not lie inside the second coding block, then at most MA sample values of the first coding block adjacent to the block edge per line are modified, and at most MB sample values of the second coding block adjacent to the block edge per line are modified, where MA=3 and MB=7, or MA=4 and MB=7, or MA=5 and MB=7, or If a sub-block edge between sub-blocks does not lie inside the first coding block, then at most MA sample values of the second coding block adjacent to the block edge per line are modified, and at most MB sample values of the first coding block adjacent to the block edge per line are modified, where MA=3 and MB=7, or MA=4 and MB=7, or MA=5 and MB=7.
[0344] The method further comprises determining whether a block edge between the first coding block and the second coding block should be filtered by applying a first filter: - As the first filter decision value, at most DA sample values of the first coding block adjacent to the block edge, DA=4 and - As the second filter decision value, at most DB sample values of the second coding block adjacent to the block edge, DB=4 determining based on
[0345] If there are multiple sub-block edges between sub-blocks within the second coding block Q, the method further comprises: The first formula below:
number
[0346] If there are multiple sub-block edges between sub-blocks within the first coding block P, the method further comprises: The second formula below:
number
[0347] The threshold parameter β is determined based on a quantization parameter QP related to the quantization step size of the multiple samples, or The threshold parameter β is determined based on the quantization parameter QP using a look-up table.
[0348] When there is no sub-block edge between sub-blocks within the first coding block P and there is a sub-block edge between sub-blocks within the second coding block Q, performing deblocking filtering using values of samples near the block edge between the first coding block P and the second coding block Q includes: The following formula:
number
[0349] When there is no sub-block edge between sub-blocks within the first coding block P and there is a sub-block edge between sub-blocks within the second coding block Q, performing deblocking filtering using values of samples near the block edge between the first coding block P and the second coding block Q includes: The following formula:
number
[0350] When there is no sub-block edge between sub-blocks within the first coding block P and there is a sub-block edge between sub-blocks within the second coding block Q, performing deblocking filtering using values of samples near the block edge between the first coding block P and the second coding block Q includes: The following formula:
number
[0351] When there is no sub-block edge between sub-blocks within the first coding block P and there is a sub-block edge between sub-blocks within the second coding block Q, performing deblocking filtering using values of samples near the block edge between the first coding block P and the second coding block Q includes: The following formula:
number
[0352] The deblocking method according to the embodiment further includes the steps of determining whether a block edge between the first coding block P and the second coding block Q should be filtered by applying a first filter; and, if it is determined that the block edge between the first coding block P and the second coding block Q should not be filtered by applying the first filter, applying a third filter to values of samples near the block edge between the first coding block P and the second coding block Q, wherein at most MA sample values of the first coding block adjacent to the block edge per line are modified, and at most MB sample values of the second coding block adjacent to the block edge per line are modified, where MA=MB=4.
[0353] It can be seen that the first, second, third, fourth, fifth, and sixth filters correspond to different filtering of the block edges. In other words, all the different filters use the adjacent samples perpendicular to a given block edge as input and output samples. Furthermore, different filters use different numbers of maximum filtering samples as input and modify different numbers of maximum samples as filter output.
[0354] 13 is a simplified block diagram of an apparatus 1300 that can be used as either or both of the source device 310 and the destination device 320 of FIG. 3, according to an example embodiment. The apparatus 1300 can implement the techniques of the present application. The apparatus 1300 can be in the form of a computing system including multiple computing devices, or in the form of a single computing device, such as a mobile phone, tablet computer, laptop computer, notebook computer, desktop computer, etc.
[0355] The processor 1302 of the apparatus 1300 may be a central processing unit. Alternatively, the processor 1302 may be any other type of device or devices, now existing or later developed, that are capable of manipulating or processing information. While the disclosed implementations may be implemented using a single processor, e.g., processor 1302, as shown, advantages in speed and efficiency may be achieved using more than one processor.
[0356] The memory 1304 in the device 1300 may be a read-only memory (ROM) device or a random access memory (RAM) device in some implementations. Any other suitable type of storage device may be used as the memory 1304. The memory 1304 may be used to store code and / or data 1306 accessed by the processor 1302 using the bus 1312. The memory 1304 may also be used to store an operating system 1308 and application programs 1310. The application programs 1310 may include at least one program that enables the processor 1302 to perform the methods described herein. For example, the application programs 1310 may include applications 1 through N and may further include a video coding application that performs the methods described herein. The device 1300 may also include additional memory in the form of secondary storage 1314, which may be, for example, a memory card used with a mobile computing device. Because video communication sessions can contain a significant amount of information, they can be stored in whole or in part in storage 1314 and loaded into memory 1304 as needed for processing.
[0357] The device 1300 may also include one or more output devices, such as a display 1318. The display 1318, in one example, may be a touch-sensitive display that combines a display with touch-sensing elements operable to sense touch input. The display 1318 may be coupled to the processor 1302 via the bus 1312. Other output devices that enable a user to program or otherwise use the device 1300 may be provided in addition to, or instead of, the display 1318. If the output device is or includes a display, the display may be implemented in a variety of ways, including a liquid crystal display (LCD), a cathode ray tube display (CRT), a plasma display, or a light emitting diode (LED) display, such as an organic LED display.
[0358] The device 1300 may also include or be in communication with an image sensing device 1320, such as a camera or any other existing or later developed image sensing device 1320 capable of sensing images, such as images of the user-operated device 1300. The image sensing device 1320 may be positioned such that it is pointed toward the user-operated device 1300. In one example, the position and optical axis of the image sensing device 1320 may be configured such that the field of view includes the area immediately adjacent to the display 1318 and from which the display 1318 is viewable.
[0359] The device 1300 may also include or be in communication with a sound sensing device 1322, such as a microphone or any other existing or later developed sound sensing device capable of sensing sound in the vicinity of the device 1300. The sound sensing device 1322 may be positioned such that it is pointed toward the user-operated device 1300 and configured to receive sounds, such as speech or other utterances, made by the user while the user is operating the device 1300.
[0360] While FIG. 13 depicts the processor 1302 and memory 1304 of the device 1300 as integrated into a single device, other configurations may be utilized. The operations of the processor 1302 may be distributed across multiple machines (each machine having one or more processors), which may be coupled directly or through a local area or other network. The memory 1304 may be distributed across multiple machines, such as a network-based memory or memory within multiple machines that perform the operations of the device 1300. While shown here as a single bus, the bus 1312 of the device 1300 may include multiple buses. Furthermore, the secondary storage 1314 may be directly coupled to other components of the device 1300 or may be accessed over a network, and may include a single integrated unit such as a memory card or multiple units, such as multiple memory cards. Thus, the device 1300 may be implemented in a wide variety of configurations.
[0361] 14 is a schematic diagram of an exemplary coding device 1400 for video coding according to an embodiment of the present disclosure. Coding device 1400 is suitable for implementing the disclosed embodiments as described herein. In an embodiment, coding device 1400 may be a decoder, such as video decoder 200 of FIG. 2, or an encoder, such as video encoder 100 of FIG. 1. In an embodiment, coding device 1400 may be one or more components of video decoder 200 of FIG. 2 or video encoder 100 of FIG. 1, as described above.
[0362] Coding device 1400 includes an ingress port 1420 and a receiver unit (Rx) 1410 for receiving data; a processor, logic unit, or central processing unit (CPU) 1430 for processing data; a transmitter unit (Tx) 1440 and an egress port 1450 for transmitting data; and a memory 1460 for storing data. Coding device 1400 may also include optical-electrical (OE) and electro-optical (EO) components coupled to ingress port 1420, receiver unit 1410, transmitter unit 1440, and egress port 1450 for inputting and outputting optical or electrical signals. Coding device 1400 may also include wireless transmitters and / or receivers in some examples.
[0363] The processor 1430 is implemented in hardware and software. The processor 1430 may be implemented as one or more CPU chips, cores (e.g., multi-core processors), field programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), and digital signal processors (DSPs). The processor 1430 communicates with the ingress port 1420, the receiver unit 1410, the transmitter unit 1440, the egress port 1450, and the memory 1460. The processor 1430 includes a coding module 1414. The coding module 1414 implements the disclosed embodiments described above. For example, the coding module 1414 implements, processes, prepares, or provides various coding operations. Thus, the inclusion of the coding module 1414 provides substantial improvements to the functionality of the coding device 1400 and provides transformations of the coding device 1400 into different states. Alternatively, the coding module 1414 may be implemented as instructions stored in memory 1460 (eg, as a computer program product stored on a non-transitory medium) and executed by the processor 1430 .
[0364] Memory 1460 may include one or more disks, tape drives, and solid-state drives, and may be used as an overflow data storage device to store programs when such programs are selected for execution and to store instructions and data loaded during the execution of the programs. Memory 1460 may be volatile and / or nonvolatile and may be read-only memory (ROM), random access memory (RAM), ternary content addressable memory (TCAM), and / or static random access memory (SRAM). Coding device 1400 may also include input / output (I / O) devices for interacting with an end user. For example, coding device 1400 may include a display such as a monitor for visual output, speakers for audio output, and a keyboard / mouse / trackball for user input.
[0365] The present invention has been described in connection with various embodiments herein. However, other variations to the disclosed embodiments can be understood and effected by those skilled in the art in practicing the claimed invention, from a study of the drawings, the disclosure, and the appended claims. In the claims, the word "comprising" does not exclude other elements or steps, and the indefinite article "a" or "an" does not exclude a plurality. A single processor or other unit may fulfill the functions of several items recited in the claims. The mere fact that certain items are commonly recited in different dependent claims does not indicate that a combination of these items could not be advantageously utilized. A computer program may be stored / distributed on a suitable medium, such as an optical storage medium or a solid-state medium, supplied together with or as part of other hardware, or in other forms, such as via the Internet or other wired or wireless communication systems.
[0366] Whenever the embodiments and descriptions refer to the term "memory," the term "memory" shall be understood to mean and / or include magnetic disks, optical disks, read-only memory (ROM), random access memory (RAM), etc. [enumeration of all possible memories] unless expressly stated otherwise.
[0367] Whenever the embodiments and descriptions refer to the term "network," unless expressly stated otherwise, the term "network" shall be understood to include and / or include... [enumeration of all possible memories].
[0368] Those skilled in the art will appreciate that the "blocks" ("units") (methods and apparatus) of the various figures represent or describe functionality of embodiments of the present invention (not necessarily individual "units" in hardware or software), and thus equally describe functions or features of method embodiments (units = steps) in addition to apparatus embodiments.
[0369] The term "unit" is used merely for purposes of illustrating the functionality of an encoder / decoder embodiment and is not intended to limit the present disclosure.
[0370] In some embodiments provided herein, it should be understood that the disclosed systems, devices, and methods may be realized in other ways. For example, the described device embodiments are merely exemplary. For example, the division of units is merely a logical and functional division, and other divisions may be used in actual implementation. For example, multiple units or components may be combined or integrated into another system, or some features may be omitted or not implemented. In addition, the shown or described mutual couplings, direct couplings, or communication connections may be realized by using some interfaces. Indirect couplings or communication connections between devices or units may be implemented electronically, mechanically, or in other forms.
[0371] The units described as separate parts may or may not be physically separate, and the parts shown as units may or may not be physical units, located in one location or distributed over multiple network units. Some or all of the units may be selected according to actual needs to achieve the objectives of the solutions of the embodiments.
[0372] Furthermore, the functional units in the embodiments of the present invention may be integrated into one processing unit, or each unit may exist physically alone, or two or more units may be integrated into one unit.
[0373] Embodiments of the present invention may also include apparatus, such as an encoder and / or decoder, that include processing circuitry configured to perform any of the methods and / or processes described herein.
[0374] Embodiments may be implemented as hardware, firmware, software, or any combination thereof. For example, the encoder / encoding or decoder / decoding functions may be performed by processing circuitry, such as a processor, microcontroller, digital signal processor (DSP), field programmable gate array (FPGA), application specific integrated circuit (ASIC), etc., with or without firmware or software.
[0375] The functionality of the encoder 100 (and corresponding encoding method 100) and / or decoder 200 (and corresponding decoding method 200) may be realized by program instructions stored on a computer-readable medium, which, when executed, cause a processing circuit, computer, processor, etc. to perform the steps of the encoding and / or decoding method. The computer-readable medium may be any medium, including non-transitory storage media on which programs are stored, such as Blu-ray discs, DVDs, CDs, USB (flash) drives, hard disks, server storage available over a network, etc.
[0376] An embodiment of the present invention includes a computer program comprising program code for performing any of the methods described herein when the computer program runs on a computer.
[0377] An embodiment of the present invention is or includes a computer readable medium containing program code that, when executed by a processor, causes a computer system to perform any of the methods described herein.
[0378] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which correspond to tangible media such as data storage media, or communication media, including any medium that facilitates transfer of a computer program from one place to another, for example, according to a communications protocol. In this manner, computer-readable media may generally correspond to (1) tangible computer-readable storage media that is non-transitory, or (2) communication media such as a signal or carrier wave. Data storage media may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and / or data structures for implementing the techniques described in this disclosure. A computer program product may include computer-readable media.
[0379] For example, and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, other magnetic disk storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included within the definition of medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transitory media, but rather are directed to non-transitory, tangible storage media. Disk and disk, as used herein, include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs, where disks typically reproduce data magnetically and disks reproduce data optically with a laser. Combinations of the above should also be included within the scope of computer-readable media.
[0380] The instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term "processor" as used herein may refer to any of the foregoing structures, or any other structure suitable for implementing the techniques described herein. Furthermore, in some aspects, the functionality described herein may be provided in dedicated hardware and / or software modules configured for encoding and decoding, or may be incorporated into a combined codec. Alternatively, the techniques may be implemented entirely in one or more circuits or logic elements.
[0381] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC), or a set of ICs (e.g., a chip set). Various components, modules, or units are described in this disclosure to highlight functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require implementation by different hardware units. Rather, as described above, the various units may be combined within a codec hardware unit or may be provided by a collection of interoperable hardware units, including one or more processors, as described above, along with appropriate software and / or firmware.
[0382] Although several embodiments have been provided in this disclosure, it should be understood that the disclosed systems and methods may be embodied in many other specific forms without departing from the spirit or scope of the disclosure. The present examples should be considered illustrative and not restrictive, and the intention is not to be limited to the given details of the present application. For example, various elements or components may be combined or integrated into another system, or certain features may be omitted or not implemented.
[0383] Furthermore, techniques, systems, subsystems, and methods described and illustrated individually or separately in various embodiments can be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items illustrated or discussed as coupled or directly coupled or in communication with each other can also be indirectly coupled or communicate through some interface, device, or intermediate component, whether electrical, mechanical, or otherwise. Other examples of modifications, substitutions, and alterations will be ascertainable by those skilled in the art and could be made without departing from the spirit and scope of the present disclosure.
Claims
1. 1. A deblocking filter apparatus for deblocking a block edge between a first image block and a second image block, comprising: a memory for storing instructions; and a processor in communication with the memory; and when executing the instructions, the processor: determining the value of MA' to be 5 if the first image block includes sub-blocks, where the first image block has a block size of M*N, M and N represent the width and height of the first image block respectively, N is an even number 2 n greater than 16, and n is a positive integer; determining a value of MB' to be 5 if the second image block includes sub-blocks, where the second image block has a block size of L*T, where L and T represent the width and height of the second image block respectively, and T is an even number 2 n greater than 16; modifying values of at most MA' samples of the first image block as first output values, the at most MA' samples being in a line perpendicular to the block edge and the at most MA' samples being adjacent to the block edge; and modifying values of at most MB' samples of the second image block as second output values, wherein the at most MB' samples are in a line perpendicular to the block edge and the at most MB' samples are adjacent to the block edge; a deblocking filter device configured to:
2. 10. The deblocking filter apparatus of claim 1, wherein when executing the instructions, the processor further: Whether the block edges should be filtered or not the values of at most DA′ samples of the first image block as a first decision value; and the values of at most DB' samples of the second image block as a second judgment value wherein the at most DA' samples are on a line perpendicular to the block edge and the at most DA' samples are adjacent to the block edge, the at most DB' samples are on a line perpendicular to the block edge and the at most DB' samples are adjacent to the block edge, and DA' and DB' are integers.
3. 3. The deblocking filter device according to claim 2, DA'=MA'+1 and DB'=MB'+1 , a deblocking filter device.
4. 2. The deblocking filter device according to claim 1, wherein, when the block edge is a horizontal block edge, a direction along a height N of the first image block is perpendicular to the block edge, a direction along a height T of the second image block is perpendicular to the block edge, and both the heights of the first and second image blocks are an even number 2 greater than 16. n , a deblocking filter device.
5. 2. The deblocking filter device of claim 1, wherein the second image block is a current block and the first image block is a block in a neighborhood of the current block.
6. 2. The deblocking filter apparatus of claim 1, wherein the first image block and the second image block are transform blocks.
7. 1. A method for deblocking a block edge between a first image block and a second image block by a coding device, comprising: determining the value of MA' to be 5 if the first image block includes sub-blocks, where the first image block has a block size of M*N, M and N represent the width and height of the first image block respectively, N is an even number 2 n greater than 16, and n is a positive integer; determining a value of MB' to be 5 if the second image block includes sub-blocks, where the second image block has a block size of L*T, where L and T represent the width and height of the second image block respectively, and T is an even number 2 n greater than 16; modifying values of at most MA' samples of the first image block as first output values, the at most MA' samples being in a line perpendicular to the block edge and the at most MA' samples being adjacent to the block edge; and modifying values of at most MB' samples of the second image block as second output values, wherein the at most MB' samples are in a line perpendicular to the block edge and the at most MB' samples are adjacent to the block edge; A method comprising:
8. 8. The method of claim 7, further comprising determining whether the block edges should be filtered by: the values of at most DA′ samples of the first image block as a first decision value; and the values of at most DB' samples of the second image block as a second judgment value wherein the at most DA' samples are on a line perpendicular to the block edge, the at most DA' samples are adjacent to the block edge, the at most DB' samples are on a line perpendicular to the block edge, and the at most DB' samples are adjacent to the block edge, and DA' and DB' are integers.
9. 9. The method of claim 8, DA'=MA'+1 and DB'=MB'+1 That's the method.
10. 8. The method of claim 7, wherein when the block edge is a horizontal block edge, a direction along a height N of the first image block is perpendicular to the block edge, a direction along a height T of the second image block is perpendicular to the block edge, and both the heights of the first and second image blocks are an even number 2 greater than 16. n That's the method.
11. 8. The method of claim 7, wherein the second image block is a current block and the first image block is a block in the neighborhood of the current block.
12. The method of claim 7 , wherein the first image block and the second image block are transform blocks.
13. 1. A deblocking filter apparatus for deblocking a block edge between a first image block and a second image block, comprising: a memory for storing instructions; and a processor in communication with the memory; and when executing the instructions, the processor: determining a maximum filter length MA' to be 5 if the first image block includes sub-blocks, where the first image block has a block size of M*N, M and N represent the width and height of the first image block, respectively, N is an even number 2 n greater than 16, and n is a positive integer; determining a maximum filter length MB' to be 5 if the second image block includes sub-blocks, where the second image block has a block size of L*T, where L and T represent the width and height of the second image block, respectively, and T is an even number 2 n greater than 16; modifying values of samples of the first image block based on the maximum filter length MA′, wherein the samples of the first image block are on a line perpendicular to the block edge and the samples of the first image block are adjacent to the block edge; and modifying values of samples of the second image block based on the maximum filter length MB', wherein the samples of the second image block are on a line perpendicular to the block edge and the samples of the second image block are adjacent to the block edge; a deblocking filter device configured to:
14. 14. A deblocking filter apparatus according to claim 13, wherein the maximum filter length MA' is associated with the first image block and the maximum filter length MB' is associated with the second image block.
15. 14. The deblocking filter apparatus of claim 13, wherein the second image block is a current block and the first image block is a block in a neighborhood of the current block.
16. 14. The deblocking filter apparatus of claim 13, wherein the first image block and the second image block are transform blocks.
17. 1. A deblocking method for deblocking a block edge between a first image block and a second image block by a coding device, comprising: determining a maximum filter length MA' to be 5 if the first image block includes sub-blocks, where the first image block has a block size of M*N, M and N represent the width and height of the first image block, respectively, N is an even number 2 n greater than 16, and n is a positive integer; determining a maximum filter length MB' to be 5 if the second image block includes sub-blocks, where the second image block has a block size of L*T, where L and T represent the width and height of the second image block, respectively, and T is an even number 2 n greater than 16; modifying values of samples of the first image block based on the maximum filter length MA′, wherein the samples of the first image block are on a line perpendicular to the block edge and the samples of the first image block are adjacent to the block edge; and modifying values of samples of the second image block based on the maximum filter length MB', wherein the samples of the second image block are on a line perpendicular to the block edge and the samples of the second image block are adjacent to the block edge; A method comprising:
18. 1. A non-transitory computer-readable storage medium storing computer instructions that, when executed by one or more processors, cause the one or more processors to perform a process for deblocking a block edge between a first image block and a second image block in image encoding or image decoding, the process comprising: determining a maximum filter length MA' to be 5 if the first image block includes sub-blocks, where the first image block has a block size of M*N, M and N represent the width and height of the first image block, respectively, N is an even number 2 n greater than 16, and n is a positive integer; determining a maximum filter length MB' to be 5 if the second image block includes sub-blocks, where the second image block has a block size of L*T, where L and T represent the width and height of the second image block, respectively, and T is an even number 2 n greater than 16; modifying values of samples of the first image block based on the maximum filter length MA′, wherein the samples of the first image block are on a line perpendicular to the block edge and the samples of the first image block are adjacent to the block edge; and modifying values of samples of the second image block based on the maximum filter length MB', wherein the samples of the second image block are on a line perpendicular to the block edge and the samples of the second image block are adjacent to the block edge; a storage medium.
Citation Information
Patent Citations
A method for filter control and a filtering control device
WO2012096614A2
Deblocking filtering control
WO2012118421A1
Efficient rounding for deblocking
WO2013064654A1