Apparatus and method for deblocking filter in video coding
By adopting improved in-loop deblocking edge filtering technology in video encoding, and using available line buffers to adjust filtering decisions and processes, the block edge art ifacts problem in the prior art is solved, achieving more efficient block edge deblocking effect and computing efficiency.
Patent Information
- Application Number
- JP2024227606
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2018-11-15
- Filing Date
- 2024-12-24
- Publication Date
- 2025-04-15
AI Technical Summary
In the existing video encoding technology, obvious edge art ifacts are prone to appear at the edge of the block, and the traditional filtering technology for deblocking edges is not efficient.
An improved in-loop deblocking edge filtering device and method is used that utilizes available row buffers for deblocking edge filtering, and optimizes the filtering effect according to the size of the row buffer by adjusting the filtering decision and filtering process.
Improves the efficiency of block edge removal and reduces computational complexity, especially in hardware implementation, and significantly improves the quality and efficiency of video encoding.
Smart Images

Figure 2025063069000001_ABST
Abstract
Description
[Technical field]
[0001] FIELD OF THE PRESENT EMBODIMENTS The present invention relates to the field of picture processing, in particular to video picture coding, and more particularly to a deblocking filter device and method for filtering a reconstructed video picture, as well as encoding and decoding devices comprising such a deblocking filter device. [Background technology]
[0002] Video coding (video encoding and decoding) is used in a wide range of digital imaging applications, such as digital TV broadcasting, video transmission over the Internet and mobile networks, real-time conversation applications such as video chat, video conferencing, DVDs and Blu-ray® discs, video content acquisition and editing systems, and camcorders for security applications.
[0003] 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 and have formed the basis for new video coding standards. One of the goals of most video coding standards has been to achieve a reduction in bit rate compared to previous standards without sacrificing picture quality. Further video coding standards include MPEG-1 video, MPEG-2 video, ITU-T H.262 / MPEG-2, ITU-T H.263, ITU-T H.264 / MPEG4, 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 of these standards, such as scalability and / or three-dimensional (3D) extensions.
[0004] A common problem with block-based image coding schemes is that edge artifacts may appear along block edges. These artifacts are due to the independent coding of coding blocks. These edge artifacts are often easily visible to the user's eye. The goal of block-based image coding is to reduce the edge artifacts below a threshold visibility. This is achieved by performing deblocking filtering. Such deblocking filtering is performed at the decoding side to remove visible edge artifacts, and at the encoding side to completely prevent edge artifacts from being coded into the image.
[0005] Therefore, there is a need for an improved in-loop deblocking filter apparatus and method that provides more efficient removal of block artifacts. Summary of the Invention [Means for solving the problem]
[0006] In view of the above problems, the present invention aims to improve the conventional deblocking filtering. The present invention has an objective to provide a deblocking filter device, an encoder, a decoder and a corresponding method that can perform deblocking filtering using available row buffers. Moreover, the deblocking should be efficient.
[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. Particular embodiments are outlined in the accompanying independent claims, further embodiments are outlined in the dependent claims.
[0008] According to a first aspect of the present invention, there is provided a device for use in an image encoder and / or an image decoder for deblocking block edges between image blocks, the block edges including horizontal block edges between a first image block and a second image block, the first image block has a block size SA in the vertical direction, the second image block has a block size SB in the vertical direction, the vertical direction being perpendicular to the horizontal block edge, the device, when the horizontal block edge overlaps with a horizontal coding tree block (CTB) boundary (or in response to a determination that the horizontal block edge overlaps with a horizontal coding tree block (CTB) boundary), - modifies the values of up to MA samples of the first image block as a first filter output value (or a first set of filter output values), where up to MA samples are perpendicular to the horizontal block edge and obtained from a column of the first image block adjacent thereto, - modifies the values of up to MB samples of the second image block as a second filter output value (or a second set of filter output values), where up to MB samples are perpendicular to the horizontal block edge and obtained from a column of the second image block adjacent thereto, and is configured with a deblocking filter, the first image block is a block above the CTB boundary, and the second image block is a block below the CTB boundary, MA≠MB (such as MA<MB), and MA is determined based at least on the row buffer size of the row buffer associated with the CTB boundary. In other words, MA depends on (or is based on, or associated with) the row buffer size of the row buffer associated with the CTB boundary. The row buffer size is the amount of pixels that need to be stored in memory for CTU-based decoding (e.g., a hardware decoder). In one example, the row buffer size for a luma block (or luma component) is 4 rows, and the row buffer size for a chroma block (or chroma component) is 2 rows.
[0009] It may be understood that MA may be understood as the maximum filter length for a first image block, and MB may be understood as the maximum filter length for a second image block.
[0010] The second image block is the current block, and the first image block P is a neighboring block of the current block, and correspondingly, in the second image block, for each row of input samples that are perpendicular to the horizontal block edge and adjacent, up to MB samples are modified to generate an output filtered sample, and in the first image block, for each row of input samples that are perpendicular to the horizontal block edge and adjacent, up to MA samples are modified to generate an output filtered sample. In one example, SA and SB are 32 or more. In another example, SA (e.g., the height of the first image block) is 16 or more, and SB (e.g., the height of the second image block) is 32 or more. In another example, SA or SB (e.g., the height of each image block) is 8 or more. SA is an even integer 2. n1 and SB is an even integer 2 n2 Note that n1 and n2 may be the same or different from each other.
[0011] It should be noted that the terms "block", "coding block", or "image block" are used in this disclosure, which may apply to transform unit (TU), prediction unit (PU), coding unit (CU), etc. In VVC, generally, transform units and coding units are mostly aligned, except for a few scenarios where TU tiling or sub-block transform (SBT) is used. It may be 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.
[0012] The present invention functions with respect to the luma horizontal edge. For the luma horizontal edge, it is confirmed whether the height of the first or second coding block (the first or second image block is a luma block) is 32 or more (for example, 32 or 64). For the luma horizontal edge, the height of the luma block is considered for luma blocks with height ≧ 32, and a long-tap filter (i.e., a long filter) is applied.
[0013] The present invention also functions with respect to the chroma horizontal edge. For the chroma horizontal edge, it is confirmed whether the height of the first or second coding block (the first or second image block is a chroma block) is 8 samples or more (for example, 8 or 16). For the chroma horizontal edge, the height of the chroma block is considered for chroma blocks with height ≧ 8, and a long-tap filter (i.e., a long filter) is applied.
[0014] In the present disclosure, in response to the determination that the horizontal block edge overlaps with the horizontal coding tree block (CTB) boundary, the deblocking filter is a filter such that the MB samples are modified on one side (i.e., the lower side) of the horizontal block edge (CU edge or TU edge), while the MA samples are modified on the other side (i.e., the upper side) of the horizontal block edge (CU edge or TU edge), where MA ≠ MB, and in particular MA < MB, for example MA = 3 and MB = 7. The deblocking filter can be an asymmetric filter that modifies a different number of samples on both sides of the horizontal block edge (e.g., CU edge or TU edge).
[0015] It can be understood that the deblocking filter may be an asymmetric filter in the present disclosure. Further, the terms "long-tap filter", "longer-tap filter", or "asymmetric tap filter" or "long asymmetric filter" or "asymmetric filter" may be interchangeable with each other in the present disclosure.
[0016] Accordingly, an improved in-loop deblocking filter device is provided that enables more efficient removal of blocking artifacts. This enables treating the two sides of a horizontal block edge differently, i.e., enabling the filtering decision and the filtering to be adjusted according to the available line buffer, and thus this results in optimal subjective quality.
[0017] In a possible implementation of the method according to the first aspect itself, the deblocking filter further, when a horizontal block edge overlaps a horizontal coding tree block (CTB) boundary (or in response to a determination that a horizontal block edge overlaps a CTB boundary), - uses the values of up to DA samples of a first image block as a first filter decision value, where up to DA samples are obtained from the column of the first adjacent image block that is vertical with respect to the horizontal block edge, - uses the values of up to DB samples of a second image block as a second filter decision value, where up to DB samples are obtained from the column of the second adjacent image block that is vertical with respect to the horizontal block edge, and is configured such that DA≠DB (DA < DB), and DA is determined based on the line buffer size of the line buffer associated with the CTB boundary.
[0018] In the present disclosure, in response to a determination that a horizontal block edge overlaps a horizontal coding tree block (CTB) boundary, the deblocking filter is also a filter that uses DA samples for filter decision on one side (i.e., the upper side) of the horizontal block edge and uses DB samples for filter decision on the other side (i.e., the lower side) of the horizontal block, where DA≠DB, and in particular DA < DB, for example DA = 4 and DB = 8. Generally, DA = MA + 1 and DB = MB + 1. The deblocking filter can also be an asymmetric filter that uses different numbers of samples on both sides of a block edge (e.g., a CU edge or a TU edge).
[0019] In any preceding implementation of the first aspect or a possible implementation of the method according to the first aspect itself, if the row buffer has a row buffer size of X rows, then for the first image block, MA=X-1, where X is a positive integer.
[0020] In any preceding implementation of the first aspect or a possible implementation of the method according to the first aspect itself, if the row buffer has a row buffer size of X rows, then for a first image block, DA=X and MA=X-1, where X is a positive integer.
[0021] In any preceding implementation of the first aspect or a possible implementation of the method according to the first aspect itself, when the first image block and the second image block are chroma blocks, the row buffer has a row buffer size of 2 rows, or When the first image block and the second image block are luma blocks, the row buffer has a row buffer size of 4 rows.
[0022] In any preceding implementation of the first aspect or a possible implementation of the method according to the first aspect itself, if a row buffer associated with a CTB boundary has a row buffer size of X rows, Sample p of the first image block i is used as a padded value to replace other samples that belong to the first image block and are outside the row buffer, where i=X−1.
[0023] Sample p of the first image block i is the Xth sample in the column that is perpendicular to and adjacent to the horizontal block edge, and is also the outermost sample allowed to be stored in the row buffer associated with the CTB boundary (such as p3 shown in FIG. 17 or p1 shown in FIG. 18 or p5 shown in FIG. 16B).
[0024] In any preceding implementation of the first aspect or a possible implementation of the method according to the first aspect itself, the sample p of the first image block is iThe filter coefficients of are taken from the sample p i is determined in such a way that it is used as a padded value to replace other samples that belong to the first image block and are outside the row buffer.
[0025] This means that the original filter decision and filtering process do not need to be modified since the padded samples can be treated as available samples, leading to a minimal increase in computational complexity, especially in hardware.
[0026] In any preceding implementation of the first aspect or a possible implementation of the method according to the first aspect itself, the sample p of the first image block is i The filter coefficients associated with sample p i is used as a padded value, and the sample p i is the outermost sample allowed to be stored in the row buffer that belongs to the first image block and is associated with the CTB boundary.
[0027] For example, sample p i The number of times that is used as a padded value is 2, so that the sample p i The filter coefficient associated with sample p i This is because it is counted.
[0028] In any of the preceding implementations of the first aspect or a possible implementation of the method according to the first aspect itself, when the row buffer has a row buffer size of 2 rows, the sample p i is sample p1 (e.g., the sequence contains [p0p1p2...], where p1 is the second element in the sequence), and the filter coefficient associated with sample p1 is First filter output value of output Sample p0' About 3. The formula p0'=Clip3(p0-t C , p0+tC , (3*p1+2*p0+q0+q1+q2+4)>>3)(8-1151) for reference.
[0029] In any of the preceding implementations of the first aspect or a possible implementation of the method according to the first aspect itself, when the row buffer has a row buffer size of 2 rows, the sample p i is sample p1 (e.g., the sequence contains [p0p1p2...], where p1 is the second element in the sequence), and the filter coefficient associated with sample p1 is Second filter output value of output Sample q0' About 2. The formula q0'=Clip3(q0-t C , q0+t C , (2*p1+p0+2*q0+q1+q2+q3+4)>>3)(8-1154) for reference.
[0030] In any preceding implementation of the first aspect or a possible implementation of the method according to the first aspect itself, when both the first image block and the second image block are luma blocks and SB and SA are 32 or more, MB=7 and MA=3; or When both the first image block and the second image block are luma blocks, and SB is greater than or equal to 32 and SA is greater than or equal to 16, then MB=7 and MA=3.
[0031] It may be understood that SA may be different from SB, or SA may be the same as SB. In other words, SB and SA may be the same value, or SB and SA may be different values, for example, SA is 32 and SB is 64. For example, SA is 16 and SB is 32.
[0032] In any preceding implementation of the first aspect or a possible implementation of the method according to the first aspect itself, when both the first image block and the second image block are luma blocks and SB and SA are 32 or more, DB=8 and DA=4; or When both the first image block and the second image block are luma blocks, and SB is greater than or equal to 32 and SA is greater than or equal to 16, then DB=8 and DA=4.
[0033] It can be understood that SA may be different from SB, or SA may be the same as SB. In other words, SB and SA may be the same value, or SB and SA may be different values, for example, SA is 32 and SB is 64. For example, SA is 16 and SB is 32.
[0034] In any preceding implementation of the first aspect or a possible implementation of the method according to the first aspect itself, when the first image block and the second image block are chroma blocks and SA and SB are 8 or greater, MB=3 and MA=1.
[0035] It can be understood that SA may be different from SB, or SA may be the same as SB. In other words, SB and SA may be the same value, or SB and SA may be different values, for example, SA is 8 and SB is 8. For example, SA is 8 and SB is 16.
[0036] In any preceding implementation of the first aspect or a possible implementation of the method according to the first aspect itself, when the first image block and the second image block are chroma blocks and SB and SA are 8 or greater, DB=4 and DA=2.
[0037] It can be understood that SA may be different from SB, or SA may be the same as SB. In other words, SB and SA may be the same value, or SB and SA may be different values, for example, SA is 8 and SB is 8. For example, SA is 8 and SB is 16.
[0038] In any preceding implementation of the first aspect or a possible implementation of the method according to the first aspect itself, the second image block is a current image block and the first image block is a neighboring image block adjacent to the current image block.
[0039] In any preceding implementation of the first aspect or a possible implementation of the method according to the first aspect itself, the sample p of the first image block is i is the luma sample, or the sample p of the first image block i is the chroma sample, where i can be in the range {0, 1, 2, ..., SA-1}.
[0040] Similarly, sample q of the second image block j is the luma sample, or the sample q of the second image block j are the chroma samples, j in the range {0,1,2,...,SB-1}.
[0041] In particular, p i denotes an arbitrary sample in a column of samples of the first image block (say block P) that is perpendicular to and adjacent to the horizontal block edge, and q j represents any sample in a column of samples of a second image block (such as block Q) that is perpendicular to and adjacent to the horizontal block edge, e.g., i,j=0,1,2,...7, or, e.g., i,j=0,1,2,...31.
[0042] In any preceding implementation of the first aspect or a possible implementation of the method according to the first aspect itself, when the first image block and the second image block are chroma blocks, the deblocking filter is configured to determine whether a horizontal block edge overlaps with a horizontal chroma CTB boundary; or When the first image block and the second image block are luma blocks, the deblocking is configured to determine whether a horizontal block edge overlaps a horizontal luma CTB boundary.
[0043] In any preceding implementation of the first aspect or a possible implementation of the method according to the first aspect itself, the deblocking filter is a longer tap filter or an asymmetric filter or an asymmetric tap filter.
[0044] According to a second aspect of the present invention there is provided a device for use in an image encoder and / or image decoder for deblocking block edges between image blocks, the block edges including a horizontal block edge between a first image block and a second image block, the device comprising: the first image block has a block size SA in a vertical direction, and the second image block has a block size SB in a vertical direction, the vertical direction being perpendicular to the horizontal block edge; If a horizontal block edge overlaps a horizontal coding tree block (CTB) boundary (or in response to a determination that a horizontal block edge overlaps a horizontal coding tree block (CTB) boundary), the device: - modifying values of at most MA samples of the first image block as first filter output values, where at most MA samples are taken from columns of the first image block that are perpendicular to and adjacent to the horizontal block edge, where MA=1; - modifying values of up to MB samples of the second image block as second filter output values, where the up to MB samples are taken from columns of the second image block that are perpendicular to and adjacent to the horizontal block edge, where MB=3; The first image block is a chroma block above the CTB boundary, and the second image block is another chroma block below the CTB boundary, where SA and SB are equal to or greater than 8.
[0045] It can be understood that SA may be different from SB, or SA may be the same as SB. In other words, SB and SA may be the same value, or SB and SA may be different values, for example, SA is 8 and SB is 8. For example, SA is 8 and SB is 16.
[0046] According to a third aspect of the present invention there is provided a device for use in an image encoder and / or image decoder for deblocking block edges between image blocks, the block edges including a horizontal block edge between a first image block and a second image block, the device comprising: The first image block has a block size SA in the vertical direction; the second image block has a block size SB in the vertical direction, the vertical direction being perpendicular to the horizontal block edge; If a horizontal block edge overlaps a horizontal coding tree block (CTB) boundary (or in response to a determination that a horizontal block edge overlaps a horizontal coding tree block (CTB) boundary), the device: - using values of up to DA sample values of the first image block as first filter decision values, where up to DA samples are taken from columns of the first image block that are perpendicular to and adjacent to the horizontal block edge, where DA=2; - using values of up to DB samples of the second image block as second filter decision values, where up to DB samples are taken from columns of the second image block that are perpendicular to and adjacent to the horizontal block edge, and where DB=4; The first image block is a chroma block above the CTB boundary, and the second image block is another chroma block below the CTB boundary, where SA and SB are equal to or greater than 8.
[0047] It can be understood that SA may be different from SB, or SA may be the same as SB. In other words, SB and SA may be the same value, or SB and SA may be different values, for example, SA is 8 and SB is 8. For example, SA is 8 and SB is 16.
[0048] According to a fourth aspect of the present invention, there is provided a deblocking method for deblocking block edges between image blocks in image encoding and / or image decoding, the block edges including a horizontal block edge between a first image block and a second image block, the method comprising: The first image block has a block size SA in the vertical direction; the second image block has a block size SB in the vertical direction, the vertical direction being perpendicular to the horizontal block edge; The method further comprises: if (or in response to a determination that) a horizontal block edge overlaps a horizontal coding tree block (CTB) boundary, - modifying values of up to MA samples of the first image block as first filter output values, the up to MA samples being taken from columns of the first image block perpendicular to and adjacent to the horizontal block edge; - modifying values of up to MB samples of the second image block as second filter output values, the up to MB samples being taken from columns of the second image block perpendicular to and adjacent to the horizontal block edge, The first image block is a block above the CTB boundary and the second image block is a block below the CTB boundary; MA≠MB, and MA is determined based on the row buffer size of the row buffer associated with the CTB boundary.
[0049] This allows the filtering decision and the filtering to be adjusted according to the available row buffers, which therefore results in optimal subjective quality.
[0050] In a possible implementation of the method according to the fourth aspect itself, the method further comprises, if the horizontal block edge overlaps a horizontal coding tree block (CTB) boundary (or in response to a determination that the horizontal block edge overlaps a horizontal coding tree block (CTB) boundary), - Using the values of up to DA samples of the first image block as the first filter determination value, where the up to DA samples are vertical with respect to the horizontal block edge and are obtained from the columns of adjacent first image blocks, the step; - Using the values of up to DB samples of the second image block as the second filter determination value, where the up to DB samples are vertical with respect to the horizontal block edge and are obtained from the columns of adjacent second image blocks, the step, and comprising; DA≠DB (DA < DB), and DA is determined based on the row buffer size of the row buffer associated with the CTB boundary.
[0051] In any preceding implementation of the fourth aspect or a possible implementation of the method according to the fourth aspect itself, when the row buffer has a row buffer size of X rows, for the first image block, MA = X - 1, and X is a positive integer.
[0052] In any preceding implementation of the fourth aspect or a possible implementation of the method according to the fourth aspect itself, when the row buffer has a row buffer size of X rows, for the first image block, DA = X and MA = X - 1, and X is a positive integer.
[0053] In any preceding implementation of the fourth aspect or a possible implementation of the method according to the fourth aspect itself, when the first image block and the second image block are chroma blocks, the row buffer has a row buffer size of 2 rows, or When the first image block and the second image block are luma blocks, the row buffer has a row buffer size of 4 rows.
[0054] In any preceding implementation of the fourth aspect or a possible implementation of the method according to the fourth aspect itself, when the row buffer associated with the CTB boundary has a row buffer size of X rows, Sample p of the first image block iis used as a padded value to replace other samples that belong to the first image block and are outside the row buffer, where i=X−1.
[0055] In any of the preceding implementations of the fourth aspect or a possible implementation of the method according to the fourth aspect itself, the sample p of the first image block is i is the Xth sample in the column that is perpendicular to and adjacent to the horizontal block edge, and is also the outermost sample allowed to be stored in the row buffer associated with the CTB boundary.
[0056] In any of the preceding implementations of the fourth aspect or a possible implementation of the method according to the fourth aspect itself, the sample p of the first image block is i The filter coefficients of are taken from the sample p i is determined in such a way that it is used as a padded value to replace other samples that belong to the first image block and are outside the row buffer.
[0057] This means that the original filter decision and filtering process does not need to be modified since the padded samples can be treated as available samples, leading to a minimal increase in computational complexity, especially in hardware.
[0058] In any of the preceding implementations of the fourth aspect or a possible implementation of the method according to the fourth aspect itself, the sample p of the first image block is i The filter coefficients associated with sample p i is used as a padded value (this padded value replaces other samples that belong to the first image block and are outside the row buffer), and the sample p i is the outermost sample allowed to be stored in the row buffer that belongs to the first image block and is associated with the CTB boundary.
[0059] In any of the preceding implementations of the fourth aspect or a possible implementation of the method according to the fourth aspect itself, when the row buffer has a row buffer size of 2 rows, the sample p i is sample p1, and the filter coefficient associated with sample p1 is 3 for the element of the first filter output value.
[0060] In any of the preceding implementations of the fourth aspect or a possible implementation of the method according to the fourth aspect itself, when the row buffer has a row buffer size of 2 rows, the sample p i is sample p1, and the filter coefficient associated with sample p1 is 2 for the element of the second filter output value.
[0061] In any preceding implementation of the fourth aspect or a possible implementation of the method according to the fourth aspect itself, when both the first image block and the second image block are luma blocks and SB and SA are 32 or more, MB=7 and MA=3; or When both the first image block and the second image block are luma blocks, and SB is greater than or equal to 32 and SA is greater than or equal to 16, then MB=7 and MA=3.
[0062] In any preceding implementation of the fourth aspect or a possible implementation of the method according to the fourth aspect itself, when both the first image block and the second image block are luma blocks and SB and SA are 32 or more, DB=8 and DA=4; or When both the first image block and the second image block are luma blocks, and SB is greater than or equal to 32 and SA is greater than or equal to 16, then DB=8 and DA=4.
[0063] In any preceding implementation of the fourth aspect or a possible implementation of the method according to the fourth aspect itself, when the first image block and the second image block are chroma blocks and SA and SB are 8 or greater, MB=3 and MA=1.
[0064] In any preceding implementation of the fourth aspect or a possible implementation of the method according to the fourth aspect itself, when the first image block and the second image block are chroma blocks, and SA and SA are 8 or greater, DB=4 and DA=2.
[0065] In any preceding implementation of the fourth aspect or a possible implementation of the method according to the fourth aspect itself, the second image block is a current image block and the first image block is a neighboring image block adjacent to the current image block.
[0066] In any of the preceding implementations of the fourth aspect or a possible implementation of the method according to the fourth aspect itself, the sample p of the first image block is i is the luma sample, or the sample p of the first image block i is a chroma sample, i belongs to {0,1,2,...,SA-1}.
[0067] In any preceding implementation of the fourth aspect or a possible implementation of the method according to the fourth aspect itself, the method further comprises: determining whether a horizontal block edge overlaps a horizontal chroma CTB boundary when the first image block and the second image block are chroma blocks; or When the first image block and the second image block are luma blocks, the method includes determining whether a horizontal block edge overlaps a horizontal luma CTB boundary.
[0068] In any preceding implementation of the fourth aspect or a possible implementation of the method according to the fourth aspect itself, the deblocking filter is a longer tap filter or an asymmetric filter or an asymmetric tap filter.
[0069] According to a fifth aspect of the present invention, there is provided a deblocking method for deblocking block edges between image blocks in image encoding and / or image decoding, the block edges including a horizontal block edge between a first image block and a second image block, the method comprising: The first image block has a block size SA in the vertical direction; the second image block has a block size SB in the vertical direction, the vertical direction being perpendicular to the horizontal block edge; The method further comprises: if (or in response to a determination that) a horizontal block edge overlaps a horizontal coding tree block (CTB) boundary, - modifying values of up to MA samples of the first image block as first filter output values, where the up to MA samples are taken from columns of the first image block that are perpendicular to and adjacent to the horizontal block edge, MA=1; - modifying values of up to MB samples of the second image block as second filter output values, where the up to MB samples are taken from columns of the second image block that are perpendicular to and adjacent to the horizontal block edge, where MB=3; The first image block is a chroma block above the CTB boundary, and the second image block is another chroma block below the CTB boundary, where SA and SB are equal to or greater than 8.
[0070] According to a fifth aspect of the present invention, there is provided a deblocking method for deblocking block edges between image blocks in image encoding and / or image decoding, the block edges including a horizontal block edge between a first image block and a second image block, the method comprising: The first image block has a block size SA in the vertical direction; the second image block has a block size SB in the vertical direction, the vertical direction being perpendicular to the horizontal block edge; The method further comprises: if (or in response to a determination that) a horizontal block edge overlaps a horizontal coding tree block (CTB) boundary, - using values of up to DA samples of the first image block as first filter decision values, where the up to DA samples are taken from columns of the first image block that are perpendicular to and adjacent to the horizontal block edge, where DA=2; - using values of at most DB samples of the second image block as second filter decision values, where at most DB samples are taken from columns of the second image block that are perpendicular to and adjacent to the horizontal block edge, where DB=4; The first image block is a chroma block above the CTB boundary, and the second image block is another chroma block below the CTB boundary, where SA and SB are equal to or greater than 8.
[0071] According to a sixth aspect of the present invention, there is provided a device for use in an image encoder and / or image decoder for deblocking block edges between image blocks, the block edges including a horizontal block edge between a current image block and a neighbouring image block of the current image block, the current image block being on top of the horizontal block edge, The current image block has a block size SA in the vertical direction, which is perpendicular to the horizontal block edge; If a horizontal block edge overlaps a horizontal coding tree block (CTB) boundary (or in response to a determination that a horizontal block edge overlaps a horizontal coding tree block (CTB) boundary), the device: - determining a maximum filter length MA for the current image block based at least on a row buffer size of a row buffer associated with the CTB boundary; - a deblocking filter configured to modify values of up to MA samples of the current image block as first filter output values, the up to MA samples being obtained from columns of the current image block that are perpendicular to and adjacent to the horizontal block edge.
[0072] MA can be understood as the maximum filter length for the current image block, or as the maximum number of samples to be modified for the current image block in each column perpendicular to and adjacent to the horizontal block edge.
[0073] According to a seventh aspect of the present invention, there is provided a deblocking method for deblocking block edges between image blocks in image encoding and / or image decoding, the block edges including a horizontal block edge between a current image block and a neighbouring image block of the current image block, the current image block being on top of the horizontal block edge; The current image block has a block size SA in the vertical direction, which is perpendicular to the horizontal block edge; The method further comprises: if (or in response to a determination that) a horizontal block edge overlaps a horizontal coding tree block (CTB) boundary, - determining a maximum filter length MA for the current image block based at least on a row buffer size of a row buffer associated with the CTB boundary; - modifying values of up to MA samples of the current image block as first filter output values, where the up to MA samples are taken from columns of the current image block that are perpendicular to and adjacent to the horizontal block edge.
[0074] This allows the filtering decision and the filtering to be adjusted according to the available row buffers, which therefore results in optimal subjective quality.
[0075] In a possible implementation according to the sixth or seventh aspect itself, if the row buffer associated with the CTB boundary has a row buffer size of X rows, then MA=X-1, where X is a positive integer.
[0076] In any preceding implementation of the sixth or seventh aspect or a possible implementation according to the sixth or seventh aspect itself, the deblocking filter may further comprise: - configured to use values of up to DA samples of the current image block as first filter decision values, where up to DA samples are taken from columns of the current image block perpendicular to and adjacent to the horizontal block edge.
[0077] In any preceding implementation of the sixth or seventh aspect or a possible implementation of the sixth or seventh aspect itself, if a row buffer associated with a CTB boundary has a row buffer size of X rows, then DA=X and MA=X-1, where X is a positive integer.
[0078] In any of the preceding implementations of the sixth aspect or a possible implementation of the method according to the sixth aspect itself, when the current image block is a chroma block, the row buffer associated with the CTB boundary has a row buffer size of 2 rows, or When the current image block is a luma block, the row buffer associated with the CTB boundary has a row buffer size of 4 rows.
[0079] In any preceding implementation of the sixth or seventh aspect or a possible implementation according to the sixth or seventh aspect itself, if a row buffer associated with a CTB boundary has a row buffer size of X rows, Current image block sample p i is used as a padding value to replace other samples that belong to the current image block and are outside the row buffer, where i=X-1.
[0080] In any preceding implementation of the sixth or seventh aspect or a possible implementation according to the sixth or seventh aspect itself, the sample p iis the Xth sample in the column that is perpendicular to and adjacent to the horizontal block edge, and is also the outermost sample allowed to be stored in the row buffer associated with the CTB boundary.
[0081] In any preceding implementation of the sixth or seventh aspect or a possible implementation according to the sixth or seventh aspect itself, the sample p i The filter coefficients of are taken from the sample p, which belongs to the current image block and is the outermost sample allowed to be stored in the row buffer. i is determined in such a way that it is used as a padded value to replace other samples that belong to the current image block and are outside the row buffer.
[0082] This ensures that the original filter decision and filtering process does not need to be modified since the padded samples can be treated as available samples, minimizing the increase in computational complexity, especially in hardware.
[0083] In any preceding implementation of the sixth or seventh aspect or a possible implementation according to the sixth or seventh aspect itself, the sample p i The filter coefficients associated with sample p i is used as a padded value, and the sample p i is the outermost sample that belongs to the current image block and is allowed to be stored in the row buffer associated with the CTB boundary. For example, sample p i The number of times that is used as a padded value is 2, so that the sample p i The filter coefficient associated with sample p i This is because it is counted.
[0084] In any of the preceding implementations of the sixth or seventh aspect or a possible implementation according to the sixth or seventh aspect itself, when the row buffer has a row buffer size of 2 rows, the sample p i is sample p1, and the filter coefficient associated with sample p1 is 3.
[0085] In any preceding implementation of the sixth or seventh aspect or a possible implementation according to the sixth or seventh aspect itself, when the current image block is a luma block and SA is 32 or more, MA=3, SA is the height of the current image block, and or When the current image block is a luma block and SA is greater than or equal to 16, then MA=3 and SA is the height of the current image block.
[0086] In any preceding implementation of the sixth or seventh aspect or a possible implementation according to the sixth or seventh aspect itself, when the current image block is a luma block and SA is 32 or more, DA=4 and SA is the height of the current image block; or When the current image block is a luma block and SA is greater than or equal to 16, DA=4 and SA is the height of the current image block.
[0087] In any preceding implementation of the sixth or seventh aspect or a possible implementation according to the sixth or seventh aspect itself, when the current image block is a chroma block and SA is equal to or greater than 8, MA=1; SA is the height of the current image block.
[0088] In any preceding implementation of the sixth or seventh aspect or a possible implementation according to the sixth or seventh aspect itself, when the current image block is a chroma block and SA is equal to or greater than 8, DA=2; SA is the height of the current image block.
[0089] In any preceding implementation of the sixth or seventh aspect or a possible implementation according to the sixth or seventh aspect itself, when the current image block is a chroma block, the deblocking filter is configured to determine whether a horizontal block edge overlaps with a horizontal chroma CTB boundary, or When the current image block is a luma block, the deblocking is configured to determine whether a horizontal block edge overlaps a horizontal luma CTB boundary.
[0090] In any preceding implementation of the sixth or seventh aspect or a possible implementation according to the sixth or seventh aspect itself, the sample p i is the luma sample, or the sample p of the current image block i is a chroma sample, i belongs to {0,1,2,...,SA-1}.
[0091] In any preceding implementation of the sixth or seventh aspect or a possible implementation according to the sixth or seventh aspect itself, the current image block is a transform block, or The current image block is a coding block.
[0092] According to an eighth aspect of the present invention there is provided a device for use in an image encoder and / or an image decoder for deblocking block edges between image blocks, the block edges including a horizontal block edge between a current image block and a neighbouring image block of the current image block, the current image block being on top of the horizontal block edge; The current image block has a block size SA in the vertical direction, which is perpendicular to the horizontal block edge; If a horizontal block edge overlaps a horizontal coding tree block (CTB) boundary (or in response to a determination that a horizontal block edge overlaps a horizontal coding tree block (CTB) boundary), the device: - modifying values of at most MA samples of the current image block as first filter output values, the at most MA samples being taken from columns of the current image block perpendicular to and adjacent to the horizontal block edge; - using values of up to DA samples of the current image block as first filter decision values, the up to DA samples being taken from columns of the current image block perpendicular to and adjacent to a horizontal block edge; When the current image block is a luma block and SA is greater than or equal to 32, MA=3 and DA=4.
[0093] According to a ninth aspect of the present invention there is provided a device for use in an image encoder and / or image decoder for deblocking block edges between image blocks, the block edges including a horizontal block edge between a current image block and a neighbouring image block of the current image block, the current image block being on top of the horizontal block edge; The current image block has a block size SA in the vertical direction, which is perpendicular to the horizontal block edge; If a horizontal block edge overlaps a horizontal coding tree block (CTB) boundary (or in response to a determination that a horizontal block edge overlaps a horizontal coding tree block (CTB) boundary), the device: - modifying values of at most MA samples of the current image block as first filter output values, the at most MA samples being taken from columns of the current image block perpendicular to and adjacent to the horizontal block edge; - using values of up to DA samples of the current image block as first filter decision values, the up to DA samples being taken from columns of the current image block perpendicular to and adjacent to a horizontal block edge; When the current image block is a chroma block and SA is greater than or equal to 8, MA=1 and DA=2.
[0094] According to a tenth aspect of the present invention, there is provided a deblocking method for deblocking block edges between image blocks in image encoding and / or image decoding, the block edges including a horizontal block edge between a current image block and a neighbouring image block of the current image block, the current image block being on top of the horizontal block edge, The current image block has a block size SA in the vertical direction, which is perpendicular to the horizontal block edge; The method further comprises: if (or in response to a determination that) a horizontal block edge overlaps a horizontal coding tree block (CTB) boundary, - modifying values of at most MA samples of the current image block as first filter output values, the at most MA samples being taken from columns of the current image block perpendicular to and adjacent to the horizontal block edge; - using values of up to DA samples of the current image block as first filter decision values, where the up to DA samples are taken from columns of the current image block that are perpendicular to and adjacent to the horizontal block edge, When the current image block is a luma block and SA is greater than or equal to 32, MA=3 and DA=4.
[0095] According to an eleventh aspect of the present invention, there is provided a deblocking method for deblocking block edges between image blocks in image encoding and / or image decoding, the block edges including a horizontal block edge between a current image block and a neighbouring image block of the current image block, the current image block being on top of the horizontal block edge, The current image block has a block size SA in a vertical direction, the vertical direction being perpendicular to a horizontal block edge, and the method further comprises: if the horizontal block edge overlaps a horizontal coding tree block (CTB) boundary (or in response to a determination that the horizontal block edge overlaps a horizontal coding tree block (CTB) boundary), - modifying values of at most MA samples of the current image block as first filter output values, the at most MA samples being taken from columns of the current image block perpendicular to and adjacent to the horizontal block edge; - using values of up to DA samples of the current image block as first filter decision values, where the up to DA samples are taken from columns of the current image block that are perpendicular to and adjacent to the horizontal block edge, When the current image block is a chroma block and SA is greater than or equal to 8, MA=1 and DA=2.
[0096] Note the modified filter condition to use a limited number of rows from block "P" above. Here, the filter coefficients are the samples p j is determined in such a way that {right arrow over (P)} is used as a padded value to replace other samples belonging to the first coding block P and outside the row buffer.
[0097] It may be understood that the samples allowed to be stored in memory from the above CTU are referred to as line buffers. In this disclosure, the line buffer may be, for example, a four-line buffer or a six-line buffer. The line buffer size is the amount of pixels that need to be stored in memory for CTB-based decoding (e.g., a hardware decoder).
[0098] The row buffer size for the luma component is 4 rows and the row buffer size for the chroma component is 2 rows. Therefore, it is possible to reduce the row buffer at the CTU boundary for the first filter (such as the long tap filter) by padding the samples outside the row buffer with the outermost samples present in the row buffer.
[0099] During deblocking (e.g., luma deblocking or chroma deblocking), a first filter is applied to samples on either side of a boundary that belong to a large block, which may be defined as when the width is >= 32 for vertical edges and the height is >= 32 for horizontal edges.
[0100] The samples on each side of the block boundary (perpendicular to the block boundary) are … p8 p7 p6 p5 p4 p3 p2 p1 p0 | q0 q1 q2 q3 q4 q5 q6 q7 q8 … where | represents a block boundary or edge, e.g., | represents a horizontal boundary or edge that overlaps a CTU boundary. Here, i represents the sample values of the first coding block P (block P for short), and q i denotes the sample values of the second coding block Q (block Q for short).
[0101] The filter conditions and expressions can be derived using the same logic as described in the existing technology.
[0102] According to another aspect of the present invention, there is provided a video encoding device (100) for encoding pictures 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.
[0103] This allows for very efficient and accurate encoding of images.
[0104] According to another 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 previously described for processing the reconstructed picture into a filtered reconstructed picture.
[0105] This allows for a particularly accurate and efficient decoding of the image.
[0106] In one example, the first filter (i.e., a long tap filter or an asymmetric filter or an asymmetric tap filter) is a filter that uses four samples of the upper block for a filter decision on one side of a block edge (such as a horizontal block edge that overlaps a coding tree unit (CTU) boundary) and eight samples of the lower block for a filter decision on the other side of the block edge, where three samples of the upper block are modified on one side of the block edge (CU edge) and seven samples of the lower block are modified on the other side of the block edge (CU edge).
[0107] This allows for particularly accurate and efficient deblocking.
[0108] According to another aspect, the invention relates to a coding method for coding an image, comprising a deblocking method as presented above or below.
[0109] This allows for very efficient and accurate encoding of images.
[0110] According to another aspect, the invention relates to a decoding method for decoding an image, comprising a deblocking method as presented above or below.
[0111] This allows for a very efficient and accurate decoding of the image.
[0112] The method according to the fourth aspect of the invention may be performed by an apparatus according to the first aspect of the invention. Further features and implementations of the method according to the fourth aspect of the invention result directly from the functionality of the apparatus according to the first aspect of the invention and its different implementations.
[0113] The method according to the eleventh aspect of the invention may be performed by an apparatus according to the seventh aspect of the invention. Further features and implementations of the method according to the eleventh aspect of the invention result directly from the functionality of the apparatus according to the seventh aspect of the invention and its different implementations.
[0114] According to another aspect, the present invention relates to an apparatus for decoding a video stream, comprising a processor and a memory storing instructions for causing the processor to perform a deblocking method according to any preceding implementation of any preceding aspect or any preceding aspect itself.
[0115] According to another aspect, the present invention relates to an apparatus for encoding a video stream, comprising a processor and a memory storing instructions for causing the processor to perform a deblocking method according to any preceding implementation of any preceding aspect or any preceding aspect itself.
[0116] 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 preceding implementation of any preceding aspect or any preceding aspect itself.
[0117] According to another aspect, there is provided a computer program product with a program code for performing a deblocking method according to any preceding implementation of any preceding aspect or any preceding aspect itself, when the computer program is run on a computer.
[0118] 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.
[0119] In the following, embodiments of the invention are explained in more detail with reference to the accompanying figures and drawings. [Brief description of the drawings]
[0120] [Figure 1] 1 is a block diagram illustrating an example of a video encoder configured to implement embodiments of the present invention. [Diagram 2] 2 is a block diagram illustrating an exemplary structure of a video decoder configured to implement embodiments of the present invention. [Diagram 3] 1 is a block diagram illustrating an example of a video coding system configured to implement embodiments of the present invention. [Figure 4A] A diagram showing two exemplary coding blocks, where coding block Q uses a sub-PU tool. [Figure 4B] FIG. 2 illustrates a horizontal block edge between two coding blocks P and Q, two exemplary coding blocks. [Diagram 5] FIG. 2 illustrates a vertical block edge between two coding blocks P and Q, two exemplary coding blocks used and modified during filtering, and their respective sample values. [Figure 6] FIG. 2 illustrates a first embodiment of a deblocking filter, in accordance with an embodiment of the present invention. [Figure 7]FIG. 13 shows a flow chart illustrating a method for determining whether a long tap filter should be used. [Figure 8] FIG. 1 shows a flowchart illustrating a method for determining whether an HEVC strong filter condition should be satisfied. [Figure 9] FIG. 10 illustrates two exemplary coding blocks and sample values that are used and modified during filtering, according to another embodiment of the present invention. [Figure 10] FIG. 1 is a flow diagram illustrating an example process for deblocking filtering. [Figure 11] FIG. 11 is a flow diagram illustrating another example process for deblocking filtering. [Figure 12] FIG. 11 is a flow diagram illustrating another example process for deblocking filtering. [Figure 13] 13 is a simplified block diagram of an apparatus 1300 that may be used as either or both of the source device 310 or the destination device 320 from FIG. 3, according to an example embodiment. [Figure 14] 1 is a schematic diagram of a device for video coding. [Figure 15] FIG. 15 shows an image 1500 comprising several coding tree units CTU1 to CTU40. [Figure 16A] FIG. 13 illustrates overlapping horizontal edges at a CTU boundary according to an example embodiment. [Figure 16B] FIG. 13 illustrates overlapping horizontal edges at the horizontal luma CTB boundary according to another example embodiment when a row buffer (such as a 6 row buffer) is applied. [Figure 17] FIG. 13 illustrates overlapping horizontal edges at the horizontal luma CTB boundary according to another example embodiment when a row buffer (such as a 4-row buffer) is applied. [Figure 18] A diagram showing overlapping horizontal edges at a horizontal chroma CTB boundary according to another example embodiment when a row buffer (such as a two-row buffer) is applied. [Figure 19] FIG. 2 is a schematic diagram of a device for deblocking block edges. [Figure 20] 31 is a block diagram showing an exemplary structure of a content delivery system 3100 for implementing a content distribution service. [Figure 21] FIG. 2 is a block diagram illustrating the structure of an example terminal device. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0121] In the following, identical reference signs refer to identical or at least functionally equivalent features. Partly, different reference signs have been used in different figures to refer to the same entities.
[0122] In the following description, reference is made to the accompanying drawings, which form a part of this disclosure and which show, by way of example, certain 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. Therefore, the following detailed description should not be taken in a limiting sense, and the scope of the present invention is defined by the appended claims.
[0123] For example, it is understood that disclosure related to a described method may also apply 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, the corresponding device may include one or more units for performing the described one or more method steps (e.g., one unit performing one or more steps, or multiple units performing one or more of the multiple steps, respectively), e.g., functional units, even if such one or more units are not explicitly described or shown in the drawings. On the other hand, when, for example, a particular apparatus is described based on one or more units, e.g., functional units, the corresponding method may include one step for performing the function of the one or more units (e.g., one step performing the function of the one or more units, or multiple steps performing one or more of the functions of the multiple units, respectively), even if such one or more steps are not explicitly described or shown in the drawings. Furthermore, it is understood that the features of various exemplary embodiments and / or aspects described herein may be combined with each other, unless expressly stated otherwise.
[0124] Video coding typically refers to the processing of a sequence of pictures forming a video or a video sequence. The terms "frame" or "image", rather than the term "picture", may be used synonymously in the field of video coding. Video coding comprises two parts: video encoding and video decoding. Video encoding is performed at the source side, which typically comprises processing an 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 comprises the reverse processing compared to the encoder to reconstruct the video picture. The embodiments referring to "coding" a video picture (or pictures in general, as will be explained later) should be understood to relate to both "encoding" and "decoding" a video picture. The combination of the encoding and decoding parts is also called CODEC (COding and DECoding).
[0125] In the case of lossless video coding, the original video picture can be reconstructed, i.e. the reconstructed video picture has the same quality as the original video picture (assuming there is no transmission loss or other data loss during storage or transmission). In the case of lossy video coding, further compression is performed, for example by quantization, to reduce the amount of data representing the video picture, and this video picture cannot be completely reconstructed at the decoder, i.e. the quality of the reconstructed video picture is lower or worse compared to the quality of the original video picture.
[0126] Several video coding standards since H.261 belong to the group of "lossy 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 usually divided into a set of non-overlapping blocks, and coding is usually performed at the block level. In other words, at the encoder, the video is usually processed, i.e., 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 / to be processed) to obtain a residual block, transforming the residual block in the transform domain and quantizing the residual block to reduce the amount of data to be transmitted (compression). At the decoder, a reverse process compared to the process at the encoder is applied to the coded or compressed block in order to reconstruct the current block for representation. Furthermore, the encoder repeats the decoder processing loop so that both generate identical predictions (e.g., intra- and inter-predictions) and / or reconstructions for processing, i.e., coding, subsequent blocks.
[0127] Since video picture processing (also called motion picture processing) and still picture processing (the term processing includes coding) share many concepts and techniques or tools, in the following the term "picture" will be used to refer to a video picture and / or a still picture of a video sequence (as described above) in order to avoid unnecessary repetition and distinction between video pictures and still pictures if not necessary. When the description refers only to a still picture (or still image), the term "still picture" shall be used.
[0128] In the following embodiments of the encoder 100, the decoder 200 and the coding system 300 are described with reference to FIGS. 1 to 3 before describing the embodiments of the invention in more detail with reference to FIGS.
[0129] 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 encoded data 330, e.g., an encoded picture 330, to a destination device 320, e.g., for decoding the encoded data 330.
[0130] The source device 310 comprises an encoder 100 or encoding unit 100, and additionally, i.e. optionally, a picture source 312, a pre-processing unit 314, for example a picture pre-processing unit 314, and a communication interface or unit 318.
[0131] The picture source 312 may comprise 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 for obtaining and / or providing 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 specifically described otherwise, nevertheless, the previous explanation regarding the term "picture" covering "video pictures" and "still pictures" applies unless explicitly indicated differently.
[0132] A (digital) picture is or can be considered as a two-dimensional array or matrix of samples with intensity values. The samples in the array may also be called pixels (short for 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 usually utilized, i.e. a picture may be represented by or contain three sample arrays. In an RGB format or color space, a picture comprises corresponding red, green and blue sample arrays. However, in video coding, each pixel is usually represented in a luma / chrominance format or color space, for example in YCbCr, which comprises a luma component denoted by Y (sometimes L is also used instead) and two chrominance components denoted by Cb and Cr. The luma (or luma for short) component Y represents the brightness or gray level intensity (e.g. in a grayscale picture), while the two chrominance (or chroma for short) components Cb and Cr represent the chrominance or color information components. Thus, a picture in YCbCr format comprises 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 may be converted or transformed into YCbCr format and vice versa, a process also known as color conversion or color transformation. If a picture is monochrome, the picture may comprise only a luma sample array.
[0133] The picture source 312 can be, for example, a camera for capturing a picture, a memory with or storing a previously captured or generated picture, e.g., a picture memory, and / or any kind of interface (internal or external) for acquiring or receiving a picture. The camera can be, for example, a local or integrated camera integrated in the source device, and the memory can be a local or integrated memory, e.g., a memory integrated in the source device. The interface can be, for example, an external interface for receiving a picture from an external video source, e.g., an external picture capture device such as a camera, an external memory, or an external picture generation device, e.g., an external computer graphics processor, computer, or server. The interface can be any kind of interface, e.g., a wired or wireless interface, an optical interface, according to any proprietary or standardized interface protocol. The interface for acquiring the picture data 312 can be the same interface as the communication interface 318 or can be part of it.
[0134] To distinguish from 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.
[0135] Pre-processing unit 314 is configured to receive the (raw) picture data 313 and perform pre-processing on the picture data 313 to obtain a pre-processed picture 315 or pre-processed picture data 315. The pre-processing performed by pre-processing unit 314 may comprise, for example, cropping, color format conversion (e.g., from RGB to YCbCr), color correction, or noise removal.
[0136] The encoder 100 is configured to receive pre-processed picture data 315 and to provide encoded picture data 171 (further details are described, for example, with reference to FIG. 1).
[0137] The communications interface 318 of the source device 310 may be configured to receive the encoded picture data 171 and transmit it directly to another device, such as the destination device 320 or any other device, for storage or direct reconstruction, or to process the encoded picture data 171 before storing the encoded data 330 and / or before transmitting the encoded data 330 to another device, such as the destination device 320 or any other device, for decoding or storage, respectively.
[0138] The destination device 320 comprises a decoder 200 or decoding unit 200, and may additionally, i.e. optionally, comprise a communication interface or communication unit 322, a post-processing unit 326, and a display device 328.
[0139] The communication interface 322 of the destination device 320 is configured to receive the encoded picture data 171 or the encoded data 330, for example directly from the source device 310 or from any other source, for example a memory, for example an encoded picture data memory.
[0140] 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, e.g., a direct wired or wireless connection, or via any type of network, e.g., a wired network or a wireless network, or any combination thereof, or any type of private and public network, or any type of combination thereof.
[0141] The communications interface 318 may be configured, for example, to package the encoded picture data 171 into a format, e.g., packets, suitable for transmission over a communications link or network, and may further provide data loss protection and data loss recovery.
[0142] The communications interface 322, forming a counterpart to the communications interface 318, may for example be configured to unpackage the encoded data 330 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.
[0143] Both communication interface 318 and communication interface 322 may be configured as omnidirectional communication interfaces, as indicated by the arrow for encoded picture data 330 pointing from the source device 310 to the destination device 320 in FIG. 3, or as bidirectional communication interfaces, and may be configured, e.g., to set up a connection, to send and receive messages, e.g., to acknowledge and / or retransmit lost or delayed data, including picture data, and to exchange any other information regarding the communication link and / or data transmission, e.g., the transmission of encoded picture data.
[0144] The decoder 200 is configured to receive the encoded picture data 171 and to provide decoded picture data 231 or decoded pictures 231 (further details are explained, for example, on the basis of FIG. 2).
[0145] The post-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 comprise, for example, color format conversion (e.g., from YCbCr to RGB), color correction, cropping, or resampling, or any other processing, for example preparing the decoded picture data 231 for display by the display device 328.
[0146] A display device 328 of the destination device 320 is configured to receive the post-processed picture data 327, for example to display the picture to a user or viewer. The display device 328 may be or comprise any type of display for presenting the reconstructed picture, for example an integrated or external display or monitor. The display may comprise, for example, a cathode ray tube (CRT), a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display or any type of other display...beamer, hologram (3D),...
[0147] 3 illustrates the source device 310 and the destination device 320 as separate devices, an embodiment of the devices may also include both or both of their functionality, i.e., the source device 310 or corresponding functionality and the destination device 320 or corresponding functionality. In such an embodiment, the source device 310 or corresponding functionality and the destination device 320 or corresponding functionality may be implemented using the same hardware and / or software or by separate hardware and / or software, or any combination thereof.
[0148] As will be clear to a person skilled in the art based on the description, the functions of different units, or the presence and (exact) division of functions within the source device 310 and / or destination device 320 as shown in FIG. 3, may vary depending on the actual device and application.
[0149] Thus, the source device 310 and the destination device 320 as 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.
[0150] The source device 310 and the destination device 320 may comprise any of a wide range of devices, including any type of handheld or fixed device, e.g., notebook or laptop computers, mobile phones, smartphones, tablets or tablet computers, cameras, desktop computers, set-top boxes, televisions, display devices, digital media players, video game consoles, video streaming devices, broadcast receiver devices, etc. (as well as servers and workstations for large-scale advanced encoding / decoding, e.g., network entities), and may use no operating system or any type of operating system.
[0151] 1 shows a schematic / conceptual block diagram of an embodiment of an encoder 100, e.g., a picture encoder 100, comprising 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], a mode selection unit 162, an entropy coding unit 170, and an output 172. The video encoder 100 as shown in FIG. 1 may also be referred to as a hybrid video encoder, or a video encoder according to a hybrid video codec.
[0152] 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, for example, 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).
[0153] The encoder is configured to receive, for example by means of an input 102, a picture 101 or a picture block 103 of the picture 101, for example a picture of a video or a sequence of pictures forming a video sequence. The picture block 103 may also be called a current picture block or a picture block to be coded, and the picture 101 may also be called a current picture or a picture to be coded (particularly in video coding, to distinguish the current picture from other pictures, for example previously encoded and / or decoded pictures of the same video sequence, i.e. a video sequence that also comprises the current picture).
[0154] An embodiment of the encoder 100 may comprise a division unit (not shown in FIG. 1), which may for example be referred to as a picture division unit, configured to divide a picture 103 into multiple blocks, e.g., a block such as block 103 into multiple, typically 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, or between subsets or groups of pictures, and divide each picture into corresponding blocks.
[0155] Like the picture 101, the block 103 is also or may be considered as a two-dimensional array or matrix of samples with intensity values (sample values), but with a smaller dimension than the picture 101. In other words, the block 103 may comprise, for example, an array of one sample (e.g., a luma array in case of a monochrome picture 101) or an array of three samples (e.g., a luma array and two chroma arrays in 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 the block 103 determines the size of the block 103.
[0156] An encoder 100 as shown in FIG. 1 is configured to encode a picture 101 block by block, for example encoding and prediction is performed block by block 103 .
[0157] The residual calculation unit 104 is configured to calculate the residual block 105 based on the picture block 103 and the prediction block 165, for example, by subtracting sample values of the prediction block 165 sample-by-sample (pixel-by-pixel) from sample values of the picture block 103 to obtain the residual block 105 in the sample domain (further details about the prediction block 165 are provided later).
[0158] 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 transformed coefficients 107 in the transform domain. The transformed coefficients 107 may also be referred to as transformed residual coefficients and may represent the residual block 105 in the transform domain.
[0159] The transform unit 106 may be configured to apply an integer approximation of the DCT / DST, such as the core transform specified for HEVC / H.265. Compared to the orthogonal DCT transform, such an integer approximation is usually scaled by a factor. In order to preserve the norm of the residual block processed by the forward transform and the inverse transform, an additional scaling factor is applied as part of the transform process. The scaling factor is usually chosen based on some constraints, such as the scaling factor being a power of two for shift operations, the bit depth of the transformed coefficients, a trade-off between accuracy and implementation cost, etc. A specific scaling factor may be specified, for example, for the inverse transform, for example, by the inverse transform unit 212 in the decoder 200 (the corresponding inverse transform is specified, for example, by the inverse transform unit 112 in the encoder 100), and the corresponding scaling factor for the forward transform may be specified accordingly, for example, by the transform unit 106 in the encoder 100.
[0160] 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 may also be referred to as quantized residual coefficients 109. For example, in scalar quantization, different scaling may be applied to achieve finer or coarser quantization. A smaller quantization step size corresponds to a finer quantization, whereas a larger quantization step size corresponds to a coarser quantization. The applicable quantization step sizes may be indicated by a quantization parameter (QP). The quantization parameter may, for example, be an index to a predefined 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 include division by the quantization step size, and the corresponding or inverse dequantization, for example by the inverse quantization 110, may include multiplication by the quantization step size.
[0161] An embodiment according to HEVC or VVC may be configured to use a quantization parameter to determine the quantization step size. In general, the quantization step size may be calculated based on the quantization parameter using a fixed-point approximation of the formula involving division. An additional scaling factor 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 formula of the quantization step size and the quantization parameter. In one exemplary implementation, the scaling of the inverse transform and dequantization may be combined. Alternatively, a customized quantization table may be used and signaled from the encoder to the decoder, for example in the bitstream. Quantization is a lossy operation, and the loss increases with increasing quantization step size.
[0162] An embodiment of the encoder 100 (or of the quantization unit 108, respectively) may be configured to output the quantization scheme and the quantization step size, e.g., with corresponding quantization parameters, such that the decoder 200 may receive and apply corresponding inverse quantization. An embodiment of the encoder 100 (or of the quantization unit 108) may be configured to output the quantization scheme and the quantization step size, e.g., directly or entropy coded via the entropy coding unit 170 or any other entropy coding unit.
[0163] Inverse quantization unit 110 is configured to apply the inverse quantization of quantization unit 108 to the quantized coefficients, e.g., by applying the inverse of the quantization scheme applied by quantization unit 108, based on or using the same quantization step size as quantization unit 108, to obtain dequantized coefficients 111. The dequantized coefficients 111, which may also be referred to as dequantized residual coefficients 111, may correspond to the transformed coefficients 108, although they are not typically identical to the transformed coefficients due to quantization losses.
[0164] The inverse transform unit 112 is configured to apply an inverse transform of the transform applied by the transform unit 106, e.g., 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 transformed block 113 may also be referred to as an inverse transformed dequantized block 113 or an inverse transformed residual block 113.
[0165] The reconstruction unit 114 is configured to combine the inverse transformed block 113 and the prediction block 165, for example by adding sample values of the decoded residual block 113 and the prediction block 165 sample-by-sample to obtain a reconstructed block 115 in the sample domain.
[0166] A buffer unit 116 (or "buffer" 116 for short), e.g., row buffer 116, is configured to buffer or store the reconstructed blocks and respective sample values, e.g., for intra-estimation and / or intra-prediction. In further embodiments, the encoder may be configured to use the unfiltered reconstructed blocks and / or respective sample values stored in buffer unit 116 for any type of estimation and / or prediction.
[0167] Embodiments of encoder 100 may be configured, for example, such that buffer unit 116 is used not only for storing reconstructed blocks 115 for intra-estimation 152 and / or intra-prediction 154, but also for loop filter 120 (not shown in FIG. 1 ), and / or such that buffer unit 116 and decoded picture buffer unit 130 form one buffer. Further embodiments may be configured to use filtered blocks 121 and / or blocks or samples from decoded picture buffer 130 (both not shown in FIG. 1 ) as input or basis for intra-estimation 152 and / or intra-prediction 154.
[0168] The loop filter unit 120 (or "loop filter" 120 for short) is configured to filter the reconstructed block 115, for example by applying a sample adaptive offset (SAO) filter or other filters, for example a sharpening filter or a smoothing filter or a collaborative filter, to obtain a filtered block 121. The filtered block 121 may also be referred to as a filtered reconstructed block 121. The loop filter 120 is also referred to as a deblocking filter in the following. Further details of the loop filter unit 120 are described below, for example based on FIG. 6 or FIG. 7 or FIG. 10 to FIG. 12.
[0169] An embodiment of the loop filter unit 120 may comprise 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 of the actual filter. The filter analysis unit may be configured to apply fixed pre-defined filter parameters to the actual loop filter, adaptively select filter parameters from a set of pre-defined filter parameters, or adaptively calculate filter parameters of the actual loop filter.
[0170] An embodiment of the loop filter unit 120 may comprise one or more filters (loop filter components / sub-filters), e.g. one or more of filters of different kinds or types, e.g. connected in series or in parallel or any combination thereof (not shown in FIG. 1 ), each of which may comprise a filter analysis unit, individually or together with other filters of the plurality of filters, for determining respective loop filter parameters, e.g. as described in the previous paragraph.
[0171] An embodiment of encoder 100 (respectively loop filter unit 120) may be configured to output loop filter parameters, e.g., directly or entropy encoded via entropy encoding unit 170 or any other entropy coding unit, such that decoder 200 may receive and apply the same loop filter parameters for decoding.
[0172] 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 blocks 121, of the same current picture or of different pictures, e.g., previously reconstructed pictures, and may provide a fully previously 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.
[0173] Further embodiments of the present invention may also 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 intra- and inter-prediction.
[0174] The prediction unit 160, also referred to as block prediction unit 160, is configured to receive or obtain from the buffer 116 a picture block 103 (the current picture block 103 of the current picture 101) and decoded or at least reconstructed picture data, e.g. reference samples of the same (current) picture, and / or from the decoded picture buffer 130 decoded picture data 231 from one or more previously decoded pictures, and to process such data to provide a prediction block 165 for prediction, i.e. which may be an inter-predicted block 145 or an intra-predicted block 155.
[0175] The mode selection unit 162 may be configured to select a prediction mode (e.g., an intra prediction mode or an inter prediction mode) and / or a corresponding prediction block 145 or 155 to be used as a prediction block 165 for calculation of the residual block 105 and reconstruction of the reconstructed block 115.
[0176] An embodiment of mode selection unit 162 may be configured to select a prediction mode (e.g., from those supported by prediction unit 160) that results in the best match, or in other words, the smallest residual (which means better compression for transmission or storage), or the smallest signaling overhead (which means better compression for transmission or storage), or that takes both into account or balances both. Mode selection unit 162 may be configured to determine a prediction mode based on rate-distortion optimization (RDO), i.e., select a prediction mode that results in a minimum rate-distortion optimization or whose associated rate-distortion at least satisfies a prediction mode selection criterion.
[0177] Below, the prediction process (eg, prediction unit 160) and the mode selection performed by the exemplary encoder 100 (eg, by mode selection unit 162) are described in more detail.
[0178] As described above, the encoder 100 is configured to determine or select a best or optimal prediction mode from a (predetermined) set of prediction modes. The set of prediction modes may comprise, for example, intra-prediction modes and / or inter-prediction modes.
[0179] The set of intra prediction modes may comprise 32 different intra prediction modes, e.g., omnidirectional modes such as DC (or average) mode and planar mode, or directional modes, e.g., as defined in H.264, or may comprise 65 different intra prediction modes, e.g., omnidirectional modes such as DC (or average) mode and planar mode, or directional modes, e.g., as defined in H.265.
[0180] The set of inter prediction modes (or possible inter prediction modes) depends on the available reference pictures (i.e., previously at least partially decoded pictures, e.g., stored in DBP 230) and other inter prediction parameters, such as whether the entire reference picture is used to find the best matching reference block or only a part of it, e.g., a search window area around the area of the current block, is used, and / or whether pixel interpolation, e.g., half / semi-pel and / or quarter-pel interpolation, is applied.
[0181] In addition to the above prediction modes, skip mode and / or direct mode may be applied.
[0182] The prediction unit 160 may further be configured to divide the block 103 into smaller block partitions or sub-blocks, e.g., using quadtree partitioning (QT), binary partitioning (BT), or ternary tree partitioning (TT), or any combination thereof, repeatedly, and perform prediction for each of the block partitions or sub-blocks, where the mode selection comprises a tree structure of the divided block 103 and a selection of a prediction mode to be applied to each of the block partitions or sub-blocks.
[0183] The inter estimation unit 142, also referred to as inter picture estimation unit 142, is configured to receive or obtain, for inter estimation (or "inter picture estimation"), 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 example, a video sequence may comprise the current picture and the previously decoded picture 231, or in other words, the current picture and the previously decoded picture 231 may be part of or form a sequence of pictures forming a video sequence.
[0184] The encoder 100 may be configured, for example, to select a reference block from multiple reference blocks of the same or different pictures of multiple other pictures and provide the reference picture (or reference picture index, ...) and / or an offset (spatial offset) between the position (x, y coordinates) of the reference block and the position of the current block as inter estimation parameter 143 to the inter prediction unit 144. This offset is called a motion vector (MV). Inter estimation is also called motion estimation (ME), and inter prediction is also called motion prediction (MP).
[0185] The inter prediction unit 144 is configured to obtain, eg, receive, the inter prediction parameters 143 and perform inter prediction based on or using the inter prediction parameters 143 to obtain the inter prediction block 145.
[0186] Although FIG. 1 shows two separate units (or steps) for inter-coding, i.e., inter-estimation 142 and inter-prediction 152, both functions may be performed since one time (inter-estimation) requires / includes computing a certain / that inter-prediction block, i.e., that "kind" or "type" of inter-prediction 154), for example, by repeatedly testing all possible inter-prediction modes or a predetermined subset of possible inter-prediction modes, storing the current best inter-prediction mode and the respective inter-prediction block, and using the current best inter-prediction mode and the respective inter-prediction block as the (final) inter-prediction parameters 143 and inter-prediction block 145 without performing inter-prediction 144 at another time.
[0187] The intra estimation unit 152 is configured to obtain, e.g., receive, the picture block 103 (current picture block) and one or more previously reconstructed blocks of the same picture, e.g., reconstructed neighboring blocks, for intra estimation. The encoder 100 may be configured, for example, to select an intra prediction mode from a plurality of (predetermined) intra prediction modes and provide it as intra estimation parameters 153 to the intra prediction unit 154.
[0188] An embodiment of the encoder 100 may be configured to select an intra prediction mode based on an optimization criterion, for example, minimum residual (e.g., the intra prediction mode that results in a prediction block 155 that is most similar to the current picture block 103) or minimum rate distortion.
[0189] 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 .
[0190] Although FIG. 1 shows two separate units (or steps) for intra-coding, i.e., intra-estimation 152 and intra-prediction 154, both functions may be performed since one time (intra-estimation) requires / includes computing an intra-prediction block, i.e., that "kind" or "type" of intra-prediction 154), for example by repeatedly testing all possible intra-prediction modes or a predetermined subset of possible intra-prediction modes, storing the current best intra-prediction mode and the respective intra-prediction block, and using the current best intra-prediction mode and the respective intra-prediction block as the (final) intra-prediction parameters 153 and intra-prediction block 155 without performing intra-prediction 154 at another time.
[0191] The entropy encoding unit 170 is configured to apply an entropy encoding 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 together (or not at all), to obtain encoded picture data 171, which may be output by an output 172, for example in the form of an encoded bitstream 171.
[0192] Other structural variations of the video encoder 100 may be used to encode the video stream. For example, a non-transform-based encoder 100 may quantize the residual signal directly without a transform processing unit for some blocks or frames. In another implementation, the encoder 100 may have a quantization unit and an inverse quantization unit combined into a single unit.
[0193] FIG. 2 shows an exemplary video decoder 200 configured to receive encoded picture data (e.g., an encoded bitstream) 171, e.g., encoded by encoder 100, to obtain a decoded picture 231.
[0194] The decoder 200 comprises 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.
[0195] The entropy decoding unit 204 is configured to perform entropy decoding on the encoded picture data 171 to obtain, e.g., quantized coefficients 209 and / or decoded coding parameters (not shown in FIG. 2), e.g., any or all of (decoded) inter-prediction parameters 143, intra-prediction parameters 153, and / or loop filter parameters.
[0196] In an embodiment of the decoder 200, 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 260 are configured to perform the inverse processes of the encoder 100 (and their respective functional units) to decode the encoded picture data 171.
[0197] In particular, the inverse quantization unit 210 may be identical in function to the inverse quantization unit 110, the inverse transform unit 212 may be identical in function to the inverse transform unit 112, the reconstruction unit 214 may be identical in function to the reconstruction unit 114, the buffer 216 may be identical in function to the buffer 116, the loop filter 220 may be identical in function to the loop filter 220 (in terms of the actual loop filter, since the loop filter 220 typically does not comprise a filter analysis unit to determine the filter parameters based on the original image 101 or 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 identical in function to the decoded picture buffer 130.
[0198] The prediction unit 260 may comprise an inter prediction unit 244 and an inter prediction unit 254, which may be identical in function to the inter prediction unit 144 and which may be identical in function 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 predicted block 265 from the coded data 171 alone (without further information about the original image 101) and to receive or obtain (explicitly or implicitly) the prediction parameters 143 or 153 and / or information about the selected prediction mode, e.g., from the entropy decoding unit 204.
[0199] The decoder 200 is configured to output the decoded pictures 230, for example via an output 232, for presentation or viewing to a user.
[0200] Although the embodiments of the present invention have been described mainly based on video coding, it should be noted that the embodiments of the encoder 100 and the decoder 200 (and correspondingly the system 300) may also be configured for processing or coding still pictures, i.e., for processing or coding individual pictures independent of any preceding or successive pictures as in video coding. In general, when the picture processing coding is limited to a single picture 101, not only the inter estimation 142, the inter prediction 144, 242 are available. Most, if not all, other functions (also called tools or techniques) of the video encoder 100 and the video decoder 200 may be used equally for still pictures, such as the partitioning, the transform (scaling) 106, the quantization 108, the inverse quantization 110, the inverse transform 112, the intra estimation 142, the intra prediction 154, 254, and / or the loop filtering 120, 220, as well as the entropy coding 170 and the entropy decoding 204.
[0201] The present invention deals with the inner operation of the deblocking filter, also called the loop filter in Figures 1 and 2. Further details of the loop filter units 120, 220 are described below, for example with respect to Figures 4 to 19.
[0202] Video coding schemes such as H.264 / AVC, HEVC, and VVC are designed according to the principle of block-based hybrid video coding. Using this principle, a picture is first divided into blocks, and then each block is predicted by using intra-picture or inter-picture prediction. These blocks are coded relatively from neighboring blocks and are close to the original signal with a certain degree of similarity. Since the coded blocks are only close to the original signal, the difference between their closeness causes discontinuities at the boundaries of the prediction and transformation blocks. These discontinuities are weakened by a deblocking filter. HEVC replaces the macroblock structure of H.264 / AVC with the concept of a coding tree unit (CTU) with a maximum size of 64×64 pixels. The CTU can be further divided into a quadtree decomposition scheme into smaller coding units (CUs), which can be further subdivided to a minimum size of 8×8 pixels. HEVC also introduces the concepts of prediction block (PB) and transformation block (TB).
[0203] In HEVC, two filters are defined in the deblocking filter: normal and strong. The normal filter modifies at most two samples on either side of the edge. The strong filter evaluates three additional checks between samples along the edge and some predefined threshold. If all of those checks 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.
[0204] A new video codec: Versatile Video Coding (VVC) aims to achieve compression capabilities that significantly exceed those of the current HEVC standard (including its current and near-term extensions for screen content coding and high dynamic range coding). The VVC Test Model (VTM) uses a new split block structuring method called Quad-tree plus Binary-tree plus Ternary-tree (QTBTTT).
[0205] The QTBTTT structure eliminates the concept of multiple partition types, i.e., the separation of coding units (CUs), prediction units (PUs), and transform units (TUs). Thus, CU=PU=TU. QTBTTT supports more flexible CU partition shapes, where a CU can have either a square or rectangular shape. The minimum width and height of a CU can be 4 samples, and the size of a CU can also be 4×N or N×4, where N can take values in the range [4, 8, 16, 32]. Additionally, the maximum CTU size is increased to 128×128 pixels, which is four times larger than the CTU size in HEVC.
[0206] For rectangular CUs, distortion near the shorter edges may be evident, which results in block artifacts even when the HEVC strong filter is applied. This block artifact may also be observed along the edges of larger CUs, where the distortion is more noticeable due to the larger prediction and transformation operations.
[0207] Now, long-tap deblocking filters are used to remove blocking artifacts belonging to larger blocks (e.g., larger luma blocks or larger chroma blocks). Especially for larger blocks (transform blocks (TUs), prediction units (PUs), coding blocks (CBs), etc.), deblocking filtering (such as luma and chroma deblocking) can be difficult while row buffer requirements at horizontal CTB (or CTU) boundaries must be considered, e.g., row buffer requirements for long-tap deblocking filters at horizontal CTB (or CTU) boundaries must be considered.
[0208] The deblocking filter operation (using quad-tree plus binary-tree plus ternary-tree (QTBTTT) partitioning) on the vertical boundary is shown in FIG. 4A.
[0209] The deblocking filter operation on the horizontal boundaries (using quad-tree plus binary-tree plus ternary-tree (QTBTTT) partitioning) is shown in FIG. 4B.
[0210] A long-tap filter is a filter that uses more than four samples on either side of an edge to perform the filter decision and the actual filter operation. Note that the HEVC deblocking filter only uses a maximum of four samples for the filter decision and filter operation.
[0211] The problem of applying a "long tap filter" while row buffer requirements must be met is shown in Figure 4B. Coding blocks 401, 402, also called P, Q, are two CUs, and the size of the CU is 4x16 samples. In another example, as shown in Figure 16A, coding block P (i.e., the first coding block) has a block height ≥ 16, and coding block Q (i.e., the second coding block) has a block height = 32.
[0212] When horizontal block edges (highlighted with thick black lines, such as luma block edges) are filtered, up to 7 samples on either side of the block edge are modified. Thus, sample P 0,0 From P 6,0 Until the corrections and / or sample Q 0,0 From Q 6,0 However, when a horizontal block edge overlaps a CTB boundary, a tradeoff needs to be derived based on row buffer requirements and subjective quality. Using an asymmetric long-tap filter provides a better tradeoff compared to turning off the long-tap filter completely at the horizontal CTB boundary. The asymmetric long-tap filter is further defined as follows: An asymmetric long-tap filter uses a different number of taps on each side of the edge to make the filter decision and filtering operation. For example, only 4 taps may be used on one side of the edge, while up to 8 samples may be used on the other side of the edge.
[0213] In this disclosure, the problem of how to perform deblocking filtering of horizontal (EDGE_HOR) edges with optimal subjective quality when the available row buffer is limited can be solved by techniques such as those shown in Figures 9, 10 to 12, and 15 to 18.
[0214] An aspect to be considered is where each block edge is with respect to the encoded image. In particular, if the currently filtered block edge is aligned with a coding tree block (CTB) boundary (or coding tree unit (CTU) boundary) and is a horizontal block edge, the number of filter input values and filter output values will greatly affect the amount of row memory to perform the encoding. This is shown in Figure 15.
[0215] 15 shows an image 1500 comprising several coding tree units CTU1-CTU40. Each coding tree unit has, for example, 256×256 sample values. If long tap filtering is to be performed, in one example, 8 sample values along a coding block edge may be considered to determine the filter output value. Since the coding units CTU1-CTU40 are processed consecutively, this may require a very large amount of row memory.
[0216] Consider the deblocking filtering of a block edge 1501 shown in Figure 15. Here, the block edge 1501 is drawn along the entire width of coding units CTU17 and CTT25. In reality, however, the coding block size is much smaller because coding is not performed at the scale of the coding tree units.
[0217] Since the coding tree units CTU1 to CTU40 are processed consecutively, it is necessary to keep the entire horizontal boundary area below the coding tree units CTU17 to CTU24 in the row memory in order to perform the deblocking of the code block edge 1501. In the example shown here, there are eight coding tree units CTU17 to CTU24, each of which is 256 samples wide, and there are eight associated sample values as filter input values, so a memory size of the row memory of 8 x 256 x 8 = 16384 samples is required. For each horizontal coding block edge, this problem occurs. This is particularly problematic for coding tree units CTU9, CTU17, CTU25, and CTU33, because in any of these cases the entire horizontal boundary area of the previous row of the coding tree unit needs to be kept in the row memory. This is further illustrated in Figure 9 and Figure 16A, Figure 16b, or Figure 17, or Figure 18.
[0218] Note that the row buffer issue arises for horizontal boundaries that overlap CTU boundaries. This disclosure focuses on filtering horizontal edges that overlap CTB (or CTU) boundaries, and in particular, horizontal edges that overlap CTB boundaries using the X rows available in the row buffer.
[0219] For example, this disclosure focuses on filtering horizontal edges that overlap a CTB (or CTU) boundary, and in particular, horizontal edges that overlap a CTB boundary using the six rows available in the row buffer.
[0220] Essentially, an asymmetric long-tap filter (which essentially uses a different number of samples or taps on either side of an edge to perform a filtering operation or decision) is applied in a manner that does not invade the row buffer.
[0221] In one example, the row buffer may be 4 rows (as in HEVC). In another example, the row buffer may be 6 rows, i.e. a 6 row buffer. In particular, for the luma block, the row buffer may be 4 rows (as in HEVC). In another example, the row buffer may be 6 rows, i.e. a 6 row buffer.
[0222] FIG. 9 shows a line buffer size of 4 rows. In FIG. 9, an image 900 is shown with two blocks 901, 902. A block edge 903 divides the blocks 901 and 902. By way of example, when the horizontal block edge 903 overlaps with the CTB boundary, the first coding block P is the block 901 above the CTB boundary, and the second coding block Q is the block 902 below the CTB boundary, with MA=3, DA=4. Here, MA is the number of samples that are modified during the filtering process for the block above the horizontal CTB boundary (such as block 901), and DA is the number of samples that are used in the filter decision for the block above the horizontal CTB boundary (such as block 901). In other words, MA can be understood as the maximum filter length of the block above the horizontal CTB boundary (such as block 901).
[0223] Figure 17 also shows a line buffer size of 4 rows. In Figure 17, for example, at the CTB boundary of the upper block, when 4 rows is allowed to be used as the row buffer size, 3 samples are corrected during filter correction and 4 samples are used in the filter decision, i.e., MA=3 and DA=4, and for example, at the CTB boundary of the lower block, 7 samples are corrected during filter correction and 8 samples are used in the filter decision, i.e., MB=7 and DB=8.
[0224] Figures 16A and 16B show an example where the row buffer size is 6 rows. In Figure 16A or 16B, an image 1600 including two blocks 1601 and 1602 is shown. A block edge 1603 divides the blocks 1601 and 1602. According to the example, when the horizontal block edge 1603 overlaps with a coding tree block (CTB) boundary, and a first coding block (such as a first luma block) P is the block 1601 above the CTU boundary 1603, and a second coding block (such as a second luma block) Q is the block 1602 below the CTB boundary 1603, DA < DB and MA < MB can be set to further reduce the row buffer for the horizontal edges overlapping at the CTB boundary. Here, DB is the number of samples used in the filter determination for the coding block below the horizontal CTU boundary, and MB is the number of samples corrected in the filtering process for the coding block below the horizontal CTU boundary. In other words, MB can be understood as the maximum filter length of the coding block (such as block 902) below the horizontal CTU boundary.
[0225] As shown in Figure 16A or 16B, for example, when 6 rows are permitted to be used as the row buffer size at the CTB boundary of the upper block, 5 samples are corrected during the filter correction, and 6 samples are used in the filter determination (a determination process for outputting filtering-related parameters such as the maximum filter length), that is, MA = 5 and DA = 6.
[0226] In the example, a filter for the horizontal edge overlapping with the CTB boundary where 6 rows are available is described in the following table.
[0227] [Table 1]
[0228] From the table, the number of output samples p0 to p4 of block P is MA equal to 5. For each of the output samples p0 to p4, the number of input samples p5, p4, p3, p2, p1, p0 of block P is DA equal to 6.
[0229] In another example, the first filter output value p for i=0 to S-1 i ' and the second filter output value q i ' is formulated as follows: -p i '=(f i *Middle s,t +(64-f i )*P s +32)≫6), p i ±tcPD i Clipped to -q i '=(g i *Middle s,t +(64-g i )*Q s +32)≫6), q i ±tcPD i Clipped to where tcPD i is the position-dependent clipping parameter, and g i , f i , Middle s,t , P s , and Q s depends on S, p i represents the sample values of the first coding block P, q i represents the sample values of the second coding block Q, S=MA for the first coding block P, i.e., at most the number of samples that can be modified in each column of the first image block that is perpendicular to and adjacent to the horizontal block edge, or S=MB for the second coding block Q, ie, at most the number of samples that can be modified in each column of the second image block Q that are perpendicular and adjacent to the horizontal block edge.
[0230] When the row buffer size X=6, g i , f i , Middle s,t , P s , and Q s depends on S as follows:
[0231] [Table 2]
[0232] If the size of the row buffer (e.g., the row buffer size) is X (i.e., the row buffer has a row buffer size of X rows), then for a first coding block P, DA=X and MA=X-1, and the sample p i is used as a padding value to replace other samples that belong to the first coding block P and are outside the row buffer, where i=X-1 if the row buffer size is X. Here, sample p i p0, p1, p2, p3, p4, p5, p6, p7, ....] is the outermost sample allowed to be stored in the row buffer. For example, the column of samples of the first coding block P above the horizontal boundary is denoted as [p0, p1, p2, p3, p4, p5, p6, p7, ....] (as shown in FIG. 4B). If the row buffer size is 4, i.e., x=4, then i=3. Thus, p3 is used to pad or replace all other samples outside the row buffer, i.e., samples p4, p5.... In another example, if the allowed row buffer size is 6, i.e., x=6, then i=5. Thus, p5 is used as the sample to pad all other samples outside the row buffer, i.e., samples p6, p7... are replaced by p5.
[0233] Alternatively, when the row buffer size X=4, g i , f i , Middle s,t , P s , and Q sdepends on S as follows.
[0234]
Table 3
[0235] Furthermore, for horizontal edges that overlap at the CTB boundary, when DA < DB and MA < MB, the row buffer size can be reduced.
[0236] In one example, DB = 8 and DA = 6, and MB = 7 and MA = 5.
[0237] In one example, DB = 8 and DA = 7, and MB = 7 and MA = 6.
[0238] In one example, DB = 8 and DA = 5, and MB = 7 and MA = 4.
[0239] In one example, DB = 8 and DA = 4, and MB = 7 and MA = 3.
[0240] Referring to FIG. 6, a deblocking filter device according to an aspect of the present disclosure is provided. The deblocking filter device can be used in an image encoder and / or an image decoder. The deblocking filter device is an edge position specifying unit 603 configured to determine an edge between blocks, where the edge between blocks includes a horizontal block edge (e.g., a CU edge or a CU boundary) between a first coding block P and a second coding block Q, the horizontal block edge overlaps a coding tree unit (CTB) boundary, the first coding block P is a block above the CTB boundary, and the second coding block Q is another block below the CTB boundary, the edge position specifying unit 603, and a first filter (i.e., a long tap filter or an asymmetric filter or an asymmetric tap filter or an HEVC deblocking filter), - As the first filter determination value, up to DA sample values of the first coding block adjacent to the horizontal block edge, and - As the second filter determination value, up to DB sample values of the second coding block adjacent to the horizontal block edge By applying based on this, it is configured to determine whether the horizontal block edge between the first coding block P and the second coding block Q should be filtered, DA≠DB or DA<DB, and DA is equal to the row buffer size, a deblocking determination unit 604, and When it is determined that the horizontal block edge between the first coding block P and the second coding block Q should be filtered by applying the first filter, the first filter (that is, a long tap filter or an asymmetric filter or an asymmetric tap filter or an HEVC deblocking filter) is applied to the values of the samples near the horizontal block edge between the first coding block P and the second coding block Q. A deblocking filtering unit 606 configured as such is provided.
[0241] In some embodiments, when the size of the row buffer (for example, the row buffer size) is X (that is, the row buffer has a row buffer size of X rows), for the first coding block P, DA = X. The sample p of the first coding block P i Is used as a padded value for replacing other samples that belong to the first coding block P and are outside the row buffer. When the row buffer size is X, i = X - 1.
[0242] In some embodiments, up to MA sample values of the column (each column, etc.) of the first coding block adjacent and vertical to the horizontal block edge are corrected, and up to MB sample values of the column (each column, etc.) of the second coding block adjacent and vertical to the horizontal block edge are corrected, MA≠MB or MA<MB.
[0243] In some embodiments, if the size of the row buffer (e.g., the row buffer size) is X (i.e., the row buffer has a row buffer size of X rows), then for a first coding block P, MA=X−1; Sample p of the first coding block P i is used as a padded value to replace other samples that belong to the first coding block P and are outside the row buffer. If the row buffer size is X, then i=X-1.
[0244] In some embodiments, DB=8, DA=6, MB=7, and MA=5.
[0245] In some embodiments, when the size of the row buffer (e.g., row buffer size) is 6, up to L rows from the first coding block P are allowed to be used for the filtering decision, where L=6.
[0246] In some embodiments, when a 6-row buffer (e.g., a row buffer with a row buffer size of 6) is applied, the deblocking determination unit 604 is configured to determine whether the extended filter condition equation sp3′=(sp3+Abs(p5-p3)+1)>>1 is satisfied. x>>y is defined, i.e., it can be understood to be an arithmetic right shift of the two's complement representation of x by y binary digits. This function is defined only for non-negative integer values of y. The bit that is shifted to the most significant bit (MSB) as a result of the right shift has a value equal to the MSB of x before the shift operation.
[0247] When one or more filter condition expressions comprising the extended filter condition expression are satisfied, a first filter is applied to sample values of a first coding block P adjacent to a horizontal block edge that overlaps a CTU boundary; sp3 = Abs(p3-p0), where p iLet i=0, 1, 2, 3, 4, or 5 denote the sample value of the first coding block P used in the filter decision.
[0248] In some embodiments, when a 6-row buffer is applied and the block size SB of the second coding block Q is greater than or equal to a predetermined size (e.g., 32), the deblocking determination unit 604 is configured to determine whether the extended filter condition equation sq3′=(sq3+Abs(q7−q3)+1)>>1 is satisfied.
[0249] When one or more filter condition expressions comprising the extended filter condition expressions are satisfied, the first filter is applied to sample values of the second coding block Q adjacent to a horizontal block edge that overlaps with a CTU boundary, where sq3=Abs(q0-q3), and q i represents the sample value of the second coding block Q used in the filter decision, where i=0, 1, 2, 3, 4, . . . or 7.
[0250] In some embodiments, when a 4-row buffer is applied, the deblocking determination unit 604 is configured to determine whether the extended filter condition equation sp3′=(sp3+Abs(p3−p0)+1)>>1 is satisfied.
[0251] When one or more filter condition expressions comprising the extended filter condition expressions are satisfied, the first filter is applied to sample values of the first coding block P adjacent to a horizontal block edge that overlaps a CTU boundary, where sp3=Abs(p3-p0), and p i Let i denote the sample value of the first coding block P used in the filter decision, where i=0, 1, 2, or 3.
[0252] In some embodiments, the deblocking filtering unit 606 calculates the first filter output values p for i=0 to S−1 based on the following formula: i' and the second filter output value q i ' is configured to determine -p i '=(f i *Middle s,t +(64-f i )*P s +32)≫6), p i ±tcPD i Clipped to -q i '=(g i *Middle s,t +(64-g i )*Q s +32)≫6), q i Clipped to ±tcPDi where tcPD i is the position-dependent clipping parameter, and g i , f i , Middle s,t , P s , and Q s depends on S, p i represents the sample values of the first coding block P, q i represents the sample values of the second coding block Q, S=MA for the first coding block P, i.e., at most the number of samples that can be modified in each column of the first image block that is perpendicular to and adjacent to the horizontal block edge, or S=MB for the second coding block Q, ie, at most the number of samples that can be modified in each column of the second image block Q that are perpendicular and adjacent to the horizontal block edge.
[0253] In some embodiments, when the row buffer size X=6, g i , f i , Middle s,t , P s , and Q s depends on S as follows:
[0254] [Table 4]
[0255] In some embodiments, when the row buffer size X=4, g i , f i , Middle s,t , P s , and Q s depends on S as follows:
[0256] [Table 5]
[0257] In some embodiments, the sample p of the first coding block P i The filter coefficients of are taken from the sample p j is determined in such a way that the sample p of the first coding block P is used as a padding value for replacing other samples belonging to the first coding block P and outside the row buffer. i Note that, , is used as a padded value to replace other samples that belong to the first coding block P and are outside the row buffer.
[0258] In some embodiments, the row buffer has a row buffer size of 6 rows, and samples p0 to p4 are modified from the first coding block P to become samples p0' to p4'.
[0259] In some embodiments, the sample p of the first coding block P i are luma samples and / or chroma samples.
[0260] Note that when a 6 row buffer is applied, the filter condition is modified to use a limited number of rows from block "P" above. The maximum number of samples allowed is at most p5, i.e. DA=6.
[0261] Sample p i The filter coefficients of sample p belonging to the first block that is allowed to be used and stored in the row buffer are i is determined in such a way that is used as a padded version that replaces all other samples that are outside the row buffer.
[0262] For example, in the above case, DB=8 and DA=6, MB=7 and MA=5.
[0263] From the upper coding block (P), a maximum of 6 samples can be used and a maximum of 5 samples can be corrected, while for the lower block (q), a maximum of 7 samples can be corrected and a maximum of 8 samples can be corrected.
[0264] According to different implementations of the embodiments of the present disclosure, other possible values allowed may be as follows: DB=8 and DA=7, MB=7 and MA=6 DB=8 and DA=5, MB=7 and MA=4 DB=8 and DA=4, MB=7 and MA=3
[0265] The filter conditions and expressions can be derived using the same logic as above.
[0266] Other possible values allowed for both the lower and upper blocks are:
[0267] Additionally, DB=4 and DA=4, MB=3 and MA=3. This combination allows the use of a simple HEVC strong filter. The HEVC deblocking filter modifies up to 3 samples on each side of an edge.
[0268] FIG. 7 is a flow chart showing a method for determining whether a long tap filter should be used. As shown in FIG. 7, for the "long tap filter" condition to be true, the HEVC strong filter condition should be satisfied. In step 707, the details are described above. The long tap filter used in step 709 is different from the normal long tap filter used in step 708, the details are described above. In some examples, in addition to the HEVC filter, the normal long tap filter in step 708 uses 8 samples for the filter decision on each side of the edge, and 7 samples are modified on each side of the edge. However, the long tap filter in step 709 uses 8 samples for the filter decision on each side of the edge, and 7 samples are modified on one side of the edge, but 3 samples are modified on the other side of the edge.
[0269] Details for determining whether the HEVC strong filter condition should be satisfied are shown in Figure 8. The deblocking filtering decision for block boundaries, including deciding whether to use strong or normal filtering, is summarized in the flow chart of Figure 8.
[0270] In the first step 800, it is checked whether the currently filtered block edge is aligned with the 8x8 coding sample grid. If so, in the second step 801, it is checked whether the to-be-filtered block edge is a boundary between prediction units or transform units. If so, in the third step 802, it is checked whether the boundary strength Bs>0. If this condition is also met, in the fourth step 803, it is checked whether the condition 7.1 is true.
[0271] Condition 7.1 is used to check whether deblocking filtering is applied to block boundaries. In particular, the condition checks how much the signal on each side of the block boundary deviates from a straight line (a ramp).
[0272] If this condition is not met, or if none of the checks of steps 800, 801 and 802 are met, then in a fifth step 804 it is decided that no filtering is to be performed.
[0273] In a sixth step 803 it is checked whether condition 7.1 is true, and then in a seventh step 806 it is checked whether the further conditions 7.2, 7.3 and 7.4 are fulfilled.
[0274] Condition 7.2 makes sure that there are no large signal fluctuations on the side of the block boundary. Condition 7.3 verifies that the signal is flat on both sides. Condition 7.4 ensures that the steps between sample values on the side of the block boundary are small.
[0275] If all of these conditions are true, then in an eighth step 807, strong filtering is performed. Step 807 is directly replaced by step 702 of Figure 7. Otherwise, in a ninth step 808, it is decided that normal filtering is performed.
[0276] This solution performs part of the deblocking flowchart so that only one sample modification is performed.
[0277] In some instances, for horizontal edges that overlap the CTB boundary with either 6 or 4 rows available, an "asymmetric" filter is used.
[0278] This method is shown according to FIG. 16 (= FIGS. 16A and 16B). In FIG. 16, an image 1600 including two blocks 1601 and 1602 is shown. A block edge 1603 divides the blocks 1601 and 1602. According to the first embodiment of the present invention, the horizontal block edge 1603 overlaps with a coding tree block (CTB) boundary, the first coding block P is the block 1601 above the CTB boundary 1603, the second coding block Q is the block 1602 below the CTB boundary 1603, and FIG. 16 (= FIGS. 16A and 16B) shows a row buffer of 6 rows in size. For horizontal edges overlapping at the CTB boundary, DA < DB and MA < MB are set to further reduce the row buffer. This disclosure is applicable to all block types for the application of long-tap filters (such as the blocks 1601 and 1602 being luma blocks or chroma blocks) and functions for horizontal edges.
[0279] In other words, the coding block P 1601 is a block on one side of the CTB boundary 1603, and the coding block Q 1602 is a block on the other side of the CTB boundary 1603. In one example, it is understood that the coding block P 1601 is the block above the CTB boundary 1603 and the coding block Q 1602 is the block below the CTB boundary 1603. Therefore, the current coding block is considered to be the coding block Q 1602. In another example, when the coding block P is the block below the CTB boundary and the coding block Q is the block above the CTB boundary. Therefore, the current coding block is considered to be the coding block P. For the horizontal boundary, it can be understood that the lower block is the current coding block. This disclosure can also be applied in both of these two scenarios in the manner described above. Sample p, which is the outermost sample belonging to the first coding block P and allowed to be stored in the row buffer i is used as a padded value that replaces other samples outside the row buffer and belongs to the first image block.
[0280] The first filter may be an asymmetric filter that modifies a different number of samples on either side of a block edge (eg, a CU edge).
[0281] In one example, at the CTB boundary for the upper block, when the row buffer size is 6 rows, a "long tap" filter may be used that modifies up to 5 samples. Below, when the block height is 16 samples or more, a "long tap" filter may be used that uses up to 6 samples as filter input values and modifies up to 5 samples as filter output values.
[0282] In another example, at the CTB boundary for the upper block, when the row buffer size is 4 rows, a "long tap" filter may be used that modifies 3 samples. Below, when the block height is 16 samples or more, a "long tap" filter may be used that uses 4 samples as filter input values and modifies up to 3 samples as filter output values.
[0283] As shown in FIG. 16 (=FIG. 16A or 16B) or FIG. 17, if the size of the row buffer (e.g., row buffer size) is X, then for the first coding block P, DA=X and MA=X-1. i is used as a padding value to replace other samples that belong to the first coding block P and are outside the row buffer, where i=X-1 if the row buffer size is X. For example, sample p iis the outermost sample allowed to be stored in the row buffer, where i=x-1 if the allowed row buffer size is "x". For example, if the row buffer size is 4, i.e., x=4, then i=3 (as shown in FIG. 17). Thus, p3 is used as the sample to pad all other samples outside the row buffer. For example, samples p4, p5... are replaced by p3. In another example, if the allowed row buffer size is 6, i.e., x=6, then i=5. Thus, p5 is used as the sample to pad all other samples outside the row buffer. For example, samples p6, p7... are replaced by p5.
[0284] In summary, the present invention may be applied to a scenario in which the first coding block and the second coding block are luma blocks, and the row buffer has a row buffer size of X rows (eg, 4 rows).
[0285] It may be understood that the present invention is also applicable to a scenario in which the first coding block and the second coding block are chroma blocks and the row buffer has a row buffer size of X rows (eg, 2 rows).
[0286] Because possible "big block" blocking artifacts may occur at horizontal chroma CTU boundaries, the present disclosure may utilize a long-tap asymmetric filter that modifies MA samples from the upper block, but still modifies up to MB samples from the lower block to more effectively remove blocking artifacts.
[0287] FIG. 18 shows an example where the line buffer size is two lines. In FIG. 18, an image 1800 including two blocks 1801 and 1802 is shown. A block edge 1803 divides blocks 1801 and 1802. According to the example, when a horizontal block edge 1803 overlaps a coding tree block (CTB) boundary, a first coding block (such as a first luma block) P is in block 1801 above the CTB boundary 1803, and a second coding block (such as a second luma block) Q is in block 1802 below the CTB boundary 1803, DA < DB and MA < MB can be set to further reduce the line buffer for horizontal edges overlapping at the chroma CTB boundary. Here, DB is the number of samples used in filter determination for a coding block below the horizontal chroma CTB boundary, and MB is the number of samples modified in the filtering process for a coding block below the horizontal CTB boundary. In other words, MA can be understood as the maximum filter length of block 1801 above the horizontal chroma CTB boundary. MB may be understood as the maximum filter length of block 1802 below the horizontal chroma CTB boundary, and MA = 1, MB = 3, DA = 2, DB = 4. As shown in FIG. 18, the block size or height of both two blocks is equal to 16. It can be noted that when the first image block and the second image block are chroma blocks and SA and SB are 8 or more, MB = 3 and MA = 1. When the first image block and the second image block are chroma blocks and SB and SA are 8 or more, DB = 4 and DA = 2.
[0288] The formula for the original filter for determining a longer tap filter is as follows. dp0 = Abs(p 2,0 -2*p 1,0 +p 0,0 ) dp1 = Abs(p 2,1 -2*p 1,1 +p 0,1 ) dq0 = Abs(q 2,0 -2*q 1,0 +q0,0 ) dp1 = Abs(q 2,1 -2*q 1,1 +q 0,1 )
[0289] At the horizontal CTU boundary, the modified longer tap filter decision is as follows (p 2,0 , p 2,1 is simply p 1,0 and p 1,1 (Replaced by ). dp0 = Abs(p 21,0 -2*p 1,0 +p 0,0 ) dp1 = Abs(p 21,1 -2*p 1,1 +p 0,1 ) dq0 = Abs(q 2,0 -2*q 1,0 +q 0,0 ) dp1 = Abs(q 2,1 -2*q 1,1 +q 0,1 )
[0290] The original longer tap filtering formula for chroma longer tap deblocking is: p0'=Clip3(p0-t C ,p0+t C ,(p3+p2+p1+2*p0+q0+q1+q2+4)>>3) p1'=Clip3(p1-t C ,p1+t C ,(2*p3+p2+2*p1+p0+q0+q1+4)>>3) p2'=Clip3(p2-t C ,p2+t C ,(3*p3+2*p2+p1+p0+q0+4)>>3) q0'=Clip3(q0-t C ,q0+t C ,(p2+p1+p0+2*q0+q1+q2+q3+4)>>3) q1'=Clip3(q1-t C ,q1+t C,(p1+p0+q0+2*q1+q2+2*q3+4)>>3) q2'=Clip3(q2-t C ,q2+t C ,(p0+q0+q1+2*q2+3*q3+4)>>3)
[0291] At the horizontal CTU boundary, the modified longer tap deblocking formula is: p0'=Clip3(p0-t C ,p0+t C ,(p3+ p2+3*p1+2*p0+q0+q1+q2+4)>>3) p1'=Clip3(p1-t C ,p1+t C ,(2*p3+p2+2*p1+p0+q0+q14)>>3) p2'=Clip3(p2-t C ,p2+t C ,(3*p3+2*p2+p1+p0+q0+4)>>3) q0'=Clip3(q0-t C ,q0+t C ,(p2+2*p1+p0+2*q0+q1+q2+q3+4)>>3) q1'=Clip3(q1-t C ,q1+t C ,(p1+p0+q0+2*q1+q2+2*q3+4)>>3) q2'=Clip3(q2-t C ,q2+t C ,(p0+q0+q1+2*q2+3*q3+4)>>3)
[0292] The filtering equations can be derived simply by padding the unavailable samples to the outermost available samples on the sides of the coding block P.
[0293] Details of the proposed method are described in the format of this document as follows: The above described embodiment can be expressed as the following amendments to the VVC draft (part 8.8.3.3).
[0294] 8.8.3.3 Transformation Block Boundary Derivation Process The inputs to this process are: a position (xCb, yCb) specifying the top-left sample of the current coding block relative to the top-left sample of the current picture, - the variable nCbW, which specifies the width of the current coding block; - the variable nCbH, which specifies the height of the current coding block; - the variable cIdx, which specifies the color components of the current coding block; - the variable filterEdgeFlag, - edgeFlags, a two-dimensional (nCbW) x (nCbH) array, - 2-dimensional (nCbW) x (nCbH) arrays maxFilterLengthQs and maxFilterLengthPs, - The variable edgeType that specifies whether vertical (EDGE_VER) or horizontal (EDGE_HOR) edges are filtered.
[0295] The output to this process is: - A modified 2-dimensional (nCbW) x (nCbH) array edgeFlags, - Modified 2-dimensional (nCbW) x (nCbH) arrays maxFilterLengthQs, maxFilterLengthPs.
[0296] Depending on edgeType, the arrays edgeFlags, maxFilterLengthPs, and maxFilterLengthQs are derived as follows: - The variable gridSize is set as follows: gridSize==cIdx==0?4:8 (8-1024) - If edgeType is equal to EDGE_VER, the following applies: - The variable numEdges is set equal to Max(1,nCbW / gridSize). - For xEdge=0..numEdges-1 and y=0..nCbH-1 the following holds: - The horizontal position x within the interior of the current coding block is set equal to xEdge*gridSize. - The values of edgeFlags[x][y] are derived as follows: - pps_loop_filter_across_virtual_boundaries_disabled_flag equal to 1, if (xCb+x) is equal to PpsVirtualBoundariesPosX[n] for any n=0..pps_num_ver_virtual_boundaries-1, then edgeFlags[x][y] is set equal to 0. - Otherwise, if x is equal to 0, edgeFlags[x][y] is set equal to filterEdgeFlag. Otherwise, if the position (xCb+x, yCb+y) is on a transform block edge, then edgeFlags[x][y] is set equal to 1. - When edgeFlags[x][y] is equal to 1, the following holds: - If cIdx is equal to 0, the following holds: - The value of maxFilterLengthQs[x][y] is derived as follows: - if the width of the luma sample of the transform block at luma position (xCb+x, yCb+y) is less than or equal to 4, or the width of the luma sample of the transform block at luma position (xCb+x-1, yCb+y) is less than or equal to 4, then maxFilterLengthQs[x][y] is set equal to 1. Otherwise, if the width of the luma samples of the transform block at luma position (xCb+x, yCb+y) is greater than or equal to 32, then maxFilterLengthQs[x][y] is set equal to 7. - Otherwise, maxFilterLengthQs[x][y] is set equal to 3. - The value of maxFilterLengthPs[x][y] is derived as follows: - if the width of the luma sample of the transform block at luma position (xCb+x, yCb+y) is less than or equal to 4, or the width of the luma sample of the transform block at luma position (xCb+x-1, yCb+y) is less than or equal to 4, then maxFilterLengthPs[x][y] is set equal to 1. Otherwise, if the width of the luma sample of the transform block at luma position (xCb+x-1, yCb+y) is greater than or equal to 32, then maxFilterLengthPs[x][y] is set equal to 7. - Otherwise, maxFilterLengthPs[x][y] is set equal to 3. - Otherwise (cIdx is not equal to 0), the values of maxFilterLengthPs[x][y] and maxFilterLengthQs[x][y] are derived as follows: - If the width of the chroma sample of the transform block at chroma position (xCb+x, yCb+y) and its width at chroma position (xCb+x-1, yCb+y) are both greater than or equal to 8, then maxFilterLengthPs[x][y] and maxFilterLengthQs[x][y] are set equal to 3. - Otherwise, maxFilterLengthPs[x][y] and maxFilterLengthQs[x][y] are set equal to 1. - Otherwise (edgeType equals EDGE_HOR), the following is true: - The variable numEdges is set equal to Max(1,nCbH / gridSize). - For yEdge=0..numEdges-1 and x=0..nCbW-1 the following holds: - The vertical position y within the interior of the current coding block is set equal to yEdge*gridSize. - The values of edgeFlags[x][y] are derived as follows: - pps_loop_filter_across_virtual_boundaries_disabled_flag equal to 1, if (yCb+y) is equal to PpsVirtualBoundariesPosY[n] for any n=0..pps_num_hor_virtual_boundaries-1, then edgeFlags[x][y] is set equal to 0. - Otherwise, if y is equal to 0, edgeFlags[x][y] is set equal to filterEdgeFlag. Otherwise, if the position (xCb+x, yCb+y) is on a transform block edge, then edgeFlags[x][y] is set equal to 1. - When edgeFlags[x][y] is equal to 1, the following holds: - If cIdx is equal to 0, the following holds: - The value of maxFilterLengthQs[x][y] is derived as follows: - if the height of the luma sample of the transform block at luma position (xCb+x, yCb+y) is less than or equal to 4, or the height of the luma sample of the transform block at luma position (xCb+x, yCb+y-1) is less than or equal to 4, then maxFilterLengthQs[x][y] is set equal to 1. Otherwise, if the luma sample height of the transform block at luma position (xCb+x, yCb+y) is greater than or equal to 32, then maxFilterLengthQs[x][y] is set equal to 7. - Otherwise, maxFilterLengthQs[x][y] is set equal to 3. - The value of maxFilterLengthPs[x][y] is derived as follows: - if the height of the luma sample of the transform block at luma position (xCb+x, yCb+y) is less than or equal to 4, or the height of the luma sample of the transform block at luma position (xCb+x, yCb+y-1) is less than or equal to 4, then maxFilterLengthPs[x][y] is set equal to 1. Otherwise, if the luma sample height of the transform block at luma position (xCb+x, yCb+y-1) is greater than or equal to 32, then maxFilterLengthPs[x][y] is set equal to 7. - Otherwise, maxFilterLengthPs[x][y] is set equal to 3. - Otherwise (cIdx is not equal to 0), the values of maxFilterLengthPs[x][y] and maxFilterLengthQs[x][y] are derived as follows: - maxFilterLengthPs[x][y] and maxFilterLengthQs[x][y] are set equal to 3 if all of the following conditions are true: - The height of the chroma sample of the transform block at chroma position (xCb+x, yCb+y) and the height at chroma position (xCb+x, yCb+y-1) are both greater than or equal to 8. - Otherwise, if (yCb+y)%CtbHeightC is equal to 0, i.e. a horizontal edge overlaps the upper chroma CTB border and the height of the transformed block's chroma sample at chroma position (xCb+x, yCb+y) and its height at chroma position (xCb+x, yCb+y-1) are both greater than or equal to 8, then maxFilterLengthPs[x][y] is set to 1, maxFilterLengthQs[x][y] is set equal to 3, and the variable isHorCTBBoundary is set as true. - Otherwise, maxFilterLengthPs[x][y] and maxFilterLengthQs[x][y] are set equal to 1.
[0297] The above described embodiments may be expressed as the following amendments to the VVC draft (part 8.8.3.6.3):
[0298] 8.8.3.6.3 Decision process for chroma block edges …… When maxFilterLengthCbCr is equal to 3, the following ordered steps are applied: 1. The variables n1, dpq0, dpq1, dp, dq, and d are derived as follows: n1=(subSampleC==2)?1:3 (8-1138) If the variable isHorCTBBondary is true, p 3,0 =p 1,0 , p 2,0 =p 1,0 Katsu p 3,n1 =p 1,n1、 p 2,n1 =p 1,n1 It is. dp0 = Abs(p 2,0 -2*p 1,0 +p 0,0 ) (8-1139) dp1 = Abs(p 2,n1 -2*p 1,n1 +p 0,n1 ) (8-1140) dq0 = Abs(q 2,0 -2*q 1,0 +q 0,0 ) (8-1141) dq1 = Abs(q 2,n1 -2*q 1,n1 +q 0,n1 ) (8-1142) dpq0=dp0+dq0 (8-1143) dpq1=dp1+dq1 (8-1144) dp=dp0+dp1 (8-1145) dq=dq0+dq1 (8-1146) d=dpq0+dpq1(8-1147) ……
[0299] Thus, the present disclosure can use an asymmetric filter for chroma deblocking (similar to luma deblocking), which modifies one sample from the top block, but can modify up to three samples from the bottom as shown in Figure 18. Because more samples are modified, the filter is said to be more efficient at removing blocking artifacts compared to using a normal chroma filter, which only modifies one sample on each side of an edge. The present disclosure also allows for improved subjective quality for larger blocks at horizontal chroma CTU boundaries.
[0300] FIG. 6 is a block diagram illustrating an exemplary deblocking filter device 600 according to the techniques described in this disclosure (further details are described below, for example, based on FIG. 7, FIG. 8, or FIG. 10 to FIG. 12). The deblocking filter device 600 may be configured to perform deblocking techniques according to various examples described in this application. In general, one or both of the loop filter 120 from FIG. 1 and the loop filter 220 from FIG. 2 may include components substantially similar to those of the deblocking filter 600. Other video coding devices, such as a video encoder, a video decoder, a video encoder / decoder (codec), may also include components substantially similar to those of the deblocking filter 600. The deblocking filter 600 may be implemented in hardware, software, or firmware, or any combination thereof. When implemented in software or firmware, corresponding hardware (one or more processors or processing units, and a memory for storing instructions for the software or firmware) may also be provided.
[0301] In the example of FIG. 6, the deblocking filter device 600 includes a deblocking decision unit 604, a support definition 602 stored in memory, a deblocking filtering unit 606, a deblocking filter parameter 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. In general, the deblocking filter 600 receives data of a decoded block, for example, from an addition component 114, 214 that combines residual data for the block with prediction data. The data may further include an indication of how the block was predicted. In the example described below, the deblocking filter device 600 is configured to receive data including a decoded video block associated with a CTB (or LCU) and a CU quad-tree for the CTB, where the CU quad-tree describes how the CTB is divided into CUs and the prediction modes for the PUs and TUs of the leaf node CU.
[0302] Deblocking filter apparatus 600 may maintain an edge location data structure 605 in a memory of deblocking filter apparatus 600 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 the CTB, indicating 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 the TUs and PUs of CUs in the CTB that are candidates for deblocking.
[0303] The edge location data structure 605 may comprise 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 size CU of the CTB, or a TU and a PU of a CU. Assuming that the CTB has a size of N×N and the minimum size CU of the CTB is size M×M, the array may have a size of [N / M]×[N / M]×2, where the "2" represents the two possible directions of an edge between CUs (horizontal and vertical). For example, assuming that the CTB has 64×64 pixels and a minimum size CU of 8×8, the array may have [8]×[8]×[2] entries.
[0304] 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 of the entries of the edge position data structure 605. Thus, the values of the data structure may be initialized to false. In general, the edge location unit 603 may analyze the CU quad-tree to determine the positions of edges between two video blocks associated with the TUs and PUs of a CU of the CTB, and set the corresponding values in the edge position data structure 605 to true.
[0305] In general, an entry of the array may describe whether a corresponding edge exists in the CTB as a candidate for deblocking. That is, when the edge location unit 603 determines that an edge exists between two neighboring video blocks associated with a TU and a PU of a CU of the CTB, the edge location unit 603 may set a value of a corresponding entry in the edge location data structure 605 (e.g., to a value of “true”) to indicate that an edge exists.
[0306] The deblocking determination unit 604 generally determines for two neighboring blocks whether an edge between the two blocks should be deblocked. The deblocking determination unit 604 may determine the location of the edge using the edge location data structure 605. When the value of the edge location data structure 605 has a Boolean value, in some examples, the deblocking determination unit 604 may determine that a value of "true" indicates the presence of an edge, and a value of "false" indicates the absence of an edge.
[0307] In general, the deblocking decision unit 604 is configured with 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, for a luma block, the 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 the two blocks and MB (e.g., 7) pixels in the other of the two blocks. For example, for a chroma block, the function may be applied to a line of pixels perpendicular to the edge, with MA (e.g., 1) pixels in one of the two blocks and MB (e.g., 3) pixels in the other of the two blocks. The support definition 602 defines the support for the function. In general, the "support" corresponds to the pixels to which the function is applied.
[0308] 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 line emanating from the deblocking decision unit 604 represents the data for the block being output, unfiltered. 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 for the block without modifying the data. That is, the data may bypass the deblocking filtering unit 606. On the other hand, when the deblocking decision unit 604 determines that the edge should be deblocked, the deblocking decision unit 604 may cause the deblocking filtering unit 606 to filter values of pixels near the edge to deblock the edge.
[0309] The deblocking filtering unit 606 derives a definition of a deblocking filter from the deblocking filter parameters 608 for the edge to be deblocked, as indicated by the deblocking decision unit 604. In general, edge filtering uses values of pixels from near the current edge to be deblocked. Thus, both the deblocking decision function and the deblocking filter may have a region of support on either side of the edge. By applying a deblocking filter to pixels near the edge, the deblocking filtering unit 606 may smooth the values of the pixels such that high frequency transitions near the edge are reduced. In this manner, application of a deblocking filter to pixels near the edge may reduce blockiness artifacts near the edge.
[0310] This disclosure is applicable to the deblocking decision unit 604 and the deblocking filtering unit 606 of FIG.
[0311] It should be noted that the techniques presented herein are not limited to any particular deblocking filter implementation, and the deblocking filters described in this disclosure are some examples of deblocking filter implementations.
[0312] 10 is a block diagram illustrating an example deblocking method according to the techniques described in this disclosure (further details are described below based on, for example, FIG. 7, FIG. 8, and FIG. 16 (=16A and 16B), FIG. 17, and FIG. 18). Here, the block edge comprises a horizontal block edge (e.g., a CU edge or a CU boundary) between a first coding block and a second coding block, the horizontal block edge overlaps with a coding tree unit (CTB) boundary, the first coding block P is a block above the CTB boundary, the second coding block Q is a block below the CTB boundary, the first coding block has a block size SA in a vertical direction perpendicular to the horizontal block edge, and the second coding block has a block size SB in a vertical direction perpendicular to the horizontal block edge.
[0313] In FIG. 10, an embodiment of a deblocking method is shown. In step 1001, at most DA sample values of a first coding block adjacent to a horizontal block edge are used as a first filter decision value; In step 1002, at most DB sample values of a second coding block adjacent to a horizontal block edge are used as second filter decision values; In step 1003, modify at most MA sample values of a first coding block adjacent to a horizontal block edge as a first filter output value; In step 1004, modify at most MB sample values of a second coding block adjacent to a horizontal block edge as a second filter output value; DA≠DB and MA≠MB, SA>DA>MA and SB>DB>MB.
[0314] If the size of the row buffer (e.g., row buffer size) is X, then for the first coding block P, DA=X and MA=X-1; Sample p of the first coding block P i is used as a padded value to replace other samples that belong to the first coding block P and are outside the row buffer. If the row buffer size is X, then i=X-1.
[0315] In a further possible implementation of the embodiment, SA≠SB, or SA=SB.
[0316] In a further possible implementation of the embodiment, the DA <DB、およびMA<MBである。
[0317] In a further possible implementation of the embodiment, DB=8 and DA=6, MB=7 and MA=5.
[0318] In a further possible implementation of the embodiment, DB=8 and DA=7, MB=7 and MA=6.
[0319] In a further possible implementation of the embodiment, DB=8 and DA=5, MB=7 and MA=4.
[0320] In a further possible implementation of the embodiment, DB=8 and DA=4, MB=7 and MA=3.
[0321] In a further possible implementation of the embodiment, when a 6-row buffer (e.g., a row buffer with a row buffer size of 6) is applied, the extended filter condition equation sp3'=(sp3+Abs(p5-p3)+1)>>1 is verified.
[0322] When one or more filter condition expressions comprising the extended filter condition expressions are satisfied, a first filter is applied to sample values of a first coding block P adjacent to a horizontal block edge that overlaps a CTB boundary, where sp3=Abs(p3-p0), and p i Let i=0, 1, 2, 3, 4, or 5 denote the sample value of the first coding block P used in the filter decision.
[0323] In a further possible implementation of the embodiment, a 6-row buffer is applied, and when the block size SB of the second coding block Q is ≧ a predetermined size (e.g., 32), the extended filter condition sq3′=(sq3+Abs(q7−q3)+1)>>1 is checked. When one or more filter condition equations comprising the extended filter condition equation are satisfied, the first filter is applied to sample values of the second coding block Q adjacent to a horizontal block edge that overlaps with a CTB boundary. Here, sq 3= Abs(q0-q3), where q i , where i=0, 1, 2, 3, 4, . . . , or 7.
[0324] In a further possible implementation of the embodiment, when a four-line buffer is applied, the extended filter condition sp3′=(sp3+Abs(p3-p0)+1)>>1 is checked. When one or more filter conditions comprising the extended filter condition are satisfied, the first filter is applied to the sample values of the first coding block P adjacent to the horizontal block edge overlapping the CTB boundary, where sp3=Abs(p3-p0) and p i Let i denote the sample value of the first coding block P used in the filter decision, where i=0, 1, 2, or 3.
[0325] In a further possible implementation of the embodiment, the first filter output values p for i=0 to S−1 are i ' and the second filter output value qi ' is formulated as follows: p i '=(f i *Middle s,t +(64-f i )*P s +32)≫6), p i ±tcPD i Clipped to q i '=(g i *Middle s,t +(64-g i )*Q s +32)≫6), q i Clipped to ±tcPDi where tcPD i is the position-dependent clipping parameter, and g i , f i , Middle s,t , P s , and Q s depends on S, p i represents the sample values of the first coding block P, q i represents the sample values of the second coding block Q, S=MA for the first coding block P, i.e., at most the number of samples that can be modified in each column of the first image block that is perpendicular to and adjacent to the horizontal block edge, or S=MB for the second coding block Q, ie, at most the number of samples that can be modified in each column of the second image block Q that are perpendicular and adjacent to the horizontal block edge.
[0326] In a further possible implementation of the embodiment, the row buffer size X=6 and g i , f i , Middle s,t , P s , and Q s depends on S as follows:
[0327] [Table 6]
[0328] In a further possible implementation of the embodiment, the row buffer size X=4 and g i , f i , Middle s,t , P s , and Q s depends on S as follows:
[0329] [Table 7]
[0330] In a further possible implementation of the embodiment, the sample p of the first coding block P is i The filter coefficients of are taken from the sample p j is determined in such a way that {right arrow over (P)} is used as a padded value to replace other samples belonging to the first coding block P and outside the row buffer.
[0331] In a further possible implementation of the embodiment, the row buffer has a row buffer size of 6 rows and samples p0 to p4 are modified from the first coding block P to become samples p0' to p4'.
[0332] In a further possible implementation of an embodiment, the first filter is a long-tap filter or an asymmetric filter or an asymmetric tap filter.
[0333] In a further possible implementation of the embodiment, the sample p of the first coding block P is i are luma samples and / or chroma samples.
[0334] Note that the filter input values are perpendicular to the block edge starting at the block edge and are consecutive adjacent values. Also, the filter output values are perpendicular to the block edge starting at the block edge and are consecutive adjacent values.
[0335] FIG. 11 is a block diagram showing another exemplary deblocking method according to the techniques described in the present disclosure (for example, based on FIGS. 7, 8, and FIGS. 16 (=16A and 16B), 17, and 18, further details will be described below).
[0336] In step 1101, an edge between blocks is determined, and the edge between blocks includes a horizontal block edge (for example, a CU edge or a CU boundary) between a first coding block P and a second coding block Q, the horizontal block edge overlaps a coding tree unit (CTB) boundary, the first coding block P is a block above the CTB boundary, and the second coding block Q is a block below the CTB boundary.
[0337] In step 1102, a first filter (i.e., a long tap filter or an asymmetric filter or an asymmetric tap filter or an HEVC deblocking filter) is - The maximum of DA sample values of the first coding block adjacent to the horizontal block edge as the first filter determination value, and - The maximum of DB sample values of the second coding block adjacent to the horizontal block edge as the second filter determination value By applying based on this, it is determined whether the horizontal block edge between the first coding block P and the second coding block Q should be filtered, DA≠DB or DA<DB, and DA is equal to the row buffer size.
[0338] In step 1103, when it is determined that the horizontal block edge between the first coding block P and the second coding block Q should be filtered by applying a first filter, the first filter (i.e., a long tap filter or an asymmetric filter or an asymmetric tap filter) is applied to the values of samples near the horizontal block edge between the first coding block P and the second coding block Q.
[0339] In a further possible implementation of the embodiment, if the size of the row buffer (e.g., row buffer size) is X, then for the first coding block P, DA=X; Sample p of the first coding block P i is used as a padded value to replace other samples that belong to the first coding block P and are outside the row buffer, where i=X−1 if the row buffer size is X.
[0340] In a further possible implementation of the embodiment, at most MA sample values of a first coding block adjacent to a horizontal block edge are modified and at most MB sample values of a second coding block adjacent to a horizontal block edge are modified, where MA ≠ MB or MA <MBである。
[0341] In a further possible implementation of the embodiment, if the size of the row buffer (e.g., row buffer size) is X, then for the first coding block P, MA=X-1; Sample p of the first coding block P i is used as a padded value to replace other samples that belong to the first coding block P and are outside the row buffer, where i=X−1 if the row buffer size is X.
[0342] In a further possible implementation of the embodiment, DB=8 and DA=6, MB=7 and MA=5.
[0343] In a further possible implementation of the embodiment, when the size of the row buffer (e.g., row buffer size) is 6, up to L rows from the first coding block P are allowed to be used for the filtering decision, where L=6.
[0344] In a further possible implementation of the embodiment, when a 6-row buffer (e.g., a row buffer with a row buffer size of 6) is applied, the deblocking decision unit is configured to determine whether the extended filter condition equation sp3′=(sp3+Abs(p5-p3)+1)>>1 is satisfied. When one or more filter condition equations comprising the extended filter condition equation are satisfied, the first filter is applied to sample values of the first coding block P adjacent to a horizontal block edge overlapping the CTB boundary, where sp3=Abs(p3-p0) and p i Let i=0, 1, 2, 3, 4, or 5 denote the sample value of the first coding block P used in the filter decision.
[0345] Sp3 is essentially a metric that in HEVC is calculated as Abs(p3-p0), where for larger blocks, i.e. blocks with SA >= 32, sp3 is extended by the formula sp3'=(sp3+Abs(p7-p3)+1)>>1 and p7 is padded by p5.
[0346] Essentially, the filter conditions change primarily for coding block P. For coding block Q, the filter conditions remain the same for both edges at and not at a CTB boundary.
[0347] In a further possible implementation of the embodiment, when a 6-row buffer is applied and the second coding block Q has a block size SB greater than or equal to a predetermined size (e.g., 32), the deblocking decision unit is configured to determine whether the extended filter condition equation sq3′=(sq3+Abs(q7-q3)+1)>>1 is satisfied.
[0348] When one or more filter condition expressions comprising the extended filter condition expression are satisfied, the first filter is applied to sample values of the second coding block Q adjacent to a horizontal block edge that overlaps the CTB boundary.
[0349] Here, sq 3= Abs(q0-q3), where q i , where i=0, 1, 2, 3, 4, . . . , or 7.
[0350] In a further possible implementation form of the embodiment, when a 4-row buffer is applied, the deblocking decision unit is configured to determine whether the extended filter condition equation sp3′=(sp3+Abs(p3-p0)+1)>>1 is satisfied.
[0351] When one or more filter condition expressions comprising the extended filter condition expressions are satisfied, a first filter is applied to sample values of a first coding block P adjacent to a horizontal block edge that overlaps a CTB boundary, where sp3=Abs(p3-p0), and p i Let i denote the sample value of the first coding block P used in the filter decision, where i=0, 1, 2, or 3.
[0352] In a further possible implementation of the embodiment, the deblocking filtering unit calculates the first filter output value p for i=0 to S−1 based on the following formula: i ' and the second filter output value q i ' is configured to determine -p i '=(f i *Middle s,t +(64-f i )*P s +32)≫6), p i ±tcPD i Clipped to -q i '=(g i *Middle s,t +(64-g i )*Q s +32)≫6), q i Clipped to ±tcPDi where tcPD i is the position-dependent clipping parameter, and g i , f i , Middle s,t , P s , and Q s depends on S, Middle s,t is the Middle 7,7 or Middle 7,3 or Middle 3,7 and p i represents the sample values of the first coding block P, q i represents the sample values of the second coding block Q, S=MA for the first coding block P, i.e., at most the number of samples that can be modified in each column of the first image block that is perpendicular to and adjacent to the horizontal block edge, or S=MB for the second coding block Q, ie, at most the number of samples that can be modified in each column of the second image block Q that are perpendicular and adjacent to the horizontal block edge.
[0353] In a further possible implementation of the embodiment, the row buffer size X=6 and g i , f i , Middle s,t , P s , and Q s depends on S as follows:
[0354] [Table 8]
[0355] In the formula, P7 or P3 is basically P s Similarly, in the formula, Q7 or Q3 is basically Q s Please note that.
[0356] In a further possible implementation of the embodiment, the row buffer size X=4 and g i , f i , Middle s,t , P s , and Q s depends on S as follows:
[0357] [Table 9]
[0358] In a further possible implementation of the embodiment, the sample p of the first coding block P is i The filter coefficients of are taken from the sample p j is determined in such a way that {right arrow over (P)} is used as a padded value for replacing other samples belonging to the first coding block P and outside the row buffer.
[0359] In a further possible implementation of the embodiment, DB=8 and DA=6, MB=7 and MA=5.
[0360] In a further possible implementation of the embodiment, DB=8 and DA=7, MB=7 and MA=6.
[0361] In a further possible implementation of the embodiment, DB=8 and DA=5, MB=7 and MA=4.
[0362] In a further possible implementation of the embodiment, DB=8 and DA=4, MB=7 and MA=3.
[0363] In a further possible implementation of the embodiment, the row buffer has a row buffer size of 6 rows and samples p0 to p4 are modified from the first coding block P to become samples p0' to p4'.
[0364] In a further possible implementation of the embodiment, the sample p of the first coding block P is i are luma and / or chroma samples. Essentially, the same idea of row buffer constraints can be applied to chroma long-tap filters as well. Based on the chroma row buffer size, the corresponding outermost sample is used to pad other samples.
[0365] As shown in FIG. 16A or FIG. 16B, from the upper block (P), a maximum of 6 samples can be used in the filter decision and a maximum of 5 samples can be corrected, while for the lower block (q), a maximum of 7 samples can be corrected in the filter decision and a maximum of 8 samples can be corrected.
[0366] Note that the filter input values are adjacent and perpendicular to the block edge starting at the block edge, and the filter output values are adjacent and perpendicular to the block edge starting at the block edge.
[0367] 12 is a block diagram illustrating an example deblocking method according to the techniques described in this disclosure (further details are described below, for example, based on FIG. 7, FIG. 8, and FIG. 16 (=16A and 16B), FIG. 17, and FIG. 18). Here, the block edge comprises a horizontal block edge (e.g., a CU edge or a CU boundary) between the current image block and a neighboring image block of the current image block, the current image block is on the horizontal block edge, and the current image block has a block size SA in the vertical direction, where the vertical direction is perpendicular to the horizontal block edge.
[0368] In FIG. 12, an embodiment of a deblocking method is shown.
[0369] In step 1201, if a horizontal block edge overlaps a horizontal coding tree block (CTB) boundary, a maximum filter length MA for the current image block is determined based at least on a row buffer size of a row buffer associated with the CTB boundary.
[0370] In step 1203, values of up to MA samples of the current image block are modified as the first filter output values, where up to MA samples are obtained from columns of the current image block perpendicular to and adjacent to the horizontal block edge.
[0371] The filtering decision and the filtering can be adjusted according to the available row buffers, which therefore results in optimal subjective quality.
[0372] If the row buffer associated with a CTB boundary has a row buffer size of X rows, then MA=X-1, where X is a positive integer.
[0373] The method further comprises: In step 1202, if a horizontal block edge overlaps a horizontal coding tree block (CTB) boundary, values of up to DA samples of the current image block are used as first filter decision values, where up to DA samples are taken from columns of the current image block that are perpendicular to and adjacent to the horizontal block edge.
[0374] In some possible implementations of the embodiment, if a row buffer associated with a CTB boundary has a row buffer size of X rows, then DA=X and MA=X-1, where X is a positive integer.
[0375] In some possible implementations of the embodiment, when the current image block is a chroma block, the row buffer associated with the CTB boundary has a row buffer size of 2 rows; or When the current image block is a luma block, the row buffer associated with the CTB boundary has a row buffer size of 4 rows.
[0376] In some possible implementations of the embodiment, if a row buffer associated with a CTB boundary has a row buffer size of X rows, Current image block sample p i is used as a padding value to replace other samples that belong to the current image block and are outside the row buffer, where i=X-1.
[0377] Current image block sample p i is the chroma sample of the current chroma block. i It can be noted that
[0378] Current image block sample p i It can be noted that x is the Xth sample in the column that is perpendicular and adjacent to the horizontal block edge, and is also the outermost sample allowed to be stored in the row buffer associated with the CTB boundary.
[0379] In a further possible implementation of the embodiment, the sample p of the current image block i The filter coefficients of are taken from the sample p, which belongs to the current image block and is the outermost sample allowed to be stored in the row buffer. i is determined in such a way that it is used as a padding value to replace other samples that belong to the current image block and are outside the row buffer. In other words, the sample p i The filter coefficients associated with sample p i is used as a padded value, and the sample p i is the outermost sample that belongs to the current image block and is allowed to be stored in the row buffer associated with the CTB boundary. For example, sample p iThe number of times that is used as a padded value is 2, so that the sample p i The filter coefficient associated with sample p i This is because it is counted.
[0380] According to such an implementation of the embodiment, the padded samples can be treated as available samples, so that the original filter determination and filtering process do not need to be modified, and the increase in computational complexity is minimized, especially in hardware.
[0381] In one example, when the row buffer has a row buffer size of 2 rows, sample p i is sample p1, and the filter coefficient associated with sample p1 is 3.
[0382] In different implementations of the embodiment, When the current image block is a luma block and SA is equal to or greater than 32, then MA=3 and SA is the height of the current image block; or When the current image block is a luma block and SA is greater than or equal to 16, then MA=3 and SA is the height of the current image block.
[0383] In different implementations of the embodiment, When the current image block is a luma block and SA is greater than or equal to 32, then DA=4 and SA is the height of the current image block; or When the current image block is a luma block and SA is greater than or equal to 16, DA=4 and SA is the height of the current image block.
[0384] In a further possible implementation of the embodiment, when the current image block is a chroma block and SA is equal to or greater than 8, MA=1 and SA is the height of the current image block.
[0385] In a further possible implementation of the embodiment, When the current image block is a chroma block and SA is greater than or equal to 8, DA=2 and SA is the height of the current image block.
[0386] The method further comprises: In step 1001, when the current image block is a chroma block, determining whether a horizontal block edge overlaps a horizontal chroma CTB boundary; or and when the current image block is a luma block, determining whether a horizontal block edge overlaps a horizontal luma CTB boundary.
[0387] Current image block sample p i is the luma sample, or the sample p of the current image block i Note that is the chroma sample, where i belongs to {0,1,2,...,SA-1}.
[0388] It may be understood that the current image block is a transform block, or the current image block is a coding block.
[0389] 13 is a simplified block diagram of an apparatus 1300 that may be used as either or both of the source device 310 and the destination device 320 from FIG. 3 according to an exemplary embodiment. The apparatus 1300 may implement the techniques of the present disclosure. The apparatus 1300 may be in the form of a computing system including multiple computing devices, or may be in the form of a single computing device, such as a mobile phone, tablet computer, laptop computer, notebook computer, desktop computer, etc.
[0390] The processor 1302 of the device 1300 may be a central processing unit. Alternatively, the processor 1302 may be any other type of device or devices, now or later developed, capable of manipulating or processing information. Although the disclosed implementations may be practiced with a single processor, e.g., processor 1302, as shown, advantages in speed and efficiency may be obtained using more than one processor.
[0391] In some implementations, the memory 1304 in the device 1300 may be a read-only memory (ROM) device or a random access memory (RAM) device. 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 further 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 a secondary storage 1314, which may be, for example, a memory card used with a mobile computing device. Because a video communication session may include a large amount of information, it may be stored in the storage 1314 and loaded into the memory 1304 in whole or in part as needed for processing.
[0392] 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 touch-sensing elements operable to sense touch input with a display. 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. When an output device is or includes a display, the display may be implemented in a variety of ways, including by a liquid crystal display (LCD), a cathode ray tube (CRT) display, a plasma display, or a light emitting diode (LED) display, such as an organic LED (OLED) display.
[0393] 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 an image of a user operating the device 1300. The image sensing device 1320 may be positioned to face toward a user operating the 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 an area directly adjacent to the display 1318 from which the display 1318 is viewable.
[0394] The device 1300 may also include or be in communication with a voice sensing device 1322, such as a microphone or any other existing or later developed voice sensing device that can sense sound near the device 1300. The voice sensing device 1322 may be positioned to face a user operating the device 1300 and may be configured to receive sounds, such as speech or other vocalizations made by the user while the user is operating the device 1300.
[0395] Although FIG. 13 shows the processor 1302 and memory 1304 of the apparatus 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 of the processors) that may be directly coupled, or across a local area network or other network. The memory 1304 may be distributed across multiple machines, such as a network-based memory, or memory among multiple machines that perform the operations of the apparatus 1300. Although shown here as a single bus, the bus 1312 of the apparatus 1300 may comprise multiple buses. Additionally, the secondary storage 1314 may be directly coupled to other components of the apparatus 1300 or may be accessed over a network, and may comprise a single integrated unit such as a memory card or multiple units such as multiple memory cards. Thus, the apparatus 1300 may be implemented in a wide variety of configurations.
[0396] 14 is a schematic diagram of an exemplary device 1400 for video coding according to an embodiment of the present disclosure. The computing device 1400 is suitable for implementing the disclosed embodiments as described herein. In an embodiment, the computing device 1400 may be a decoder, such as the video decoder 200 of FIG. 2, or an encoder, such as the video encoder 100 of FIG. 1. In an embodiment, the computing device 1400 may be one or more components of the video decoder 200 of FIG. 2 or the video encoder 100 of FIG. 1 as described above.
[0397] The computing device 1400 comprises 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. The computing device 1400 may also comprise optical-electrical (OE) and electrical-optical (EO) components coupled to the ingress port 1420, the receiver unit 1410, the transmitter unit 1440, and the egress port 1450 for emission or ingress of optical or electrical signals. The computing device 1400 may also include wireless transmitters and / or receivers in some examples.
[0398] The processor 1430 is implemented by hardware and software. The processor 1430 may be implemented as one or more CPU chips, cores (such as, for example, a multi-core processor), field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), and digital signal processors (DSPs). The processor 1430 is in communication with the ingress port 1420, the receiver unit 1410, the transmitter unit 1440, the egress port 1450, and the memory 1460. The processor 1430 comprises 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 significantly improves the functionality of the computing device 1400 and results in the transformation of the computing device 1400 into different states. Alternatively, the coding module 1414 may be implemented as instructions stored in memory 1460 and executed by the processor 1430 (eg, as a computer program product stored on a non-transitory medium).
[0399] The memory 1460 comprises one or more disks, tape drives, and solid state drives, and may be used as overflow data storage devices to store programs when such programs are selected for execution, and to store instructions and data read during program execution. The memory 1460 may be volatile and / or non-volatile, and may be read only memory (ROM), random access memory (RAM), ternary content addressable memory (TCAM), and / or static random access memory (SRAM). The computing device 1400 also obtains input / output (I / O) devices for interacting with an end user. For example, the computing device 1400 may include a display such as a monitor for visual output, speakers for audio output, and a keyboard / mouse / trackball, etc., for user input.
[0400] 19 is a block diagram illustrating an example device 1900 according to the techniques described in this disclosure (further details are described below, for example, based on FIGS. 7, 8, and 16 (=16A and 16B), 17, and 18). The device for use in an image encoder and / or decoder for deblocking a block edge between blocks, the block edge comprising a horizontal block edge (e.g., a CU edge or a CU boundary) between a first coding block P and a second coding block Q, a horizontal block edge overlaps a coding tree unit (CTU) boundary, the first coding block P is a block above the CTU boundary, and the second coding block Q is a block below the CTU boundary; The first coding block has a block size SA perpendicular to the horizontal block edge; The second coding block has a block size SB perpendicular to the horizontal block edge; Device 1900 is - modifying at most MA sample values of the first coding block adjacent to a horizontal block edge as the first filter output value; - modifying as second filter output values up to MB sample values of the second coding block adjacent to a horizontal block edge, - using at most DA sample values of a first coding block adjacent to a horizontal block edge as a first filter decision value, - a deblocking filter configured to use up to DB sample values of a second coding block adjacent to a horizontal block edge as a second filter decision value; DA≠DB and MA≠MB, SA>DA>MA and SB>DB>MB.
[0401] In some implementations of the embodiment, if the size of the row buffer (e.g., row buffer size) is X, then for the first coding block P, DA=X and MA=X-1; Sample p of the first coding block P i is used as a padded value to replace other samples that belong to the first coding block P and are outside the row buffer, where i=X−1 if the row buffer size is X.
[0402] In some implementations of the embodiment, the DA <DBかつMA<MBである。
[0403] In some implementations of the embodiment, DB=8 and DA=6, MB=7 and MA=5.
[0404] In some implementations of the embodiment, DB=8 and DA=7, MB=7 and MA=6.
[0405] In some implementations of the embodiment, DB=8 and DA=5, MB=7 and MA=4.
[0406] In some implementations of the embodiment, DA=8 and DA=4, MB=7 and MA=3.
[0407] In a further possible implementation of the embodiment, when a 6-row buffer (e.g., a row buffer with a row buffer size of 6) is applied, the expanded filter condition equation sp3'=(sp3+Abs(p5-p3)+1)>>1 is confirmed; When one or more filter condition expressions comprising the extended filter condition expression are satisfied, a first filter is applied to sample values of a first coding block P adjacent to a horizontal block edge that overlaps a CTU boundary; sp3 = Abs(p3-p0), where p i Let i=0, 1, 2, 3, 4, or 5 denote the sample value of the first coding block P used in the filter decision.
[0408] In a further possible implementation of the embodiment, when a 6-row buffer is applied and the block size SB of the second coding block Q is equal to or greater than a predetermined size (e.g., 32), the extended filter condition formula sq3′=(sq3+Abs(q7−q3)+1)>>1 is verified; When the one or more filter condition expressions comprising the extended filter condition expressions are satisfied, the first filter is applied to sample values of the second coding block Q adjacent to a horizontal block edge that overlaps with a CTU boundary; sq 3= Abs(q0-q3), where q i , where i=0, 1, 2, 3, 4, . . . , or 7.
[0409] In a further possible implementation of the embodiment, when a four-line buffer is applied, the expanded filter condition sp3'=(sp3+Abs(p3-p0)+1)>>1 is verified; When one or more filter condition expressions comprising the extended filter condition expression are satisfied, a first filter is applied to sample values of a first coding block P adjacent to a horizontal block edge that overlaps a CTU boundary; sp3 = Abs(p3-p0), where p i Let i denote the sample value of the first coding block P used in the filter decision, where i=0, 1, 2, or 3.
[0410] In a further possible implementation of the embodiment, the first filter output values p for i=0 to S−1 are i ' and the second filter output value q i ' is formulated as follows: -p i '=(f i *Middle s,t +(64-f i )*P s +32)≫6), p i ±tcPD i Clipped to -q i '=(g i *Middle s,t +(64-g i )*Q s +32)≫6), q i Clipped to ±tcPDi where tcPD i is the position-dependent clipping parameter, and g i , f i , Middle s,t , P s , and Q s depends on S, p i represents the sample values of the first coding block P, q i represents the sample values of the second coding block Q, S=MA for the first coding block P, i.e., at most the number of samples that can be modified in each column of the first image block that is perpendicular to and adjacent to the horizontal block edge, or S=MB for the second coding block Q, ie, at most the number of samples that can be modified in each column of the second image block Q that are perpendicular and adjacent to the horizontal block edge.
[0411] In some implementations of the embodiment, the row buffer size X=6, and g i , f i , Middle s,t , P s , and Q s depends on S as follows:
[0412] [Table 10]
[0413] In some implementations of the embodiment, the row buffer size X=4, and g i , f i , Middle s,t , P s , and Q s depends on S as follows:
[0414] [Table 11]
[0415] In some implementations of the embodiment, the filter coefficients are determined based on the sample p i is determined in such a way that {right arrow over (P)} is used as a padded value to replace other samples belonging to the first coding block P and outside the row buffer.
[0416] In one example, the row buffer has a row buffer size of 6 rows, and samples p0 to p4 are modified from the first coding block P to become samples p0' to p4'.
[0417] In a further possible implementation of the embodiment, the deblocking filter is a longer tap filter or an asymmetric filter or an asymmetric tap filter.
[0418] In some embodiments of the embodiment, the sample p i are luma and / or chroma samples.
[0419] Below is a description of the application of the encoding and decoding methods as illustrated in the above mentioned embodiments, and the systems using them.
[0420] 20 is a block diagram showing a content supply system 3100 for realizing a content distribution service. The content supply system 3100 includes a capture device 3102, a terminal device 3106, and optionally includes a display 3126. The capture device 3102 communicates with the terminal device 3106 via a communication link 3104. The communication link may include the communication channel 13 described above. The communication link 3104 includes, but is not limited to, WIFI, Ethernet, cable, wireless (3G / 4G / 5G), USB, or any type of combination thereof, etc.
[0421] The capture device 3102 may generate data and encode the data by the encoding method as shown in the above embodiment. Alternatively, the capture device 3102 may deliver the data to a streaming server (not shown in the figure), which encodes the data and transmits the encoded data to the terminal device 3106. The capture device 3102 includes, but is not limited to, a camera, a smartphone or smart pad, a computer or laptop, a video conferencing system, a PDA, an in-vehicle device, or any combination thereof. For example, the capture device 3102 may include a source device 12 as described above. When the data includes video, the video encoder 20 included in the capture device 3102 may actually perform the video encoding process. When the data includes audio (i.e., video), the audio encoder included in the capture device 3102 may actually perform the video encoding process. In some practical scenarios, the capture device 3102 delivers the encoded video data and audio data by multiplexing them together. In other practical scenarios, for example in a video conferencing system, the encoded audio data and the encoded video data are not multiplexed. The capture device 3102 delivers the encoded audio data and the encoded video data separately to the terminal device 3106 .
[0422] In the content supply system 3100, the terminal device 310 receives and reproduces the encoded data. The terminal device 3106 may be a device with data receiving and restoring capability, such as a smartphone or smart pad 3108, a computer or laptop 3110, a network video recorder (NVR) / digital video recorder (DVR) 3112, a TV 3114, a set-top box (STB) 3116, a video conferencing system 3118, a video surveillance system 3120, a personal digital assistant (PDA) 3122, an in-vehicle device 3124, or any combination thereof, capable of decoding the encoded data mentioned above. For example, the terminal device 3106 may include the destination device 14 as described above. When the encoded data includes video, the video decoder 30 included in the terminal device is prioritized to perform video decoding. When the encoded data includes audio, the audio decoder included in the terminal device is prioritized to perform audio decoding processing.
[0423] In a terminal device with a display, for example, a smartphone or smart pad 3108, a computer or laptop 3110, a network video recorder (NVR) / digital video recorder (DVR) 3112, a TV 3114, a personal digital assistant (PDA) 3122, or an in-vehicle device 3124, the terminal device can provide the decoded data to the display. In a terminal device without a display, for example, an STB 3116, a video conferencing system 3118, or a video surveillance system 3120, an external display 3126 is connected at the terminal to receive and show the decoded data.
[0424] When each device in the system performs encoding or decoding, it can use a picture encoding device or a picture decoding device as shown in the embodiments mentioned above.
[0425] 21 is a diagram illustrating an example structure of a terminal device 3106. After the terminal device 3106 receives a stream from the capture device 3102, a protocol progression unit 3202 analyzes the transmission protocol of the stream. The protocol includes, but is not limited to, Real Time Streaming Protocol (RTSP), HyperText Transfer Protocol (HTTP), HTTP Live Streaming Protocol (HLS), MPEG-DASH, Real Time Transport Protocol (RTP), Real Time Messaging Protocol (RTMP), or any kind of combination thereof.
[0426] After the protocol proceeding unit 3202 processes the stream, a stream file is generated. The file is output to the demultiplexing unit 3204. The demultiplexing unit 3204 can separate the multiplexed data into encoded audio data and encoded video data. As described above, in some practical scenarios, for example in a video conference system, the encoded audio data and the encoded video data are not multiplexed. In this situation, the encoded data is sent to the video decoder 3206 and the audio decoder 3208 without passing through the demultiplexing unit 3204.
[0427] Through the demultiplexing process, a video elementary stream (ES), an audio ES, and optionally subtitles are generated. A video decoder 3206, including the video decoder 30 as described in the above-mentioned embodiment, decodes the video ES by the decoding method as shown in the above-mentioned embodiment to generate video frames, and provides this data to a synchronization unit 3212. An audio decoder 3208 decodes the audio ES to generate audio frames, and provides this data to a synchronization unit 3212. Alternatively, the video frames may be stored in a buffer (not shown in FIG. Y) before being provided to the synchronization unit 3212. Similarly, the audio frames may be stored in a buffer (not shown in FIG. Y) before being provided to the synchronization unit 3212.
[0428] The synchronization unit 3212 synchronizes video and audio frames and provides the video / audio to a video / audio display 3214. For example, the synchronization unit 3212 synchronizes the presentation of video and audio information. The information may be coded in the syntax using timestamps for the presentation of the coded audio and visual data and timestamps for the delivery of the data stream itself.
[0429] If subtitles are included in the stream, the subtitle decoder 3210 decodes the subtitles, synchronizes it with the video and audio frames, and provides the video / audio / subtitles to the video / audio / subtitle display 3216.
[0430] The present invention is not limited to the above-mentioned systems, and either the picture encoding device or the picture decoding device in the above-mentioned embodiments may be incorporated into other systems, for example a vehicle system.
[0431] The invention has been described in relation to various embodiments herein. However, other variations to the disclosed embodiments can be understood and effected by those skilled in the art of practicing the claimed invention, from a study of the drawings, the disclosure, and the appended claims. In the claims, the word "comprises" 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 measures are usually recited in different dependent claims does not indicate that a combination of these measures cannot be used to advantage. The computer program may be stored / distributed on a suitable medium, such as an optical storage medium or a solid-state medium, provided together with or as part of other hardware, but may also be distributed in other forms, such as via the Internet or other wired or wireless communication systems.
[0432] Whenever the embodiments and descriptions refer to the term "memory", the term "memory" shall be understood to be and / or comprise a magnetic disk, an optical disk, a Read-Only Memory (ROM), or a Random Access Memory (RAM), unless expressly stated otherwise [enumeration of all possible memories].
[0433] Whenever the embodiments and descriptions refer to the term "network," the term "network" shall be understood to be and / or comprise, unless expressly stated otherwise, [enumeration of all possible memories].
[0434] Those skilled in the art will appreciate that the "blocks" ("units") of the various figures (method and apparatus) depict or describe functions of embodiments of the present invention (and not necessarily individual "units" of hardware or software), and therefore equally describe functions or features of apparatus embodiments as well as method embodiments (unit = step).
[0435] The term "unit" is used only to illustrate the functionality of an encoder / decoder embodiment and is not intended to limit the present disclosure.
[0436] In some embodiments provided in the present application, it should be understood that the disclosed system, device, and method may be implemented in other ways. For example, the described device embodiment is merely an example. For example, the division of units is merely a division of logical functions, and may be other divisions in actual implementation. For example, multiple units or components may be combined or integrated into another system, or some features may be ignored or not implemented. In addition, the mutual coupling or direct coupling or communication connection shown or discussed may be implemented by using some interface. Indirect coupling or communication connection between devices or units may be implemented in an electrical, mechanical, or other form.
[0437] 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, and may be located in one place or distributed among multiple network units. Some or all of the units may be selected according to the actual needs to achieve the objectives of the solutions of the embodiments.
[0438] In addition, the functional units of the embodiments of the present invention may be integrated into one processing unit, or each of the units may exist physically alone, or two or more units may be integrated into one unit.
[0439] Embodiments of the present invention may further comprise apparatus, such as an encoder and / or a decoder, comprising processing circuitry configured to perform any of the methods and / or processes described herein.
[0440] The 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, with or without firmware or software, such as a processor, microcontroller, digital signal processor (DSP), field programmable gate array (FPGA), application specific integrated circuit (ASIC), etc.
[0441] The functionality of the encoder 100 (and corresponding encoding method 100) and / or the decoder 200 (and corresponding decoding method 200) may be implemented by program instructions stored on a computer-readable medium. The program instructions, when executed, cause a processing circuit, a computer, a processor, etc. to perform the steps of the encoding and / or decoding method. The computer-readable medium may be any medium, including a non-transitory storage medium on which a program is stored, such as a Bluray® disc, a DVD, a CD, a USB (flash) drive, a hard disk, a server storage available over a network, etc.
[0442] An embodiment of the present invention comprises or is a computer program comprising a program code for performing any of the methods described herein, when the computer program runs on a computer.
[0443] An embodiment of the present invention comprises or is a computer readable medium comprising program code that, when executed by a processor, causes a computer system to perform any of the methods described herein.
[0444] 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 over a computer-readable medium as one or more instructions or codes and executed by a hardware-based processing unit. A computer-readable medium may include a computer-readable storage medium, which corresponds to a tangible medium, such as a data storage medium, or a communication medium, which includes any medium that facilitates transfer of a computer program from one place to another, for example according to a communication protocol. In this manner, a computer-readable medium may generally correspond to (1) a tangible computer-readable storage medium that is non-transitory, or (2) a communication medium, such as a signal wave or carrier wave. A data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, codes, and / or data structures for implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium.
[0445] By way of example, and not limitation, such computer-readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, 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 referred to as 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 in the definition of media. 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 instead cover non-transitory tangible storage media. As used herein, disk and disc include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray® disc, where disks typically reproduce data magnetically and discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer readable media.
[0446] 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 gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Thus, 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. In addition, in some aspects, the functions described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into a synthesized codec. Also, the techniques may be fully implemented in one or more circuits or logic elements.
[0447] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including wireless handsets, integrated circuits (ICs), or sets of ICs (e.g., chipsets). 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 realization by different hardware units. Rather, as described above, the various units may be combined in 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.
[0448] Although several embodiments have been provided in this disclosure, it should be understood that the disclosed systems and methods can be embodied in many other specific forms without departing from the spirit or scope of the disclosure. The examples should be considered as illustrative rather than limiting, and are not intended to be limited to the details given herein. For example, various elements or components may be combined or integrated into another system, or certain features may be omitted or not implemented.
[0449] Additionally, techniques, systems, subsystems, and methods described and illustrated in various embodiments as being separate or distinct may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as being coupled or directly coupled or in communication with one another may also be indirectly coupled or in communication, whether electrically, mechanically, or otherwise, through some interface, device, or intermediate component. Other examples of modifications, substitutions, and alterations are ascertainable by one of ordinary skill in the art and may be made without departing from the spirit and scope disclosed herein. [Explanation of symbols]
[0450] 12 Source Device 13 Communication Channels 14 Destination Device 20 Video Encoder 30 Video Decoder 100 Encoder 101 Pictures 102 Input 103 Picture Block 104 Residual Calculation Unit 105 Residual Blocks 106 Conversion Units 107 Transformed Coefficients 108 Transformed Coefficients 108 quantization units 109 Quantized coefficients, quantized residual coefficients 110 Inverse Quantization Unit 111 Dequantized coefficients, Dequantized residual coefficients 112 Reverse conversion unit 113 Inverse Transformed Block, Inverse Transformed Dequantized Block, Inverse Transformed Residual Block 114 Reconstruction Unit 115 Reconstructed Blocks 116 Buffer Unit 118 Buffers 120 Loop Filter 121 Filtered Blocks 130 Decoded Picture Buffer 142 Inter-Estimation Units 143 Inter prediction parameters 144 Inter Prediction Units 145 predicted blocks 152 Intra Estimation Units 153 Intra prediction parameters 154 intra prediction units 155 Intra predicted blocks 160 prediction units 162 Mode Selection Unit 165 predicted blocks 170 Entropy Coding Unit 171 Encoded Picture Data 172 Output 200 Decoder 202 Input 204 Entropy Decoding Unit 209 Quantized Coefficients 210 Inverse Quantization Unit 212 Reverse conversion unit 214 Reconstruction Unit 216 Buffers 220 Loop Filter 230 Decoded Picture Buffer 231 Decoded Picture Data 244 Inter Prediction Units 254 Inter Prediction Units 260 prediction units 262 Mode Selection Unit 265 predicted blocks 300 Coding System 310 Source Device 312 Picture Source 313 Picture Data 314 Preprocessor, Preprocessing Unit 315 Picture Data 318 Communication Interface 320 Destination Device 322 Communication Interface 326 Post-processor, Post-processing unit 327 Post-Processed Picture Data 328 Display Device 330 Encoded Data 401 Coding Blocks 402 Coding Block 600 Deblocking Filter Device 602 Support Definition 603 Edge Location Unit 604 Deblocking Decision Unit 605 Edge Position Data Structure 606 Deblocking Filtering Unit 608 Deblocking Filter Parameters 1300 equipment 1302 Processor 1304 Memory 1306 Data 1308 Operating Systems 1310 Application Program 1312 Bus 1314 Storage 1318 Display 1320 Image sensing device 1322 Voice sensing device 1400 Video Coding Device 1410 Receiver Unit 1414 Coding Module 1420 Inlet Port 1430 Processor 1440 Transmitter Unit 1450 Exit Port 1460 Memory 1501 Block Edge 1603 Block Boundary 1900 devices 1910 Deblocking Filter 3100 Contents Supply System 3102 Capture Device 3104 Communication Links 3106 Terminal Device 3108 Smartphone / Pad 3110 Computer / Laptop 3112 NVR / DVR 3114 TV 3116 Set-top box 3118 Video Conference System 3120 Video Surveillance System 3122 PDA 3124 In-vehicle devices 3126 Display 3202 Protocol Progression Unit 3204 Demultiplexing Unit 3206 Video Decoder 3208 Audio Decoder 3210 Subtitle Decoder 3212 Synchronous Unit 3214 Video / Audio Display 3216 Video / Audio / Subtitle Display
Claims
1. 1. A device for use in an image encoder and / or an image decoder for deblocking block edges between image blocks, the block edges including a horizontal block edge between a first image block and a second image block, comprising: the first image block has a block size SA in the vertical direction; the second image block has a block size SB in the vertical direction, the vertical direction being perpendicular to the horizontal block edge; The device comprises: If the horizontal block edge overlaps a horizontal coding tree block (CTB) boundary, modifying values of up to MA samples of the first image block as first filter output values, the up to MA samples being taken from columns of the first image block perpendicular to and adjacent to the horizontal block edge; a deblocking filter configured to modify values of up to MB samples of the second image block as second filter output values, the up to MB samples being taken from columns of the second image block that are perpendicular to and adjacent to the horizontal block edge; the first image block is a block above the CTB boundary and the second image block is a block below the CTB boundary; A device, wherein MA≠MB, and MA is determined based on a row buffer size of a row buffer associated with said CTB boundary.
2. The deblocking filter further comprises: if the horizontal block edge overlaps the horizontal coding tree block (CTB) boundary, using values of up to DA samples of the first image block as first filter decision values, the up to DA samples being taken from columns of the first image block perpendicular to and adjacent to the horizontal block edge; use values of up to DB samples of the second image block as second filter decision values, the up to DB samples being taken from columns of the second image block perpendicular to and adjacent to the horizontal block edge; The device of claim 1 , wherein DA≠DB, and DA is determined based on the row buffer size of the row buffer associated with the CTB boundary.
3. 2. The device of claim 1, wherein if the row buffer has the row buffer size of X rows, then for the first image block, MA=X-1, where X is a positive integer.
4. 3. The device of claim 2, wherein if the row buffer has the row buffer size of X rows, then for the first image block, DA=X and MA=X-1, where X is a positive integer.
5. When the first image block and the second image block are chroma blocks, the row buffer has a row buffer size of two rows; or 5. The device of claim 1, wherein when the first image block and the second image block are luma blocks, the row buffer has the row buffer size of four rows.
6. if the row buffer associated with the CTB boundary has the row buffer size of X rows, The sample p of the first image block i 6. The device of claim 1 , wherein i=X−1 is used as a padded value to replace other samples that belong to the first image block and are outside the row buffer.
7. The sample p of the first image block i The filter coefficients of sample p i 6. The device of claim 1 , wherein the first image block is determined in such a way that the first sample is used as a padded value to replace the other samples that belong to the first image block and are outside the row buffer.
8. The sample p of the first image block i The filter coefficients associated with the sample p i is used as a padded value, and the sample p i 6. The device of claim 1, wherein x is the outermost sample allowed to be stored in the row buffer that belongs to the first image block and is associated with the CTB boundary.
9. When both the first image block and the second image block are luma blocks, and SB and SA are equal to or greater than 32, MB=7 and MA=3; or 9. The device of claim 1, wherein when both the first image block and the second image block are luma blocks, SB is 32 or more, and SA is 16 or more, MB=7 and MA=3.
10. When both the first image block and the second image block are luma blocks, and SB and SA are equal to or greater than 32, then DB=8 and DA=4; or 10. The device of claim 2, wherein when both the first image block and the second image block are luma blocks, SB is 32 or more, and SA is 16 or more, DB=8 and DA=4.
11. 9. The device of claim 1, wherein when the first image block and the second image block are chroma blocks and SA and SB are 8 or greater, MB=3 and MA=1.
12. 12. The device of claim 2, wherein when the first image block and the second image block are chroma blocks and SB and SA are 8 or greater, DB=4 and DA=2.
13. 13. The device of claim 1, wherein the second image block is a current image block and the first image block is a neighboring image block adjacent to the current image block.
14. The sample p of the first image block i is a luma sample, or the sample p i 14. The device of claim 1, wherein i is a chroma sample, i belonging to {0, 1, 2, ..., SA-1}.
15. When the first image block and the second image block are chroma blocks, the deblocking filter is configured to determine whether the horizontal block edge overlaps a horizontal chroma CTB boundary; or 15. The device of claim 1, wherein when the first and second image blocks are luma blocks, the deblocking is configured to determine whether the horizontal block edge overlaps a horizontal luma CTB boundary.
16. 16. The device of claim 1, wherein the deblocking filter is a longer tap filter or an asymmetric filter or an asymmetric tap filter.
17. 1. A device for use in an image encoder and / or an image decoder for deblocking block edges between image blocks, the block edges including a horizontal block edge between a first image block and a second image block, comprising: the first image block has a block size SA in a vertical direction, and the second image block has a block size SB in the vertical direction, the vertical direction being perpendicular to the horizontal block edge; The device comprises: If the horizontal block edge overlaps a horizontal coding tree block (CTB) boundary, modifying values of up to MA samples of the first image block as first filter output values, the up to MA samples being taken from columns of the first image block perpendicular to and adjacent to the horizontal block edge, where MA=1; a deblocking filter configured to modify values of up to MB samples of the second image block as second filter output values, the up to MB samples being taken from columns of the second image block that are perpendicular to and adjacent to the horizontal block edge, where MB=3; The device, wherein the first image block is a chroma block above the CTB boundary, the second image block is another chroma block below the CTB boundary, and SA and SB are greater than or equal to 8.
18. 1. A device for use in an image encoder and / or decoder for deblocking block edges between image blocks, the block edges including a horizontal block edge between a first image block and a second image block, comprising: the first image block has a block size SA in the vertical direction; the second image block has a block size SB in the vertical direction, the vertical direction being perpendicular to the horizontal block edge; If the horizontal block edge overlaps a horizontal coding tree block (CTB) boundary, the device: using values of up to DA sample values of the first image block as first filter decision values, the up to DA samples being taken from columns of the first image block perpendicular to and adjacent to the horizontal block edge, where DA=2; a deblocking filter configured to use values of up to DB samples of the second image block as second filter decision values, the up to DB samples being taken from columns of the second image block that are perpendicular to and adjacent to the horizontal block edge, where DB=4; The device, wherein the first image block is a chroma block above the CTB boundary, the second image block is another chroma block below the CTB boundary, and SA and SB are greater than or equal to 8.
19. An encoder for encoding an image, comprising a device according to any one of claims 1 to 18.
20. A decoder for decoding images, comprising a device according to any one of claims 1 to 18.
21. 1. A deblocking method for deblocking a block edge between image blocks in image encoding and / or decoding, the block edge comprising: a horizontal block edge between a first image block and a second image block; the first image block has a block size SA in the vertical direction; the second image block has a block size SB in the vertical direction, the vertical direction being perpendicular to the horizontal block edge; The method further comprises: if the horizontal block edge overlaps a horizontal coding tree block (CTB) boundary: modifying values of up to MA samples of the first image block as first filter output values, the up to MA samples being taken from columns of the first image block perpendicular to and adjacent to the horizontal block edge; modifying values of up to MB samples of the second image block as second filter output values, the up to MB samples being taken from columns of the second image block perpendicular to and adjacent to the horizontal block edge; the first image block is a block above the CTB boundary and the second image block is a block below the CTB boundary; A deblocking method, wherein MA≠MB, and MA is determined based on a row buffer size of a row buffer associated with the CTB boundary.
22. The method further comprises: if the horizontal block edge overlaps the horizontal coding tree block (CTB) boundary; using values of up to DA samples of the first image block as first filter decision values, the up to DA samples being taken from columns of the first image block perpendicular to and adjacent to the horizontal block edge; using values of up to DB samples of the second image block as second filter decision values, the up to DB samples being taken from columns of the second image block perpendicular to and adjacent to the horizontal block edge; The method of claim 1 , wherein DA≠DB, and DA is determined based on the row buffer size of the row buffer associated with the CTB boundary.
23. 22. The method of claim 21, wherein if the row buffer has the row buffer size of X rows, then for the first image block, MA=X-1, where X is a positive integer.
24. 23. The method of claim 22, wherein if the row buffer has the row buffer size of X rows, then for the first image block, DA=X and MA=X-1, where X is a positive integer.
25. When the first image block and the second image block are chroma blocks, the row buffer has a row buffer size of two rows; or 25. The method of claim 21, wherein when the first image block and the second image block are luma blocks, the row buffer has the row buffer size of 4 rows.
26. if the row buffer associated with the CTB boundary has the row buffer size of X rows, The sample p of the first image block i 26. The method of claim 21, wherein i=X−1, is used as a padded value to replace other samples belonging to the first image block and outside the row buffer.
27. The sample p of the first image block i The filter coefficients of sample p are the outermost samples that belong to the first block and are allowed to be stored in the row buffer. i 26. The method according to claim 21, wherein x is determined in such a way that x is used as a padded value replacing the other samples belonging to the first image block and outside the row buffer.
28. The sample p of the first image block i The filter coefficients associated with the sample p i is used as a padded value, and the sample p i 26. The method of claim 21, wherein x is the outermost sample allowed to be stored in the row buffer that belongs to the first image block and is associated with the CTB boundary.
29. When both the first image block and the second image block are luma blocks, and SB and SA are equal to or greater than 32, MB=7 and MA=3; or 29. The method of claim 21, wherein when both the first image block and the second image block are luma blocks, SB is 32 or more, and SA is 16 or more, MB=7 and MA=3.
30. When both the first image block and the second image block are luma blocks, and SB and SA are equal to or greater than 32, then DB=8 and DA=4; or 30. The method of claim 22, wherein when both the first image block and the second image block are luma blocks, SB is 32 or more, and SA is 16 or more, DB=8 and DA=4.
31. 29. The method of claim 21, wherein when the first image block and the second image block are chroma blocks, and SA and SB are 8 or greater, MB=3 and MA=1.
32. 32. The method of claim 22, wherein the first image block and the second image block are chroma blocks, and when SA and SA are 8 or greater, DB=4 and DA=2.
33. 33. The method of any one of claims 21 to 32, wherein the second image block is a current image block and the first image block is a neighboring image block adjacent to the current image block.
34. The sample p of the first image block i is a luma sample, or the sample p i 34. The method of claim 21, wherein i is a chroma sample, i belonging to {0, 1, 2, ..., SA-1}.
35. The method further comprises: determining whether the horizontal block edge overlaps a horizontal chroma CTB boundary when the first image block and the second image block are chroma blocks; or 35. The method of claim 21, comprising determining whether the horizontal block edge overlaps a horizontal luma CTB boundary when the first and second image blocks are luma blocks.
36. 36. The method of claim 21, wherein the deblocking filter is a longer tap filter or an asymmetric filter or an asymmetric tap filter.
37. 1. A deblocking method for deblocking a block edge between image blocks in image encoding and / or decoding, the block edge comprising: a horizontal block edge between a first image block and a second image block; the first image block has a block size SA in the vertical direction; the second image block has a block size SB in the vertical direction, the vertical direction being perpendicular to the horizontal block edge; The method further comprises: if the horizontal block edge overlaps a horizontal coding tree block (CTB) boundary: modifying values of up to MA samples of the first image block as first filter output values, the up to MA samples being taken from columns of the first image block that are perpendicular to and adjacent to the horizontal block edge, where MA=1; modifying values of up to MB samples of the second image block as second filter output values, where the up to MB samples are taken from columns of the second image block that are perpendicular to and adjacent to the horizontal block edge, where MB=3; The first image block is a chroma block above the CTB boundary, the second image block is another chroma block below the CTB boundary, and SA and SB are greater than or equal to 8.
38. 1. A deblocking method for deblocking a block edge between image blocks in image encoding and / or decoding, the block edge comprising: a horizontal block edge between a first image block and a second image block; the first image block has a block size SA in the vertical direction; the second image block has a block size SB in the vertical direction, the vertical direction being perpendicular to the horizontal block edge; The method further comprises: if the horizontal block edge overlaps a horizontal coding tree block (CTB) boundary: using values of up to DA samples of the first image block as first filter decision values, where the up to DA samples are taken from columns of the first image block that are perpendicular to and adjacent to the horizontal block edge, where DA=2; using values of up to DB samples of the second image block as second filter decision values, where the up to DB samples are taken from columns of the second image block that are perpendicular to and adjacent to the horizontal block edge, where DB=4; The first image block is a chroma block above the CTB boundary, the second image block is another chroma block below the CTB boundary, and SA and SB are greater than or equal to 8.
39. An encoding method for encoding an image, comprising a deblocking method according to any one of claims 21 to 38 and claims 60 to 76.
40. A decoding method for decoding an image comprising a deblocking method according to any one of claims 21 to 38 and claims 60 to 76.
41. 1. A device for use in an image encoder and / or image decoder for deblocking block edges between image blocks, the block edges including a horizontal block edge between a current image block and a neighboring image block of the current image block, the current image block being on top of the horizontal block edge; the current image block has a block size SA in a vertical direction, the vertical direction being perpendicular to the horizontal block edge; If the horizontal block edge overlaps a horizontal coding tree block (CTB) boundary, the device: determining a maximum filter length MA for the current image block based at least on a row buffer size of a row buffer associated with the CTB boundary; A device comprising: a deblocking filter configured to modify values of up to MA samples of the current image block as first filter output values, the up to MA samples being obtained from columns of the current image block that are perpendicular to and adjacent to the horizontal block edge.
42. 42. The device of claim 41, wherein if the row buffer associated with the CTB boundary has the row buffer size of X rows, then MA=X-1, where X is a positive integer.
43. The deblocking filter further comprises: if the horizontal block edge overlaps the horizontal coding tree block (CTB) boundary, 43. The device of claim 41 or 42, configured to use values of up to DA samples of the current image block as first filter decision values, the up to DA samples being taken from columns of the current image block that are perpendicular to and adjacent to the horizontal block edge.
44. 44. The device of claim 43, wherein if the row buffer associated with the CTB boundary has the row buffer size of X rows, then DA=X and MA=X-1, where X is a positive integer.
45. When the current image block is a chroma block, the row buffer associated with the CTB boundary has a row buffer size of two rows; or 45. The device of claim 41, wherein when the current image block is a luma block, the row buffer associated with the CTB boundary has the row buffer size of four rows.
46. if the row buffer associated with the CTB boundary has the row buffer size of X rows, The current image block sample p i 46. The device of claim 41, wherein i=X−1, is used as a padded value to replace other samples that belong to the current image block and are outside the row buffer.
47. The current image block sample p i The filter coefficients of sample p i 46. A device according to claim 41, wherein said first sample is determined in such a way that said first sample is used as a padded value to replace the other samples belonging to the current image block and outside the row buffer.
48. The current image block sample p i The filter coefficients associated with the sample p i is used as a padded value, and the sample p i 46. A device according to claim 41, wherein x is the outermost sample allowed to be stored in the row buffer that belongs to the current image block and is associated with the CTB boundary.
49. When the row buffer has a row buffer size of 2 rows, the sample p i is the sample p 1 and the sample p 1 49. The device of claim 47 or 48, wherein the filter coefficient associated with
50. When the current image block is a luma block and SA is equal to or greater than 32, MA=3, and SA is the height of the current image block; or 50. The device of claim 41, wherein when the current image block is a luma block and SA is 16 or greater, MA=3, and SA is the height of the current image block.
51. When the current image block is a luma block and SA is equal to or greater than 32, DA=4, and SA is the height of the current image block; or 45. The device of claim 43 or 44, wherein when the current image block is a luma block and SA is 16 or greater, DA=4, and SA is the height of the current image block.
52. When the current image block is a chroma block and SA is equal to or greater than 8, MA=1; 50. A device according to any one of claims 41 to 49, wherein SA is the height of the current image block.
53. When the current image block is a chroma block and SA is equal to or greater than 8, DA=2; 45. A device according to claim 43, wherein SA is the height of the current image block.
54. When the current image block is a chroma block, the deblocking filter is configured to determine whether the horizontal block edge overlaps a horizontal chroma CTB boundary; or 54. The device of claim 41, wherein when the current image block is a luma block, the deblocking is configured to determine whether the horizontal block edge overlaps a horizontal luma CTB boundary.
55. The current image block sample p i is a luma sample, or the sample p i 55. The device of claim 1, wherein i is a chroma sample, i belonging to {0, 1, 2, ..., SA-1}. [Claim 55a] the current image block is a transform block; or 56. The device of claim 41, wherein the current image block is a coding block.
56. 1. A device for use in an image encoder and / or image decoder for deblocking block edges between image blocks, the block edges including a horizontal block edge between a current image block and a neighboring image block of the current image block, the current image block being on top of the horizontal block edge; the current image block has a block size SA in a vertical direction, the vertical direction being perpendicular to the horizontal block edge; If the horizontal block edge overlaps a horizontal coding tree block (CTB) boundary, the device: modifying values of up to MA samples of the current image block as first filter output values, the up to MA samples being taken from columns of the current image block perpendicular to and adjacent to the horizontal block edge; a deblocking filter configured to use values of up to DA samples of the current image block as first filter decision values, the up to DA samples being taken from columns of the current image block that are perpendicular to and adjacent to the horizontal block edge. A device, wherein when the current image block is a luma block and SA is greater than or equal to 32, MA=3 and DA=4.
57. 1. A device for use in an image encoder and / or image decoder for deblocking block edges between image blocks, the block edges including a horizontal block edge between a current image block and a neighboring image block of the current image block, the current image block being on top of the horizontal block edge; the current image block has a block size SA in a vertical direction, the vertical direction being perpendicular to the horizontal block edge; If the horizontal block edge overlaps a horizontal coding tree block (CTB) boundary, the device: modifying values of up to MA samples of the current image block as first filter output values, the up to MA samples being taken from columns of the current image block perpendicular to and adjacent to the horizontal block edge; a deblocking filter configured to use values of up to DA samples of the current image block as first filter decision values, the up to DA samples being taken from columns of the current image block that are perpendicular to and adjacent to the horizontal block edge. A device, wherein when the current image block is a chroma block and SA is greater than or equal to 8, MA=1 and DA=2.
58. An encoder for encoding an image, comprising a device according to any one of claims 41 to 57.
59. A decoder for decoding an image, comprising a device according to any one of claims 41 to 57.
60. 1. A deblocking method for deblocking block edges between image blocks in image encoding and / or decoding, the block edges including a horizontal block edge between a current image block and a neighboring image block of the current image block, the current image block being on top of the horizontal block edge; the current image block has a block size SA in a vertical direction, the vertical direction being perpendicular to the horizontal block edge; The method further comprises: if the horizontal block edge overlaps a horizontal coding tree block (CTB) boundary: determining a maximum filter length MA for the current image block based at least on a row buffer size of a row buffer associated with the CTB boundary; and modifying values of up to MA samples of the current image block as first filter output values, the up to MA samples being obtained from columns of the current image block that are perpendicular to and adjacent to the horizontal block edge.
61. 61. The method of claim 60, wherein if the row buffer associated with the CTB boundary has the row buffer size of X rows, then MA=X-1, where X is a positive integer.
62. The method further comprises: if the horizontal block edge overlaps the horizontal coding tree block (CTB) boundary; 62. A method according to claim 60 or 61, comprising using values of up to DA samples of the current image block as first filter decision values, the up to DA samples being taken from columns of the current image block that are perpendicular to and adjacent to the horizontal block edge.
63. 63. The method of claim 62, wherein if the row buffer associated with the CTB boundary has the row buffer size of X rows, then DA=X and MA=X-1, where X is a positive integer.
64. When the current image block is a chroma block, the row buffer associated with the CTB boundary has a row buffer size of two rows; or 64. The method of claim 60, wherein when the current image block is a luma block, the row buffer associated with the CTB boundary has the row buffer size of 4 rows.
65. if the row buffer associated with the CTB boundary has the row buffer size of X rows, The current image block sample p i 65. The method of any one of claims 60 to 64, wherein i=X-1, is used as a padded value to replace other samples belonging to the current image block and outside the row buffer.
66. The current image block sample p i The filter coefficients of sample p are the outermost samples that belong to the current image block and are allowed to be stored in the row buffer. i 65. A method according to any one of claims 60 to 64, wherein x is determined in such a way that y is used as a padded value replacing the other samples belonging to the current image block and outside the row buffer.
67. The current image block sample p i The filter coefficients associated with the sample p i is used as a padded value, and the sample p i 65. A method according to any one of claims 60 to 64, wherein x is the outermost sample allowed to be stored in the row buffer that belongs to the current image block and is associated with the CTB boundary.
68. When the row buffer has a row buffer size of 2 rows, the sample p i is the sample p 1 and the sample p 1 68. The method of claim 66 or 67, wherein the filter coefficient associated with is 3.
69. When the current image block is a luma block and SA is equal to or greater than 32, MA=3, and SA is the height of the current image block; or 69. The method of any one of claims 60 to 68, wherein when the current image block is a luma block and SA is greater than or equal to 16, MA=3, and SA is the height of the current image block.
70. When the current image block is a luma block and SA is equal to or greater than 32, DA=4, and SA is the height of the current image block; or 64. The method of claim 62 or 63, wherein when the current image block is a luma block and SA is greater than or equal to 16, DA=4, and SA is the height of the current image block.
71. 69. The method of any one of claims 60 to 68, wherein when the current image block is a chroma block and SA is greater than or equal to 8, MA=1, and SA is the height of the current image block.
72. 64. The method of claim 62 or 63, wherein when the current image block is a chroma block and SA is greater than or equal to 8, DA=2, and SA is the height of the current image block.
73. The method further comprises: when the current image block is a chroma block, determining whether the horizontal block edge overlaps a horizontal chroma CTB boundary; or 73. The method of any one of claims 60 to 72, comprising, when the current image block is a luma block, determining whether the horizontal block edge overlaps a horizontal luma CTB boundary.
74. The current image block sample p i is a luma sample, or the sample p i 74. The method of claim 1, wherein i is a chroma sample, i belonging to {0, 1, 2, ..., SA-1}.
75. 1. A deblocking method for deblocking block edges between image blocks in image encoding and / or decoding, the block edges including a horizontal block edge between a current image block and a neighboring image block of the current image block, the current image block being on top of the horizontal block edge; the current image block has a block size SA in a vertical direction, the vertical direction being perpendicular to the horizontal block edge; The method further comprises: if the horizontal block edge overlaps a horizontal coding tree block (CTB) boundary: modifying values of up to MA samples of the current image block as first filter output values, the up to MA samples being taken from columns of the current image block perpendicular to and adjacent to the horizontal block edge; using values of up to DA samples of the current image block as first filter decision values, the up to DA samples being taken from columns of the current image block perpendicular to and adjacent to the horizontal block edge; A deblocking method, wherein when the current image block is a luma block and SA is greater than or equal to 32, MA=3 and DA=4.
76. 1. A deblocking method for deblocking block edges between image blocks in image encoding and / or decoding, the block edges including a horizontal block edge between a current image block and a neighboring image block of the current image block, the current image block being on top of the horizontal block edge; The current image block has a block size SA in a vertical direction, the vertical direction being perpendicular to the horizontal block edge, and the method further comprises: if the horizontal block edge overlaps a horizontal coding tree block (CTB) boundary: modifying values of up to MA samples of the current image block as first filter output values, the up to MA samples being taken from columns of the current image block perpendicular to and adjacent to the horizontal block edge; using values of up to DA samples of the current image block as first filter decision values, the up to DA samples being taken from columns of the current image block perpendicular to and adjacent to the horizontal block edge; A deblocking method, wherein when the current image block is a chroma block and SA is greater than or equal to 8, MA=1 and DA=2.
77. A non-transitory computer-readable medium storing computer instructions that, when executed by one or more processors, cause the one or more processors to perform a method according to any one of claims 21-38 and claims 60-76.
Citation Information
Patent Citations
Image processing device and image processing method
US20140112396A1
Image processing device and image processing method
WO2013001957A1