Disclosed are a video encoding method and apparatus and a video decoding method and apparatus. The method of encoding video includes: producing a first predicted coding unit of a current coding unit, which is to be encoded; determining whether the current coding unit comprises a portion located outside a boundary of a current picture; and producing a second predicted coding unit is produced by changing a value of pixels of the first predicted coding unit by using the pixels of the first predicted coding unit and neighboring pixels of the pixels when the current coding unit does not include a portion located outside a boundary of the current picture. Accordingly, a residual block that is the difference between the current encoding unit and the second predicted encoding unit, can be encoded, thereby improving video prediction efficiency.

Patent
   RE47759
Priority
Dec 09 2009
Filed
Oct 29 2015
Issued
Dec 03 2019
Expiry
Dec 09 2030

TERM.DISCL.
Assg.orig
Entity
Large
0
28
currently ok
0. 9. An apparatus of encoding video, the apparatus comprising:
one or more processors; and
a memory storing a program which, when executed, causes the one or more processors to:
split, by the one or more processors, an image into a plurality of maximum coding units based on information about a size of a maximum coding unit;
determine, by the one or more processors, at least one coding unit included in the maximum coding unit among the plurality of maximum coding units by splitting the maximum coding unit based on split information;
determine, by the one or more processors, neighboring pixels of a current block used for intra prediction by using available neighboring pixels of the current block when a prediction mode of the current block is intra prediction;
produce, by the one or more processors, a first prediction value of the current block including a first pixel located on a top border in the current block and a second pixel located on a left border in the current block and a third pixel located on a upper left corner in the current block, by calculating an average value of at least one of the available neighboring pixels adjacent to the current block;
produce, by the one or more processors, a second prediction value of the first pixel by using a weighted average value of the first prediction value and a pixel value of one neighboring pixel adjacent to the first pixel and located on a same column with the first pixel, a second prediction value of the second pixel by using a weighted average value of the first prediction value and a pixel value of one neighboring pixel adjacent to the second pixel and located on a same row with the second pixel, and a second prediction value of the third pixel by using a weighted average value of the first prediction value, a pixel value of one neighboring pixel adjacent to the third pixel and located on a same column with the third pixel, and a pixel value of one neighboring pixel adjacent to the third pixel and located on a same row with the third pixel;
obtain, by the one or more processors, residual of the current block including a first residual of the first pixel obtained by using the second prediction value of the first pixel, a second residual of the second pixel obtained by using the second prediction value of the second pixel and a third residual of the third pixel obtained by using the second prediction value of the third pixel; and
output the prediction mode of the current block, the first residual of the first pixel, the second residual of the second pixel and the third residual of the third pixel into a bitstream,
wherein, when the neighboring pixels of the current block are located within boundary of a current picture, the neighboring pixels of the current block located within the boundary of a current picture are determined as available.
0. 10. An apparatus comprising a non-transitory computer-readable storage medium storing thereon instructions that, when executed by one or more processors of the apparatus, cause the one or more processors to execute operations to generate image data corresponding to a video bitstream, the image data comprising:
an encoded data obtained by performing intra prediction on a current block; and
a prediction mode information of the current block,
wherein the operations, executed using the at least one processor of the apparatus, include:
splitting an image into a plurality of maximum coding units and generating information about a size of a maximum coding unit,
determining at least one coding unit included in the maximum coding unit among the plurality of maximum coding units by splitting the maximum coding unit and generating split information,
when a prediction mode of the current block is intra prediction mode, determining neighboring pixels of the current block used for intra prediction by using available neighboring pixels of the current block, producing a first prediction value of the current block including a first pixel located on a top border in the current block and a second pixel located on a left border in the current block and a third pixel located on a upper left corner in the current block, by calculating an average value of at least one of the available neighboring pixels adjacent to the current block, and
producing a second prediction value of the first pixel by using a weighted average value of the first prediction value and a pixel value of one neighboring pixel adjacent to the first pixel and located on a same column with the first pixel, a second prediction value of the second pixel by using a weighted average value of the first prediction value and a pixel value of one neighboring pixel adjacent to the second pixel and located on a same row with the second pixel, and a second prediction value of the third pixel by using a weighted average value of the first prediction value, a pixel value of one neighboring pixel adjacent to the third pixel and located on a same column with the third pixel, and a pixel value of one neighboring pixel adjacent to the third pixel and located on a same row with the third pixel,
wherein the encoded data includes residual of the current block including a first residual of the first pixel obtained by using the second prediction value of the first pixel, a second residual of the second pixel obtained by using the second prediction value of the second pixel and a third residual of the third pixel obtained by using the second prediction value of the third pixel, and
wherein, when the neighboring pixels of the current block are located within boundary of a current picture, the neighboring pixels of the current block located within the boundary of a current picture are determined as available.
0. 8. An apparatus configured to restoring an encoded block, the apparatus comprising:
one or more processors; and
a memory storing a program which, when executed, causes the one or more processors to:
split an image into a plurality of maximum coding units based on information about a size of a maximum coding unit, and determine at least one coding unit included in the maximum coding unit among the plurality of maximum coding units by splitting the maximum coding unit based on split information;
extract information regarding a prediction mode of a current block included in the at least one coding unit, from a received bitstream;
determine neighboring pixels of the current block used for intra prediction by using available neighboring pixels of the current block when the extracted information indicates the prediction mode of the current block is intra prediction, produce a first prediction value of the current block including a first pixel located on a top border in the current block and a second pixel located on a left border in the current block and a third pixel located on a upper left corner in the current block by calculating an average value of at least one of the neighboring pixels adjacent to the current block, and produce a second prediction value of the first pixel by using a weighted average value of the first prediction value and a pixel value of one neighboring pixel adjacent to the first pixel and located on a same column with the first pixel, a second prediction value of the second pixel by using a weighted average value of the first prediction value and a pixel value of one neighboring pixel adjacent to the second pixel and located on a same row with the second pixel, and a second prediction value of the third pixel by using a weighted average value of the first prediction value, a pixel value of one neighboring pixel adjacent to the third pixel and located on a same column with the third pixel, and a pixel value of one neighboring pixel adjacent to the third pixel and located on a same row with the third pixel;
obtain residual of the first pixel, residual of the second pixel and residual of the third pixel from the received bitstream;
restore the current block including a restored pixel value of the first pixel obtained by adding the residual of the first pixel and the second prediction value of the first pixel, a restored pixel value of the second pixel obtained by adding the residual of the second pixel and the second prediction value of the second pixel, a restored pixel value of the third pixel obtained by adding the residual of the third pixel and the second prediction value of the third pixel; and
output a restored current block including the restored pixel value of the first pixel, the restored pixel value of the second pixel, and the restored pixel value of the third pixel,
wherein, when the neighboring pixels of the current block are located within a boundary of a current picture, the neighboring pixels of the current block located within the boundary of the current picture are determined as available.
0. 1. A method of decoding video, the method comprising:
extracting information regarding a prediction mode for a current decoding unit, which is to be decoded, from a received bitstream;
producing a first predicted decoding unit of the current decoding unit, based on the extracted information;
determining whether the current decoding unit includes a portion located outside a boundary of a current picture; and
producing a second predicted decoding unit by changing values of pixels of the first predicted decoding unit by using pixels of the first predicted decoding unit and neighboring pixels of the pixels when the current decoding unit does not include the portion located outside the boundary of the current picture, and skipping the producing the second predicted decoding unit when the current decoding unit includes the portion located outside the boundary of the current picture.
0. 2. The method of claim 1, wherein the determining whether the current decoding unit includes the portion located outside the boundary of the current picture comprises obtaining index information indicating whether the producing the second predicted decoding unit is to be performed.
0. 3. The method of claim 2, wherein:
if the index information has a first predetermined value, the index information indicates that the producing the second predicted decoding unit is not to be performed; and
if the index information has a second predetermined value, the index information indicates that the producing the second predicted decoding unit is to be performed.
0. 4. An apparatus for decoding video, the apparatus comprising:
an entropy decoder which extracts information regarding a prediction mode for a current decoding unit, which is to be decoded, from a received bitstream;
a predictor which produces a first predicted decoding unit of the current decoding unit, based on the extracted information;
a determiner which determines whether the current decoding unit includes a portion located outside a boundary of a current picture; and
a post-processor which produces a second predicted decoding unit by changing values of pixels of the first predicted decoding unit by using the pixels of the first predicted decoding unit and neighboring pixels of the pixels when the current decoding unit does not include the portion located outside the boundary of the current picture, and which skips the producing the second predicted decoding unit when the current decoding unit includes the portion located outside the boundary of the current picture.
0. 5. The apparatus of claim 4, wherein the determiner obtains index information indicating whether a process of producing the second predicted decoding unit is to be performed.
0. 6. The apparatus of claim 5, wherein:
if the index information has a first predetermined value, the index information indicates that the process of producing the second predicted decoding unit is not to be performed; and
if the index information has a second predetermined value, the index information indicates that the process of producing the second predicted decoding unit is to be performed.
0. 7. A non-transitory computer readable recording medium having recorded thereon a program code for executing the method of claim 1.

This

Compared to the current minimum transform unit size CurrMinTuSize that can be determined in the current coding unit, a transform unit size RootTuSize when the TU size flag is 0 may denote a maximum transform unit size that can be selected in the system. In Equation (1), RootTuSize/(2{circumflex over ( )}MaxTransformSizeIndex) denotes a transform unit size when the transform unit size RootTuSize, when the TU size flag is 0, is split a number of times corresponding to the maximum TU size flag, and MinTransformSize denotes a minimum transformation size. Thus, a smaller value from among RootTuSize/(2{circumflex over ( )}MaxTransformSizeIndex) and MinTransformSize may be the current minimum transform unit size CurrMinTuSize that can be determined in the current coding unit.

According to an exemplary embodiment, the maximum transform unit size RootTuSize may vary according to the type of a prediction mode.

For example, if a current prediction mode is an inter mode, then RootTuSize may be determined by using Equation (2) below. In Equation (2), MaxTransformSize denotes a maximum transform unit size, and PUSize denotes a current prediction unit size.
RootTuSize=min(MaxTransformSize,PUSize)   (2)

That is, if the current prediction mode is the inter mode, the transform unit size RootTuSize when the TU size flag is 0, may be a smaller value from among the maximum transform unit size and the current prediction unit size.

If a prediction mode of a current partition unit is an intra mode, RootTuSize may be determined by using Equation (3) below. In Equation (3), PartitionSize denotes the size of the current partition unit.
RootTuSize=min(MaxTransformSize,PartitionSize)   (3)

That is, if the current prediction mode is the intra mode, the transform unit size RootTuSize when the TU size flag is 0 may be a smaller value from among the maximum transform unit size and the size of the current partition unit.

However, the current maximum transform unit size RootTuSize that varies according to the type of a prediction mode in a partition unit is just an example and is not limited thereto.

Intra prediction performed by the intra predictor 410 of the image encoder 400 illustrated in FIG. 4 and the intra predictor 550 of the image decoder 500 illustrated in FIG. 5 according to one or more exemplary embodiments, will now be described in detail. In the following description, an encoding unit denotes a current encoded block in an encoding process of an image, and a decoding unit denotes a current decoded block in a decoding process of an image. The encoding unit and the decoding unit are different in that the encoding unit is used in the encoding process and the decoding unit is used in the decoding. For the consistency of terms, except for a particular case, the encoding unit and the decoding unit may be referred to as a coding unit in both the encoding and decoding processes. Also, one of ordinary skill in the art would understand by the present specification that an intra prediction method and apparatus according to an exemplary embodiment may also be applied to perform intra prediction in a general video codec.

FIG. 14 is a block diagram of an intra prediction apparatus 1400 according to an exemplary embodiment. Referring to FIG. 14, the intra prediction apparatus 1400 includes a predictor 1410, a determiner 1415, and a post-processor 1420. The predictor 1410 intra predicts a current coding unit by using intra prediction modes determined according to the size of the current coding unit, and outputs a first predicted coding unit. The determiner 1415 determines whether the current coding unit has a portion located outside a boundary of a current picture, and produces an index MPI_PredMode according to the determination result.

The index MPI_PredMode indicates whether what kind of Multi-Parameter Intra-prediction (MPI), which will be described in detail later, is to be performed. Referring to Table 2, if the index MPI_PredMode is 0, it indicates that the MPI is not performed to produce a second predicted coding unit, and if the index MPI_PredMode is greater than 0, it indicates that the MPI is to be performed so as to produce the second predicted coding unit.

TABLE 2
MPI_PredMode MPI Mode Name Meaning
0 MPI_Mode0 Do not perform MPI
1 MPI_Mode1 Perform MPI
. . . . . . . . .
MPI_PredModelMAX MPI_ModelMAX Perform MPI

According to Table 2, the index MPI_PredMode is 0 or 1 depending on whether the MPI is to be performed. However, in a case where N modes are present as MPI modes, the MPI_PredMode may have integral value ranging from 0 to N so as to express the case where the MPI will not be performed and the N modes.

If the determiner 1415 determines that the current coding unit does not include any portion located outside a boundary of the picture, that is, when the index MPI_PredMode is not 0, then the post-processor 1420 produces the second predicted coding unit by perform the MPI by using neighboring pixels of pixels that constitute the first predicted coding unit so as to change the pixel values of the pixels of the first predicted coding unit.

FIG. 15 is a table showing a number of intra prediction modes according to the size of a coding unit, according to an exemplary embodiment. According to an exemplary embodiment, a number of intra prediction modes may be determined according to the size of a coding unit (a decoding unit in the case of a decoding process). Referring to FIG. 15, if the size of a coding unit that is to be intra predicted is, for example, N×N, then numbers of intra prediction modes that are to be actually performed on prediction units having sizes of NMin×NMin, . . . , NMax×NMax (NMin can be 2 and NMax can be 128) may be depend on prediction unit size. In Example 2 prediction unit sizes are 4×4, 8×8, 16×16, 32×32, 64×64 and 128×128. The number of intra prediction modes in this example are 5, 9, 9, 17, 33, 5, and 5, respectively. For another example, when a size of a coding unit to be intra-predicted is N×N, numbers of intra prediction modes to be actually performed on coding units having sizes of 2×2, 4×4, 8×8, 16×16, 32×32, 64×64, and 128×128 may be set to be 3, 17, 34, 34, 34, 5, and 5. A reason why a number of intra prediction modes that are to be actually performed is determined according to the size of a coding unit, is because overhead for encoding prediction mode information varies according to the size of the coding unit. In other words, although a small-sized coding unit occupies a small area in an entire image, overhead for transmitting additional information, e.g., a prediction mode, regarding the small-sized coding unit may be large. Thus, when a small-sized coding unit is encoded using too many prediction modes, a number of bits may increase, thus degrading compression efficiency. A large-sized coding unit, e.g., a coding unit having a size of 64×64 or more, is highly likely to be selected as a coding unit for a flat region of an image. Compression efficiency may also be degraded when a large-sized coding unit selected to encode such a flat region is encoded using too many prediction modes.

Thus, according to an exemplary embodiment, coding unit size may be largely classified into at least three sizes: N1×N1 (2≤N1≤4, N1 denotes an integer), N2×N2 (8≤N2≤32, N2 denotes an integer), and N3×N3 (64≤N3, N3 denotes an integer). If a number of intra prediction modes that are to be performed on each coding unit having a size of N1×N1 is A1 (A1 denotes a positive integer), a number of intra prediction modes that are to be performed on each coding unit having a size of N2×N2 is A2 (A2 denotes a positive integer), and a number of intra prediction modes that are to be performed on each coding unit having a size of N3×N3 is A3 (A3 denotes a positive integer), then a number of intra prediction modes that are to be performed according to the size of a coding unit, may be determined to satisfy A3≤A1≤A2. That is, if a current picture is divided into a small-sized coding unit, a medium-sized coding unit, and a large-sized coding unit, then a number of prediction modes that are to be performed on the medium-sized coding unit may be greater than those of prediction modes to be performed on the small-sized coding unit and the large-sized coding unit. However, another exemplary embodiment is not limited thereto and a large number of prediction modes may also be set to be performed on the small-sized and medium-sized coding units. The numbers of prediction modes according to the size of each coding unit illustrated in FIG. 15 are just an example and may thus be variable.

FIGS. 16A to 16C are drawings for explaining intra prediction modes that may be performed on a coding unit having a predetermined size, according to exemplary embodiments. FIG. 16A is a table showing intra prediction modes that may be performed on a coding unit having a predetermined size, according to an exemplary embodiment. Referring to FIGS. 15 and 16A, for example, if a coding unit having a size of 4×4 is intra predicted, a vertical mode (mode 0), a horizontal mode (mode 1), a direct-current (DC) mode (mode 2), a diagonal down-left mode (mode 3), a diagonal down-right mode (mode 4), a vertical-right mode (mode 5), a horizontal-down mode (mode 6), a vertical-left mode (mode 7), or a horizontal-up mode (mode 8) may be performed.

FIG. 16B illustrate directions of the intra prediction modes illustrated in FIG. 16A, according to an exemplary embodiment. In FIG. 16B, values assigned to arrows denote mode values when prediction is performed in directions indicated with the arrows, respectively. Here, mode 2 is a DC prediction mode having no direction and is thus not illustrated in FIG. 16B.

FIG. 16C illustrate intra prediction methods that may be performed on the coding unit illustrated in FIG. 16A, according to an exemplary embodiment. Referring to FIG. 16C, a predicted coding unit is produced using neighboring pixels A to M of a current coding unit according to an available intra prediction mode determined according to the size of the current coding unit. For example, a method of prediction encoding a current coding unit having a size of 4×4 according to the vertical mode (mode 0) of FIG. 16A, will be described. First, pixel values of the pixels A to D adjacent to the top of the 4×4 coding unit are predicted as pixel values of the 4×4 coding unit. Specifically, the pixel values of the pixel A are predicted as four pixel values of pixels at a first column of the 4×4 coding unit, the pixel values of the pixel B are predicted as four pixel values of pixels at a second column of the 4∴4 coding unit, the pixel values of the pixel C are predicted as four pixel values of pixels at a third column of the 4×4 coding unit, and the pixel values of the pixel D are predicted as four pixel values of pixels at a fourth column of the 4×4 current coding unit. Then, error values between actual pixel values of pixels included in a predicted 4×4 coding unit predicted using the pixels A to D and the original 4×4 coding unit are calculated and encoded.

FIG. 17 is drawings for explaining intra prediction modes that may be performed on a coding unit having a predetermined size, according to other exemplary embodiments. Referring to FIGS. 15 and 17, for example, if a coding unit having a size of 2×2 is intra predicted, a total of five modes, e.g., a vertical mode, a horizontal mode, a DC mode, a plane mode, and a diagonal down-right mode, may be performed.

As illustrated in FIG. 15, if a coding unit having a size of 32×32 has 33 intra prediction modes, then directions of the 33 intra prediction modes should be set. According to an exemplary embodiment, a prediction direction for selecting neighboring pixels to be used as reference pixels based on pixels included in a coding unit, is set by using a dx parameter and a dy parameter so as to set intra prediction modes having various directionalities in addition to the intra prediction modes described above with reference to FIGS. 16 and 17. For example, when each of the 33 prediction modes is defined as mode N_(N is an integer from 0 to 32), mode 0, mode 1, mode 2, and mode 3 are set as a vertical mode, a horizontal mode, a DC mode, and a plane mode, respectively, and each of mode 4 to mode 31 may be set as a prediction mode having a directionality of tan−1(dy/dx) by using a (dx, dy) parameter expressed with one from among (1,−1), (1,1), (1,2), (2,1), (1,−2), (2,1), (1,−2), (2,−1), (2,−11), (5,−7), (10,−7), (11,3), (4,3), (1,11), (1,−1), (12,−3), (1,−11), (1,−7), (3,−10), (5,−6), (7,−6), (7,−4), (11,1), (6,1), (8,3), (5,3), (5,7), (2,7), (5,−7), and (4,−3) shown in Table 3.

TABLE 3
mode # dx dy
mode 4 1 −1
mode 5 1 1
mode 6 1 2
mode 7 2 1
mode 8 1 −2
mode 9 2 −1
mode 10 2 −11
mode 11 5 −7
mode 12 10 −7
mode 13 11 3
mode 14 4 3
mode 15 1 11
mode 16 1 −1
mode 17 12 −3
mode 18 1 −11
mode 19 1 −7
mode 20 3 −10
mode 21 5 −6
mode 22 7 −6
mode 23 7 −4
mode 24 11 1
mode 25 6 1
mode 26 8 3
mode 27 5 3
mode 28 5 7
mode 29 2 7
mode 30 5 −7
mode 31 4 −3
Mode 0, mode 1, mode 2, mode 3, and mode 32 denote a vertical mode, a horizontal mode, a DC mode, a plane mode, and a Bi-linear mode, respectively.

Mode 32 may be set as a bi-linear mode that uses bi-linear interpolation as will be described later with reference to FIG. 19.

FIGS. 18A through 18C are reference diagrams for explaining intra prediction modes having various directionalities according to exemplary embodiments. As described above with reference to Table 3, each of intra prediction modes according to exemplary embodiments may have directionality of tan−1(dy/dx) by using a plurality of (dx, dy) parameters.

Referring to FIG. 18A, neighboring pixels A and B on a line 180 that extends from a current pixel P in a current coding unit, which is to be predicted, at an angle of tan−1(dy/dx) determined by a value of a (dx, dy) parameter according to a mode, shown in Table 3, may be used as predictors of the current pixel P. In this case, the neighboring pixels A and B may be pixels that have been encoded and restored, and belong to previous coding units located above and to the left side of the current coding unit. Also, when the line 180 does not pass along neighboring pixels on locations each having an integral value but passes between these neighboring pixels, neighboring pixels closer to the line 180 may be used as predictors of the current pixel P. If two pixels that meet the line 180, e.g., the neighboring pixel A located above the current pixel P and the neighboring pixel B located to the left side of the current pixel P, are present, an average of pixel values of the neighboring pixels A and B may be used as a predictor of the current pixel P. Otherwise, if a product of values of the dx and dy parameters is a positive value, the neighboring pixel A may be used, and if the product of the values of the dx and dy parameters is a negative value, the neighboring pixel B may be used.

FIGS. 18B and 18C are reference diagrams for explaining a process of generating a predictor when the extended line 180 of FIG. 18A passes between, not through, neighboring pixels of integer locations.

Referring to FIG. 18B, if the extended line 180 having an angle of tan−1(dy/dx) that is determined according to (dx, dy) of each mode passes between a neighboring pixel A 181 and a neighboring pixel B 182 of integer locations, a weighted average value considering a distance between an intersection of the extended line 180 and the neighboring pixels A 181 and B 182 close to the extended line 180 may be used as a predictor as described above. For example, if a distance between the neighboring pixel A 181 and the intersection of the extended line 180 having the angle of tan−1(dy/dx) is f, and a distance between the neighboring pixel B 182 and the intersection of the extended line 180 is g, a predictor for the current pixel P may be obtained as (A*g+B*f)/(f+g). Here, f and g may be each a normalized distance using an integer. If software or hardware is used, the predictor for the current pixel P may be obtained by shift operation as (g*A+f*B+2)>>2. As shown in FIG. 18B, if the extended line 180 passes through a first quarter close to the neighboring pixel A 181 from among four parts obtained by quartering a distance between the neighboring pixel A 181 and the neighboring pixel B 182 of the integer locations, the predictor for the current pixel P may be acquired as (3*A+B)/4. Such operation may be performed by shift operation considering rounding-off to a nearest integer like (3*A+B+2)>>2.

Meanwhile, if the extended line 180 having the angle of tan-1(dy/dx) that is determined according to (dx, dy) of each mode passes between the neighboring pixel A 181 and the neighboring pixel B 182 of the integer locations, a section between the neighboring pixel A 181 and the neighboring pixel B 182 may be divided into a predetermined number of areas, and a weighted average value considering a distance between an intersection and the neighboring pixel A 181 and the neighboring pixel B 182 in each divided area may be used as a prediction value. For example, referring to FIG. 18C, a section between the neighboring pixel A 181 and the neighboring pixel B 182 may be divided into five sections P1 through P5 as shown in FIG. 18C, a representative weighted average value considering a distance between an intersection and the neighboring pixel A 181 and the neighboring pixel B 182 in each section may be determined, and the representative weighted average value may be used as a predictor for the current pixel P. In detail, if the extended line 180 passes through the section P1, a value of the neighboring pixel A may be determined as a predictor for the current pixel P. If the extended line 180 passes through the section P2, a weighted average value (3*A+1*B+2)>>2 considering a distance between the neighboring pixels A and B and a middle point of the section P2 may be determined as a predictor for the current pixel P. If the extended line 180 passes through the section P3, a weighted average value (2*A+2*B+2)>>2 considering a distance between the neighboring pixels A and B and a middle point of the section P3 may be determined as a predictor for the current pixel P. If the extended line 180 passes through the section P4, a weighted average value (1*A+3*B+2)>>2 considering a distance between the neighboring pixels A and B and a middle point of the section P4 may be determined as a predictor for the current pixel P. If the extended line 180 passes through the section P5, a value of the neighboring pixel B may be determined as a predictor for the current pixel P.

Also, if two neighboring pixels, that is, the neighboring pixel A on the up side and the neighboring pixel B on the left side meet the extended line 180 as shown in FIG. 18A, an average value of the neighboring pixel A and the neighboring pixel B may be used as a predictor for the current pixel P, or if (dx*dy) is a positive value, the neighboring pixel A on the up side may be used, and if (dx*dy) is a negative value, the neighboring pixel B on the left side may be used.

The intra prediction modes having various directionalities shown in Table 3 may be predetermined by an encoding side and a decoding side, and only an index of an intra prediction mode of each coding unit may be transmitted.

FIG. 19 is a reference diagram for explaining a bi-linear mode according to an exemplary embodiment. Referring to FIG. 19, in the bi-linear mode, a geometric average is calculated by considering a value of a current pixel P 190 in a current coding unit, which is to be predicted, values of pixels on upper, lower, left, and right boundaries of the current coding unit, and the distances between the current pixel P 190 and the upper, lower, left, and right boundaries of the current coding unit, and is then used as a predictor of the current pixel P 190. For example, in the bi-linear mode, a geometric average calculated using a virtual pixel A 191, a virtual pixel B 192, a pixel D 196, and a pixel E 197 located to the upper, lower, left, and right sides of the current pixel P 190, and the distances between the current pixel P 190 and the upper, lower, left, and right boundaries of the current coding unit, is used as a predictor of the current pixel P 190. Since the bi-linear mode is one of intra prediction modes, neighboring pixels that have been encoded and restored and belong to previous coding units are used as reference pixels for prediction. Thus, pixel values in the current coding unit are not used but virtual pixel values calculated using neighboring pixels located to the upper and left sides of the current coding unit are used as the pixel A 191 and the pixel B 192.

Specifically, first, a value of a virtual pixel C 193 on a lower rightmost point of the current coding unit is calculated by calculating an average of values of a neighboring pixel (right-up pixel) 194 on an upper rightmost point of the current coding unit and a neighboring pixel (left-down pixel) 195 on a lower leftmost point of the current coding unit, as expressed in the following equation:
C=0.5(LeftDownPixel+RightUpPixel)   (4)

The virtual pixel C 193 may be obtained by shifting operation as The Equation 4 may be the predictor for the current pixel P may be obtained by shift operation as C=0.5(LeftDownPixel+RightUpPixel+1)>>1.

Next, a value of the virtual pixel A 191 located on a lowermost boundary of the current coding unit when the current pixel P 190 is extended downward by considering the distance W1 between the current pixel P 190 and the left boundary of the current coding unit and the distance W2 between the current pixel P 190 and the right boundary of the current coding unit, is calculated by using the following equation:
A=(C*W1+LeftDownPixel*W2)/(W1+W2)
A=(C*W1+LeftDownPixel*W2+((W1+W2)/2))/(W1+W2)   (5)

When a value of W1+W2 in Equation 5 is a power of 2, like 2{circumflex over ( )}n, A=(C*W1+LeftDownPixel*W2+((W1+W2)/2))/(W1+W2) may be calculated by shift operation as A=(C*W1+LeftDownPixel*W2+2{circumflex over ( )}(n−1))>>n without division.

Similarly, a value of the virtual pixel B 192 located on a rightmost boundary of the current coding unit when the current pixel P 190 is extended in the right direction by considering the distance h1 between the current pixel P 190 and the upper boundary of the current coding unit and the distance h2 between the current pixel P 190 and the lower boundary of the current coding unit, is calculated by using the following equation:
B=(C*h1+RightUpPixel*h2)/(h1+h2)
B=(C*h1+RightUpPixel*h2+((h1+h2)/2))/(h1+h2)   (6)

When a value of h1+h2 in Equation 6 is a power of 2, like 2{circumflex over ( )}m, B=(C*h1+RightUpPixel*h2+((h1+h2)/2))/(h1+h2) may be calculated by shift operation as B=(C*h1+RightUpPixel*h2+2{circumflex over ( )}(m−1))>>m without division.

Once the values of the virtual pixel B 192 on the right border and the virtual pixel A 191 on the down border of the current pixel P 190 are determined by using Equations (4) through (6), a predictor for the current pixel P 190 may be determined by using an average value of A+B+D+E. In detail, a weighted average value considering a distance between the current pixel P 190 and the virtual pixel A 191, the virtual pixel B 192, the pixel D 196, and the pixel E 197 or an average value of A+B+D+E may be used as a predictor for the current pixel P 190. For example, if a weighted average value is used and the size of block is 16×16, a predictor for the current pixel P may be obtained as (h1*A+h2*D+W1*B+W2*E+16)>>5. Such bilinear prediction is applied to all pixels in the current coding unit, and a prediction coding unit of the current coding unit in a bilinear prediction mode is generated.

According to an exemplary embodiment, prediction encoding is performed according to various intra prediction modes determined according to the size of a coding unit, thereby allowing efficient video compression based on characteristics of an image.

Meanwhile, as described with reference to FIGS. 18A through 18C, if a predictor for the current pixel P is generated by using neighboring pixels on or close to the extended line 180, the extended line 180 has actually a directivity of tan−1 (dy/dx). In order to calculate the directivity, since division (dy/dx) is necessary, calculation is made down to decimal places when hardware or software is used, thereby increasing the amount of calculation. Accordingly, a process of setting dx and dy is used in order to reduce the amount of calculation when a prediction direction for selecting neighboring pixels to be used as reference pixels about a pixel in a coding unit is set by using dx, and dy parameters in a similar manner to that described with reference to Table 3.

FIG. 27 is a diagram for explaining a relationship between a current pixel and neighboring pixels located on an extended line having a directivity of (dy/dx), according to an exemplary embodiment.

Referring to FIG. 27, it is assumed that a location of the current pixel P is P(j,i), and an up neighboring pixel and a left neighboring pixel B located on an extended line 2710 having a directivity, that is, a gradient, of tan−1(dy/dx) and passing through the current pixel P are respectively A and B. When it is assumed that locations of up neighboring pixels correspond to an X-axis on a coordinate plane, and locations of left neighboring pixels correspond to a y-axis on the coordinate plate, the up neighboring pixel A is located at (j+i*dx/dy,0), and the left neighboring pixel B is located at (0,i+j*dy/dx). Accordingly, in order to determine any one of the up neighboring pixel A and the left neighboring pixel B for predicting the current pixel P, division, such as dx/dy or dy/dx, is required. Such division is very complex as described above, thereby reducing a calculation speed of software or hardware.

Accordingly, a value of any one of dx and dy representing a directivity of a prediction mode for determining neighboring pixels may be determined to be a power of 2. That is, when n and m are integers, dx and dy may be 2{circumflex over ( )}n and 2{circumflex over ( )}m, respectively.

Referring to FIG. 27, if the left neighboring pixel B is used as a predictor for the current pixel P and dx has a value of 2{circumflex over ( )}n, j*dy/dx necessary to determine (0,i+j*dy/dx) that is a location of the left neighboring pixel B becomes (j*dy/(2{circumflex over ( )}n)), and division using such a power of 2 is easily obtained through shift operation as (j*dy)>>n, thereby reducing the amount of calculation.

Likewise, if the up neighboring pixel A is used as a predictor for the current pixel P and dy has a value of 2{circumflex over ( )}m, i*dx/dy necessary to determine (j+i*dx/dy,0) that is a location of the up neighboring pixel A becomes (i*dx)/(2{circumflex over ( )}m), and division using such a power of 2 is easily obtained through shift operation as (i*dx)>>m.

FIG. 28 is a diagram for explaining a change in a neighboring pixel located on an extended line having a directivity of (dx,dy) according to a location of a current pixel, according to an exemplary embodiment.

As a neighboring pixel necessary for prediction according to a location of a current pixel, any one of an up neighboring pixel and a left neighboring pixel is selected.

Referring to FIG. 28, when a current pixel 2810 is P(j,i) and is predicted by using a neighboring pixel located in a prediction direction, an up pixel A is used to predict the current pixel P 2810. When the current pixel 2810 is Q(b,a), a left pixel B is used to predict the current pixel Q 2820.

If only a dy component of a y-axis direction from among (dx, dy) representing a prediction direction has a power of 2 like 2{circumflex over ( )}m, while the up pixel A in FIG. 24 may be determined through shift operation without division such as (j+(i*dx)>>m, 0), the left pixel B requires division such as (0, a+b*2{circumflex over ( )}m/dx). Accordingly, in order to exclude division when a predictor is generated for all pixels of a current block, all of dx and dy may have a type of power of 2.

FIGS. 29 and 30 are diagrams for explaining a method of determining an intra prediction mode direction, according to exemplary embodiments.

In general, there are many cases where linear patterns shown in an image or a video signal are vertical or horizontal. Accordingly, when intra prediction modes having various directivities are defined by using parameters dx and dy, image coding efficiency may be improved by defining values dx and dy as follows.

In detail, if dy has a fixed value of 2{circumflex over ( )}m, an absolute value of dx may be set so that a distance between prediction directions close to a vertical direction is narrow, and a distance between prediction modes closer to a horizontal direction is wider. For example, referring to FIG. 29, if dy has a value of 2{circumflex over ( )}4, that is, 16, a value of dx may be set to be 1,2,3,4,6,9,12, 16,0,−1,−2,−3,−4,−6,−9,−12, and −16 so that a distance between prediction directions close to a vertical direction is narrow and a distance between prediction modes closer to a horizontal direction is wider.

Likewise, if dx has a fixed value of 2{circumflex over ( )}n, an absolute value of dy may be set so that a distance between prediction directions close to a horizontal direction is narrow and a distance between prediction modes closer to a vertical direction is wider. For example, referring to FIG. 30, if dx has a value of 2{circumflex over ( )}4, that is, 16, a value of dy may be set to be 1,2,3,4,6,9,12, 16,0,−1,−2,−3,−4,−6,−9,−12, and −16 so that a distance between prediction directions close to a horizontal direction is narrow and a distance between prediction modes closer to a vertical direction is wider.

Also, when one of values of dx and dy is fixed, the remaining value may be set to be increased according to a prediction mode. For example, if dy is fixed, a distance between dx may be set to be increased by a predetermined value. Also, an angle of a horizontal direction and a vertical direction may be divided in predetermined units, and such an increased amount may be set in each of the divided angles. For example, if dy is fixed, a value of dx may be set to have an increased amount of a in a section less than 15 degrees, an increased amount of b in a section between 15 degrees and 30 degrees, and an increased width of c in a section greater than 30 degrees. In this case, in order to have such a shape as shown in FIG. 27, the value of dx may be set to satisfy a relationship of a<b<c.

For example, prediction modes described with reference to FIGS. 27 through 30 may be defined as a prediction mode having a directivity of tan−1(dy/dx) by using (dx, dy) as shown in Tables 4 through 6.

TABLE 4
dx Dy dx dy dx dy
−32 32 21 32 32 13
−26 32 26 32 32 17
−21 32 32 32 32 21
−17 32 32 −26 32 26
−13 32 32 −21 32 32
−9 32 32 −17
−5 32 32 −13
−2 32 32 −9
0 32 32 −5
2 32 32 −2
5 32 32 0
9 32 32 2
13 32 32 5
17 32 32 9

TABLE 5
dx Dy dx dy dx Dy
−32 32 19 32 32 10
−25 32 25 32 32 14
9 32 32 32 32 19
−14 32 32 −25 32 25
−10 32 32 −19 32 32
−6 32 32 −14
−3 32 32 −10
−1 32 32 −6
0 32 32 −3
1 32 32 −1
3 32 32 0
6 32 32 1
10 32 32 3
14 32 32 6

TABLE 6
dx Dy dx dy dx dy
−32 32 23 32 32 15
−27 32 27 32 32 19
−23 32 32 32 32 23
−19 32 32 −27 32 27
−15 32 32 −23 32 32
−11 32 32 −19
−7 32 32 −15
−3 32 32 −11
0 32 32 −7
3 32 32 −3
7 32 32 0
11 32 32 3
15 32 32 7
19 32 32 11

As described above, a predicted coding unit produced using an intra prediction mode determined according to the size of a current coding unit by the predictor 1410 of the intra prediction apparatus 1400 of FIG. 14, has a directionality according to the intra prediction mode. The directionality in the predicted coding unit may lead to an improvement in prediction efficiency when pixels of the current coding unit that is to be predicted have a predetermined directionality but may lead to a degradation in prediction efficiency when these pixels do not have a predetermined directionality. Thus, the post-processor 1420 may improve prediction efficiency by producing a new predicted coding unit by changing values of pixels in the predicted coding unit by using the pixels in the predicted coding unit and at least one neighboring pixel, as post-processing for the predicted coding unit produced through intra prediction. In this case, the post-processor 1420 does not perform post-processing on all predicted coding units but may perform post-processing only when the determiner 1415 determines that a current predicted coding unit does not include a portion located outside a boundary of a picture, that is, when an index MPI_PredMode is not 0.

FIG. 24 is a reference diagram for explaining an indexing process for post-processing a coding unit according to an exemplary embodiment. Referring to FIG. 24, if a current picture 2410 is divided and encoded into coding units each having a predetermined size, and a width Frame_width of the current picture 2410 is not a multiple of a horizontal length of each of the coding units or a height Frame_height of the current picture 2410 is not a multiple of a vertical length of each of the coding units, then some portion of the coding units (which are indicated with slant lines) extend over right and lower boundaries of the current picture 2410 as illustrated in FIG. 24. The determiner 1415 of FIG. 14 may set a predetermined index MPI_PredMode for the coding units extending over a boundary of the current picture to be 0, so that the post-processor 1420 of FIG. 14 may skip post-processing of these coding units.

A reason why post-processing is not performed when a current predicted coding unit has a portion located outside a boundary of a current coding unit, is because neighboring pixels of each pixel are used for post-processing and pixels in the current predicted coding unit lack neighboring pixels. Even if post-processing is performed by producing neighboring pixels through padding or extrapolation, prediction efficiency is not high because the produced neighboring pixels are originally non-existent pixels.

FIG. 25 is a reference diagram for explaining an indexing process for post-processing a coding unit according to another exemplary embodiment. Referring to FIG. 24, if the determiner 1415 of FIG. 14 determines that a coding unit 2520 extends over a boundary 2510 of a picture, then the coding unit 2520 may be split into deeper coding units of a depth that is deeper than that of the coding unit 2520, and whether each of the deeper coding units has a portion located outside a boundary of the picture may be determined, rather than not post-processing the entire coding unit 2520. Such a splitting process may be repeatedly performed until coding units, e.g., coding units 2524 and 2528, which extend over the boundary 2510 of the picture are minimum coding units and cannot thus be split any further, that is, until a current depth is a maximum depth. Referring to FIG. 25, an index MPI_PredMode for the minimum coding units 2524 and 2528 located outside the boundary 2510 is set to 0 so that the minimum coding units 2524 and 2528 may not be post-processed, and an index MPI_PredMode for minimum coding units 2522 and 2526 located within the boundary 2510 is set to be 1 so that the minimum coding units 2522 and 2526 may be post-processed.

A method of post-processing a predicted coding unit by the post-processor 1420 of FIG. 14 according to an exemplary embodiment, will now be described.

If the determiner 1415 of FIG. 14 determines that a current coding unit does not include a portion located outside a boundary of a picture, then the post-processor 1420 produces a second predicted coding unit by changing values of pixels constituting a first predicted coding unit produced by the predictor 140 of FIG. 14 by performing post-processing using the pixels of the first predicted coding unit and at least one neighboring pixel. The predictor 1410 produces the first predicted coding unit by using an intra prediction mode determined according to a size of the current coding unit, as described above.

FIG. 20 is a reference diagram for explaining post-processing of a first predicted coding unit, according to an exemplary embodiment. In FIG. 20, reference numerals 2010 to 2060 illustrate a process of changing values of pixels in the first predicted coding unit by the post-processor 1420 in chronological order.

Referring to FIG. 20, the post-processor 1420 of FIG. 14 changes values of pixels in the first predicted coding unit 2010 by calculating a weighted average of values of a pixel in the first predicted coding unit 2010, which is to be changed, and neighboring pixels of the pixel. For example, referring to FIG. 20, if a value of a pixel 2021 of the first predicted coding unit 2010, which is to be changed, is f[1][1], a value of a pixel 2022 located above the pixel 2021 is f[0][1], a pixel 2023 located to the left side of the pixel 2021 is f[1][0], and a result of changing the value f[1][1] of the pixel 2021 is f[1][1], then f[1][1] may be calculated using the following equation:

f [ 1 ] [ 1 ] = ( f [ 0 ] [ 1 ] + f [ 1 ] [ 0 ] + ( f [ 1 ] [ 1 ] << 1 ) + 2 ) >> 2 f [ 1 ] [ 1 ] = f [ 0 ] [ 1 ] + f [ 1 ] [ 0 ] + 2 * f [ 1 ] [ 1 ] 4 ( 7 )

As illustrated in FIG. 20, the post-processor 1420 changes values of pixels included in the first predicted coding unit 2010 by calculating a weighted average of the values of each pixel of the first predicted coding unit and pixels located above and to the left side of the pixel in a direction from an upper leftmost point of the first predicted coding unit to a lower rightmost point of the first predicted coding unit. However, such a post-processing operation according to another exemplary embodiment is not limited thereto, and may be sequentially performed on the pixels of the first predicted coding unit in a direction from a upper rightmost point of the first predicted coding unit to a lower leftmost point of the first predicted coding unit or a direction from the lower rightmost point of the first predicted coding unit to the upper leftmost point of the first predicted coding unit. For example, if the post-processor 1420 changes the values of the pixels of the first predicted coding unit in the direction from the upper rightmost point to the lower leftmost point unlike as illustrated in FIG. 20, then the values of the pixels of the first predicted coding unit are changed by calculating a weighted average of the values of each of the pixels of the first predicted coding unit and pixels located below and to the right side of the first predicted coding unit.

FIG. 21 is a reference diagram for explaining an operation of the post-processor 1420 of FIG. 14 according to an exemplary embodiment. FIG. 22 is a reference diagram for explaining neighboring pixels to be used by a post-processor according to an exemplary embodiment. In FIG. 21, reference numeral 2110 denotes a first pixel of a first predicted coding unit 2100, which is to be changed, and reference numerals 2111 to 2118 denote neighboring pixels of the first pixel 2110.

In the current exemplary embodiment (first exemplary embodiment), neighboring pixels of the first pixel 2110 are not limited to those located above and to the left side of the first predicted coding unit, unlike as illustrated in FIG. 20. Referring to FIG. 21, the post-processor 1420 may post-process the first pixel 2110 by using a predetermined number of neighboring pixels selected from among the neighboring pixels 2111 to 2118. That is, referring to FIG. 22, a predetermined number of pixels are selected from among neighboring pixels P1 to P8 of a first pixel c of a current coding unit, and a value of the first pixel c is changed by performing a predetermined operation on the selected neighboring pixels and the first pixel c. For example, if the size of the first predicted coding unit 2100 is m×n, a value of the first pixel 2110, which is to be changed and is located at an ith column and a ith row of the first predicted coding unit 2100, is f[i][j], values of n pixels selected from among the neighboring pixels 2111 to 2118 of the first pixel 2110 so as to post-process the first pixel 2110 are f1 to fn, respectively, then the post-processor 1420 changes the value of the first pixel 2110 from f[i][j] to f[i][j] by using the following equation. Here, m denotes a positive integer, n is 2 or 3, i denotes an integer from 0 to m−1, and j denotes an integer from 0 to n−1.

f [ i ] [ j ] = f 1 + f 2 + 2 × f [ i ] [ j ] + 2 4 ( n = 2 ) f [ i ] [ j ] = f 1 + f 2 + f 3 + f [ i ] [ j ] 4 ( n = 3 ) ( 8 )

The post-processor 1420 produces a second predicted coding unit by changing values of all pixels included in the first predicted coding unit 2100 by using Equation (8). In Equation (8), three neighboring pixels are used, but another exemplary embodiment is not limited thereto and the post-processor 1420 may perform post-processing by using four or more neighboring pixels.

According to a second exemplary embodiment, the post-processor 1420 produces a second predicted coding unit by changing the value of each pixel of the first predicted coding unit 2100 by using a weighted harmonic average of the values of a pixel of the first predicted coding unit 2100, which is to be changed, and neighboring pixels of the pixel.

For example, the post-processor 1420 changes the value of a pixel at the ith column and the jth row of the first predicted coding unit 2100 from f[i][j] to f[i][j] by using neighboring pixels located above and to the left side of the pixel, as shown in the following equation:

f [ i ] [ j ] = α + β + γ α f [ i - 1 ] [ j ] + β f [ i ] [ j - 1 ] + γ f [ i ] [ j ] , ( 9 )
wherein α, β, and γ denote positive integers, and for example, α=2, β=2, and γ=1.

According to a third exemplary embodiment, the post-processor 1420 produces a second predicted coding unit by changing the value of each pixel of the first predicted coding unit 2100 by using a weighted geometric average of values of a pixel of the first predicted coding unit 2100, which is to be changed, and neighboring pixels of the pixel.

For example, the post-processor 1420 changes the value of a pixel at the ith column and the jth row of the first predicted coding unit 2100 from f[i][j] to f[i][j] by using neighboring pixels located above and to the left side of the pixel, as shown in the following equation:

f [ i ] [ j ] = ( f [ i - 1 ] [ j ] α * f [ i ] [ j - 1 ] β * f [ i ] [ j ] γ ) 1 ( α + β + γ ) , ( 10 )
wherein α, β, and γ denote positive integers, and for example, a=1, β=1, and γ=2. In Equation (8) to (10), a relative large weight is assigned to the value f[i][j] of the pixel that is to be changed.

As described above, in the first to third exemplary embodiments, the post-processor 1420 may perform post-processing by using not only neighboring pixels located above and to the left side of a pixel that is to be changed, but also a predetermined number of neighboring pixels selected from among the neighboring pixels 2111 to 2118 as illustrated in FIG. 21.

According to a fourth exemplary embodiment, the post-processor 1420 produces a second predicted coding unit by changing the value of each pixel in the first predicted coding unit by using an average of the values of a pixel in the first predicted coding unit, which is to be changed, and one selected from among neighboring pixels of the pixel.

For example, the post-processor 1420 changes the value of a pixel at the ith column and the jth row of the first predicted coding unit 2100 from f[i][j] to f[i][j] by using neighboring pixels located above the pixel, as shown in the following equation:
f[i][j]=(f[i−1][j]+f[i][j−1]+1)>>1   (11)

Similarly, according to a fifth exemplary embodiment, the post-processor 1420 produces a second predicted coding unit by changing the value of each pixel in the first predicted coding unit by using an average of the values of a pixel in the first predicted coding unit, which is to be changed, and neighboring pixels located to the left side of the pixel.

In other words, the post-processor 1420 changes the value of a pixel at the ith column and the jth row of the first predicted coding unit 2100 from f[i][j] to f[i][j], as shown in the following equation:
f[i][j]=(f[i−1][j]+f[i][j]+1)>>1   (12)

According to a sixth exemplary embodiment, the post-processor 1420 produces a second predicted coding unit by changing the value of each pixel in the first predicted coding unit by using a median between the values of a pixel of the first predicted coding unit, which is to be changed, and neighboring pixels of the pixel. Referring back to FIG. 21, for example, it is assumed that the value f[i][j] of the first pixel 2110 at the ith column and the ith row of the first predicted coding unit 2100, the value f[i][j−1] of the second pixel 2112, and the value f[i−1][j] of the third pixel 2111 have a relation of f[i][j−1]>f[i−1][j]>f[i][j], in terms of block size. In this case, the post-processor 1420 changes the value f[i][j] of the first pixel 2110 to the median f[i−1][j] among the first to third pixels 2110 to 2112.

In seventh to ninth exemplary embodiments, the post-processor 1420 produces a second predicted coding unit by using previous coding units adjacent to a current coding unit, which have been encoded and restored, rather than by using neighboring pixels of a pixel that is to be changed.

Referring back to FIG. 21, in the seventh exemplary embodiment, the post-processor 1420 changes the value of the first pixel 2110 to f[i][j] by calculating an average of the value of the first pixel 2110 at the ith column and the jth row of the first predicted coding unit 2100 and the value of the pixel 2121 that is located at the same column as the first pixel 2110 and included in a coding unit adjacent to the top of the current coding unit, as shown in the following equation:
f[i][j]=(f[i][j]+f[−1][j]+1)>>1   (13),
wherein f[−1][j] denotes the value of the pixel 2121.

Similarly, in the eighth exemplary embodiment, the post-processor 1420 changes the value of the first pixel 2110 to f[i][j] by calculating an average of the value of the first pixel 2110 at the ith column and the jth row of the first predicted coding unit 2100 and the value of the pixel 2122 that is located at the same row as the first pixel 2110 and included in a coding unit adjacent to the left side of the current coding unit, as shown in the following equation:
f[i][j]=(f[i][j]+f[j][−1]+1)>>1   (14),
wherein f[i][−1] denotes the value of the pixel 2122.

In the ninth exemplary embodiment, the post-processor 1420 changes the value of the first pixel 2110 to f[i][j] by calculating a weighted average of the values of the first pixel 2110 at the ith column and the jth row of the first predicted coding unit 2100, the pixel 2121 located at the same column as the first pixel 2110 and included in a coding unit adjacent to the top of the current coding unit, and the pixel 2122 located at the same row as the first pixel 2110 and included in a coding unit adjacent to the left side of the current coding unit, as shown in the following equation:
f′[i][j]=((f[i][j]<<1)+f[j][−1]+f[i][j−1]+2)>>2   (15)

In a tenth exemplary embodiment, the post-processor 1420 changes the value of the first pixel 2110 of the first predicted coding unit 2100, which is to be changed, from f[i][j] to f[i][j] by using one of the following equations.
f′[i][j]=min(f[i][j]+i,255)   (16)
f′[i][j]min(f[i][j]+j,255)   (17)
f′[i][j]=max(f[i][j]−i,0)   (18)
f′[i][j]max(f[i][j]−j,0)   (19)

In Equation (16), the pixel values of the first predicted coding unit 2100 are changed to gradually increase from top to bottom, in column units of the first predicted coding unit 2100. In Equation (17), the pixel values of the first predicted coding unit 2100 are changed to gradually increase in a right direction, in row units of the first predicted coding unit 2100. In Equation (18), the pixel values of the first predicted coding unit 2100 are changed to gradually decrease from top to bottom, in column units of the first predicted coding unit 2100. In Equation (19), the pixel values of the first predicted coding unit 2100 are changed to gradually decrease in the right direction, in row units of the first predicted coding unit 2100.

In an eleventh exemplary embodiment, if the value of the first pixel 2110, which is located at the ith column and the jth row of the first predicted coding unit 2100 and is to be changed, is f[i][j], the value of a pixel located at an upper leftmost point of the first predicted coding unit 2100 is f[0][0], the value of a pixel located at the jth column as the first pixel 2110 and at the uppermost point of the first predicted coding unit 2100 is f[0][j], the value of a pixel located at the ith row as the first pixel 2110 and at the leftmost point of the first predicted coding unit is f[i][0], and
G[i][j]=f[i][0]+f[0][j]−f[0][0],
then the post-processor 1420 changes the value of the first pixel 2110 to f[i][j], as shown in the following equation:
f′[i][j]=(f[i][j]+G[i][j])/2   (20)

Equation (20) is based on a wave equation, in which the value of each pixel in the first predicted coding unit 2100 is changed by calculating the value G[i][j] by setting the values of a pixel on the uppermost point of and a pixel on the leftmost point of the first predicted coding unit 2100 to be boundary conditions so as to smooth the value of each pixel in the first predicted coding unit 2100, and then calculating an average of the values G[i][j] and f[i][j].

Also, if a value of a first pixel at an xth column and an yth row of the first predicted coding unit, which is to be changed, is f[x][y] and values of neighboring pixels located above, below, and to the left and right sides of the first pixel are f[x−1][y], f[x+1][y], f[x][y−1], and f[x][y+1], respectively, then the post-processor 1420 may change the value of the first pixel to f[x][y] by using one of the following shifting operations:
f[x,y]=(f[x,y]+f[x−1,y]+f[x,y−1]+f[x,y+1]+2)>>2
f[x,y]=(f[x,y]+f[x−1,y]+f[x,y−1]+f[x−1,y−1]+2)>>2
f[x,y]=(2*f[x,y]+f[x+1,y]+f[x,y−1]+2)>>2
f[x,y]=(2*f[x,y]+f[x−1,y]+f[x,y−1]+2)>>2
f[x,y]=(f[x,y]+f[x+1,y]+f[x,y+1]+f[x,y−1]+2)>>2
f[x,y]=(f[x,y]+f[x−1,y]+f[x,y+1]+f[x,y−1]+2)>>2

Also, the post-processor 1420 may produce a median by using the first pixel and neighboring pixels of the first pixel, and change the value of the first pixel by using the median. For example, the value of the first pixel may be changed by setting a median t[x,y] by using an equation: t [x,y]=(2*f[x,y]+f[x−1,y]+f[x,y−1]+2)>>2, f[x,y]=t[x,y]. Similarly, the median t[x,y] between the first pixel and the neighboring pixels may be calculated using an equation: t[x,y]=median (f[x,y],f[x−1, y],f[x,y−1]), and may be determined as a changed value of the first pixel.

Also, the post-processor 1420 may change the value of the first pixel by using the following operation:

{
t[x,y] = f[x,y]
for (Int iter=0; iter<iterMax; iter++)
{
laplacian[x,y] = (t[x,y]<<2) − t[x−1,y]− t[x+1,y]− t[x,y−1]− t[x,y+1]
t [x,y] =(α* t [x,y] + laplacian[x,y] )/ α
}
f[x,y] = t[x,y]
}

Here, iterMax may be 5, and a may be 16.

Costs of bitstreams containing results of encoding second predicted coding units produced using various post-processing modes according to the above first through eleventh embodiments, respectively, are compared to one another, and then, the post-processing mode having the minimum cost is added to a header of a bitstream from among the various post-processing modes. When the post-processing mode is added to the bistream, it is possible to represent different post-processing modes to be differentiated from one another by using variable-length coding, in which a small number of bits are assigned to a post-processing mode that is most frequently used, based on a distribution of the post-processing mode determined after encoding of a predetermined number of coding units is completed. For example, if a post-processing mode according to the first exemplary embodiment is an optimum operation leading to the minimum cost of most coding units, a minimum number of bits are assigned to an index indicating this post-processing mode so that this post-processing mode may be differentiated from the other post-processing modes.

When a coding unit is split to sub coding units and prediction is performed in the sub coding units, a second predicted coding unit may be produced by applying different post-processing modes to the sub coding units, respectively, or by applying the same post-processing mode to sub coding units belonging to the same coding unit so as to simplify calculation and decrease an overhead rate.

A rate-distortion optimization method may be used as a cost for determining an optimum post-processing mode. Since a video encoding method according to an exemplary embodiment is performed on an intra predicted coding unit used as reference data for another coding unit, a cost may be calculated by allocating a high weight to a distortion, compared to the rate-distortion optimization method. That is, in the rate-distortion optimization method, a cost is calculated, based on a distortion that is the difference between an encoded image and the original image and a bitrate generated, as shown in the following equation:
Cost=distortion+bit-rate   (21)

In contrast, in a video encoding method according to an exemplary embodiment, an optimum post-processing mode is determined by allocating a high weight to a distortion, compared to the rate-distortion optimization method, as shown in the following equation:
Cost=α*distortion+bit-rate (α denotes a real number equal to or greater than 2)   (22)

FIG. 23 is a flowchart illustrating a method of encoding video according to an exemplary embodiment. Referring to FIG. 23, in operation 2310, a first predicted coding unit of a current coding unit that is to be encoded, is produced. The first predicted coding unit is an intra predicted block produced by performing a general intra prediction method, and one of various intra prediction modes having various directionalities, which is determined by the size of a coding unit.

In operation 2320, it is determined whether the current coding unit has a portion located outside a boundary of a current picture. A predetermined index MPI_PredMode may be produced according to the determination result, in such a manner that post-processing for producing a second predicted coding unit will not be performed when the predetermined index MPI_PredMode is 0 and will be performed when the predetermined index MPI_PredMode is 1.

If it is determined in operation 2320 that the current coding unit does not have a portion located outside a boundary of the current picture, then a second predicted coding unit is produced by changing a value of each pixel of the first predicted coding unit by using each pixel of the first predicted coding unit and at least one neighboring pixel, in operation 2330. As described above in the first through eleventh exemplary embodiments regarding an operation of the post-processor 1420, a second predicted coding unit may be produced by changing the value of each pixel in the first predicted coding unit by performing one of various post-processing modes on a pixel of the first predicted coding unit, which is to be changed, and neighboring pixels thereof. Then, a residual block that is the difference between the second predicted coding unit and the current coding unit, is transformed, quantized, and entropy encoded so as to generate a bitstream. Information regarding the post-processing mode used to produce the second predicted coding unit may be added to a predetermined region of the bitstream, so that a decoding apparatus may reproduce the second predicted coding unit of the current coding unit.

If it is determined in operation 2320 that the current coding unit has a portion located outside a boundary of the current picture, then, a second predicted coding unit is not produced, and the first predicted coding unit is directly output as prediction information regarding the current coding unit, in operation 2340. Then, a residual block that is the difference between the first predicted coding unit and the current coding unit, is transformed, quantized, and entropy encoded so as to generate a bitstream.

FIG. 26 is a flowchart illustrating a method of decoding video according to an exemplary embodiment. Referring to FIG. 26, in operation 2610, information regarding a prediction mode related to a current decoding unit that is to be decoded, is extracted from a received bitstream.

In operation 2620, a first predicted decoding unit of the current decoding unit is produced according to the extracted information.

In operation 2630, it is determined whether the current decoding unit has a portion located outside a boundary of a current picture. A predetermined index MPI_PredMode may be produced according to the determination result, in such a manner that post-processing for producing a second predicted decoding unit will not be performed when the predetermined index MPI_PredMode is 0 and will be performed when the predetermined index MPI_PredMode is 1.

If it is determined in operation 2630 that the current decoding unit does not have a portion located outside a boundary of the current picture, a second predicted decoding unit is produced by changing a value of each pixel of the first predicted decoding unit by using each pixel of the first predicted decoding unit and neighboring pixels of each pixel, in operation 2640. As described above in the first through eleventh exemplary embodiments regarding an operation of the post-processor 1420, a second predicted coding unit may be produced by changing the value of each pixel of the first predicted coding unit by using performing one of various post-processing modes on a pixel of the first predicted coding unit, which is to be changed, and neighboring pixels thereof.

If it is determined in operation 2630 that that the current decoding unit has a portion located outside a boundary of the current picture, post-processing for producing a second predicted decoding unit is not performed and the first predicted decoding unit is directly output as prediction information regarding the current decoding unit, in operation 2650. The first predicted decoding unit is combined with a residual block of the current decoding unit, which is extracted from the bitstream, so as to reproduce the current decoding unit.

An exemplary embodiment can also be embodied as computer readable code on a computer readable recording medium. The computer readable recording medium is any data storage device that can store data which can be thereafter read by a computer system. Examples of the computer readable recording medium include read-only memory (ROM), random-access memory (RAM), CD-ROMs, magnetic tapes, floppy disks, and optical data storage devices. The computer readable recording medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.

Exemplary embodiments can also be implemented as computer processors and hardware devices.

While exemplary embodiments have been particularly shown and described above, it will be understood by one of ordinary skill in the art that various changes in form and details may be made therein without departing from the spirit and scope of the inventive concept as defined by the following claims. The exemplary embodiments should be considered in a descriptive sense only and not for purposes of limitation. Therefore, the scope of the inventive concept is defined not by the detailed description of exemplary embodiments but by the following claims, and all differences within the scope will be construed as being included in the present inventive concept.

Alshina, Elena, Alshin, Alexander, Seregin, Vadim, Shlyakhov, Nikolay

Patent Priority Assignee Title
Patent Priority Assignee Title
8873633, Mar 28 2007 Samsung Electronics Co., Ltd. Method and apparatus for video encoding and decoding
20050053145,
20050190976,
20060023791,
20060120450,
20060233251,
20070133891,
20070253483,
20080107175,
20080240248,
20090074073,
20090135909,
20110038414,
20110038415,
20110090969,
20120014438,
20120177106,
CN101502119,
CN101569201,
EP1641280,
EP1841230,
EP2001239,
KR1020080088042,
KR1020110044486,
WO2008117933,
WO2009051419,
WO2009051719,
WO2010002214,
/
Executed onAssignorAssigneeConveyanceFrameReelDoc
Oct 29 2015Samsung Electronics Co., Ltd.(assignment on the face of the patent)
Date Maintenance Fee Events
Mar 10 2021M1552: Payment of Maintenance Fee, 8th Year, Large Entity.


Date Maintenance Schedule
Dec 03 20224 years fee payment window open
Jun 03 20236 months grace period start (w surcharge)
Dec 03 2023patent expiry (for year 4)
Dec 03 20252 years to revive unintentionally abandoned end. (for year 4)
Dec 03 20268 years fee payment window open
Jun 03 20276 months grace period start (w surcharge)
Dec 03 2027patent expiry (for year 8)
Dec 03 20292 years to revive unintentionally abandoned end. (for year 8)
Dec 03 203012 years fee payment window open
Jun 03 20316 months grace period start (w surcharge)
Dec 03 2031patent expiry (for year 12)
Dec 03 20332 years to revive unintentionally abandoned end. (for year 12)