U.S. patent application number 16/605094 was filed with the patent office on 2021-04-08 for image encoding/decoding method and device therefor.
The applicant listed for this patent is LG Electronics Inc.. Invention is credited to Seunghwan KIM, Moonmo KOO.
Application Number | 20210105477 16/605094 |
Document ID | / |
Family ID | 1000005289026 |
Filed Date | 2021-04-08 |
![](/patent/app/20210105477/US20210105477A1-20210408-D00000.png)
![](/patent/app/20210105477/US20210105477A1-20210408-D00001.png)
![](/patent/app/20210105477/US20210105477A1-20210408-D00002.png)
![](/patent/app/20210105477/US20210105477A1-20210408-D00003.png)
![](/patent/app/20210105477/US20210105477A1-20210408-D00004.png)
![](/patent/app/20210105477/US20210105477A1-20210408-D00005.png)
![](/patent/app/20210105477/US20210105477A1-20210408-D00006.png)
![](/patent/app/20210105477/US20210105477A1-20210408-D00007.png)
![](/patent/app/20210105477/US20210105477A1-20210408-D00008.png)
![](/patent/app/20210105477/US20210105477A1-20210408-D00009.png)
![](/patent/app/20210105477/US20210105477A1-20210408-D00010.png)
View All Diagrams
United States Patent
Application |
20210105477 |
Kind Code |
A1 |
KOO; Moonmo ; et
al. |
April 8, 2021 |
IMAGE ENCODING/DECODING METHOD AND DEVICE THEREFOR
Abstract
Disclosed are an image encoding/decoding method and a device
therefor. Specifically, an image encoding method may comprise the
steps of: generating a quantized transform block by performing
transform and quantization on a residual signal of a current block;
splitting the quantized transform block into a plurality of
coefficient groups; determining a first scan order representing the
scan order among the coefficients of the coefficient groups; and
entropy encoding the coefficients of the quantized transform block
according to the first scan order, and a second scan order
representing the scan order among the plurality of coefficient
groups.
Inventors: |
KOO; Moonmo; (Seoul, KR)
; KIM; Seunghwan; (Seoul, KR) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
LG Electronics Inc. |
Seoul |
|
KR |
|
|
Family ID: |
1000005289026 |
Appl. No.: |
16/605094 |
Filed: |
March 13, 2018 |
PCT Filed: |
March 13, 2018 |
PCT NO: |
PCT/KR2018/002952 |
371 Date: |
October 14, 2019 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
62484900 |
Apr 13, 2017 |
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
H04N 19/129 20141101;
H04N 19/30 20141101; H04N 19/13 20141101; H04N 19/176 20141101;
H04N 19/119 20141101 |
International
Class: |
H04N 19/129 20060101
H04N019/129; H04N 19/119 20060101 H04N019/119; H04N 19/13 20060101
H04N019/13; H04N 19/30 20060101 H04N019/30; H04N 19/176 20060101
H04N019/176 |
Claims
1. A method for encoding an image, the method comprising:
generating a quantized transform block by performing transform and
quantization on a residual signal of a current processing block;
splitting the quantized transform block into a plurality of
coefficient groups; determining a first scan order representing the
scan order among the coefficients of the coefficient groups; and
entropy encoding the coefficients of the quantized transform block
according to the first scan order and a second scan order
representing the scan order among the plurality of coefficient
groups.
2. The method for encoding an image of claim 1, wherein the
determining of the first scan order comprising: determining a
distance value among respective coefficients of the coefficient
group based on a left upper coefficient of the coefficient group,
and allocating a scan index to coefficients having the same
distance value according to a predetermined order while
sequentially increasing the distance value.
3. The method for encoding an image of claim 2, wherein the
determining of the distance value among the respective coefficients
of the coefficient group comprising: determining, when the
coefficient group is a non-square block, a horizontal increment
representing an increase amount of a coordinate value in a
horizontal direction of each coefficient and a vertical increment
representing an increase amount of the coordinate value in a
vertical direction based on a ratio of a width and a height of the
coefficient group, wherein a distance value of the respective
coefficients is determined by a value acquired by summing up the
horizontal increment and the vertical increment.
4. The method for encoding an image of claim 3, wherein when the
width of the coefficient group is larger than the height, the
horizontal increment is determined as 1 and the vertical increment
is determined as 2, and wherein when the height of the coefficient
group is larger than the width, the horizontal increment is
determined as 2 and the vertical increment is determined as 1.
5. The method for encoding an image of claim 1, wherein the
splitting of the quantized transform block into the plurality of
coefficient groups includes hierarchically splitting the quantized
transform block and splitting the split quantized transform blocks
into coefficient groups having a lower depth, and wherein the
second scan order includes a scan order among coefficient groups
having respective depths from the quantized transform block.
6. The method for encoding an image of claim 1, wherein when the
quantized transform block is the non-square block, the quantized
transform block is split into coefficient groups constituted by a
specific number of coefficients, and wherein the specific number is
determined according to a ratio of a width and a height of the
quantized transform block.
7. A method for decoding an image, the method comprising: splitting
a current processing block into a plurality of coefficient groups;
determining a first scan order representing the scan order among
the coefficients of the coefficient groups; entropy decoding a
bitstream output from an encoder to generate a quantized transform
coefficient; and arranging the coefficients of the quantized
transform block according to the first scan order and the second
scan order representing the scan order among the plurality of
coefficient groups to generate the quantized transform block of the
current processing block.
8. The method for decoding an image of claim 7, wherein the
determining of the first scan order comprising: determining a
distance value among respective coefficients of the coefficient
group based on a left upper coefficient of the coefficient group,
and allocating a scan index to coefficients having the same
distance value according to a predetermined order while
sequentially increasing the distance value.
9. The method for decoding an image of claim 8, wherein the
determining of the distance value among the respective coefficients
of the coefficient group comprising: determining, when the
coefficient group is a non-square block, a horizontal increment
representing an increase amount of a coordinate value in a
horizontal direction of each coefficient and a vertical increment
representing an increase amount of the coordinate value in a
vertical direction based on a ratio of a width and a height of the
coefficient group, wherein a distance value of the respective
coefficients is determined by a value acquired by summing up the
horizontal increment and the vertical increment.
10. The method for decoding an image of claim 9, wherein when the
width of the coefficient group is larger than the height, the
horizontal increment is determined as 1 and the vertical increment
is determined as 2, and wherein when the height of the coefficient
group is larger than the width, the horizontal increment is
determined as 2 and the vertical increment is determined as 1.
11. The method for decoding an image of claim 7, wherein the
splitting of the current processing block into the plurality of
coefficient groups comprising: hierarchically splitting the current
processing block and splitting the split current processing block
into coefficient groups having a lower depth, and wherein the
second scan order includes a scan order among coefficient groups
having respective depths from the current processing block.
12. The method for decoding an image of claim 7, wherein when the
current processing block is the non-square block, the current
processing block is split into coefficient groups constituted by a
specific number of coefficients, and wherein the specific number is
determined according to a ratio of a width and a height of the
current processing block.
13. A device for decoding an image, the device comprising: a
coefficient group splitting unit splitting a current processing
block into a plurality of coefficient groups; a scan order
determining unit determining a first scan order representing the
scan order among the coefficients of the coefficient groups; a
transform coefficient generating unit entropy decoding a bitstream
output from an encoder to generate a quantized transform
coefficient; and a transform block generating unit arranging the
coefficients of the quantized transform block according to the
first scan order and the second scan order representing the scan
order among the plurality of coefficient groups to generate the
quantized transform block of the current processing block.
Description
TECHNICAL FIELD
[0001] The present disclosure relates to a still image or a moving
image processing method, and more particularly, to a method for
encoding/decoding a transformed residual signal and a device for
supporting the same.
BACKGROUND ART
[0002] Compression encoding means a series of signal processing
techniques for transmitting digitized information through a
communication line or techniques for storing information in a form
suitable for a storage medium. The medium including a picture, an
image, audio, etc. may be a target for compression encoding, and
particularly, a technique for performing compression encoding on a
picture is referred to as video image compression.
[0003] Next-generation video contents are supposed to have the
characteristics of high spatial resolution, a high frame rate and
high dimensionality of scene representation. In order to process
such contents, a drastic increase in the memory storage, memory
access rate and processing power will result.
[0004] Accordingly, it is required to design a coding tool for
processing next-generation video contents efficiently.
DISCLOSURE
Technical Problem
[0005] An object of the present disclosure proposes a method for
encoding/decoding a transformed residual signal.
[0006] Further, an object of the present disclosure proposes a
method for configuring a scan order among split coefficient groups
from a transform block in order to perform entropy coding for a
residual signal.
[0007] Further, an object of the present disclosure proposes a
method for configuring a scan order in coefficients in split
coefficient groups from a transform block in order to perform
entropy coding for a residual signal.
[0008] The technical objects of the present disclosure are not
limited to the aforementioned technical objects, and other
technical objects, which are not mentioned above, will be
apparently appreciated by a person having ordinary skill in the art
from the following description.
Technical Solution
[0009] In an aspect of the present disclosure, an image encoding
method may include: generating a quantized transform block by
performing transform and quantization on a residual signal of a
current block; splitting the quantized transform block into a
plurality of coefficient groups; determining a first scan order
representing the scan order among the coefficients of the
coefficient groups; and entropy encoding the coefficients of the
quantized transform block according to the first scan order, and a
second scan order representing the scan order among the plurality
of coefficient groups.
[0010] Preferably, the determining of the first scan order may
include determining a distance value among respective coefficients
of the coefficient group based on a left upper coefficient of the
coefficient group, and allocating a scan index to coefficients
having the same distance value according to a predetermined order
while sequentially increasing the distance value.
[0011] Preferably, the determining of the distance value among the
respective coefficients of the coefficient group may include
determining, when the coefficient group is a non-square block, a
horizontal increment representing an increase amount of a
coordinate value in a horizontal direction of each coefficient and
a vertical increment representing an increase amount of the
coordinate value in a vertical direction based on a ratio of a
width and a height of the coefficient group, and a distance value
of the respective coefficients may be determined by a value
acquired by summing up the horizontal increment and the vertical
increment.
[0012] Preferably, when the width of the coefficient group is
larger than the height, the horizontal increment may be determined
as 1 and the vertical increment may be determined as 2, and when
the height of the coefficient group is larger than the width, the
horizontal increment may be determined as 2 and the vertical
increment may be determined as 1.
[0013] Preferably, the splitting of the quantized transform block
into the plurality of coefficient groups may include hierarchically
splitting the quantized transform block and splitting the split
quantized transform blocks into coefficient groups having a lower
depth, and the second scan order may include a scan order among
coefficient groups having respective depths from the quantized
transform block.
[0014] Preferably, when the quantized transform block is the
non-square block, the quantized transform block may be split into
coefficient groups constituted by a specific number of
coefficients, and the specific number may be determined according
to a ratio of a width and a height of the quantized transform
block.
[0015] In another aspect of the present disclosure, a method for
decoding an image may include: splitting a current processing block
into a plurality of coefficient groups; determining a first scan
order representing the scan order among the coefficients of the
coefficient groups; entropy decoding a bitstream output from an
encoder to generate a quantized transform coefficient; and
arranging the coefficients of the quantized transform block
according to the first scan order and the second scan order
representing the scan order among the plurality of coefficient
groups to generate the quantized transform block of the current
processing block.
[0016] In another aspect of the present disclosure, the determining
of the first scan order may include determining a distance value
among respective coefficients of the coefficient group based on a
left upper coefficient of the coefficient group, and allocating a
scan index to coefficients having the same distance value according
to a predetermined order while sequentially increasing the distance
value.
[0017] Preferably, the determining of the distance value among the
respective coefficients of the coefficient group may include
determining, when the coefficient group is a non-square block, a
horizontal increment representing an increase amount of a
coordinate value in a horizontal direction of each coefficient and
a vertical increment representing an increase amount of the
coordinate value in a vertical direction based on a ratio of a
width and a height of the coefficient group, and a distance value
of the respective coefficients may be determined by a value
acquired by summing up the horizontal increment and the vertical
increment.
[0018] Preferably, when the width of the coefficient group is
larger than the height, the horizontal increment may be determined
as 1 and the vertical increment may be determined as 2, and when
the height of the coefficient group is larger than the width, the
horizontal increment may be determined as 2 and the vertical
increment may be determined as 1.
[0019] Preferably, the splitting of the current processing block
into the plurality of coefficient groups may include hierarchically
splitting the current processing block and splitting the split
current processing block into coefficient groups having a lower
depth, and the second scan order may include a scan order among
coefficient groups having respective depths from the current
processing block.
[0020] Preferably, when the current processing block is the
non-square block, the current processing block may be split into
coefficient groups constituted by a specific number of
coefficients, and the specific number may be determined according
to a ratio of a width and a height of the current processing
block.
[0021] In yet another aspect of the present disclosure, a device
for decoding an image may include: a coefficient group splitting
unit splitting a current processing block into a plurality of
coefficient groups; a scan order determining unit determining a
first scan order representing the scan order among the coefficients
of the coefficient groups; a transform coefficient generating unit
entropy decoding a bitstream output from an encoder to generate a
quantized transform coefficient; and a transform block generating
unit arranging the coefficients of the quantized transform block
according to the first scan order and the second scan order
representing the scan order among the plurality of coefficient
groups to generate the quantized transform block of the current
processing block.
Advantageous Effects
[0022] According to an embodiment of the present disclosure, the
amount of a residual signal can be saved at the time of encoding
still image or a moving image.
[0023] Further, according to an embodiment of the present
disclosure, the amount of the residual signal is saved to enhance
encoding/decoding efficiency.
[0024] Further, according to an embodiment of the present
disclosure, a scan order of transform coefficients is efficiently
configured to reduce a data amount required for coding the
transform coefficient.
[0025] Further, according to an embodiment of the present
disclosure, the scan order of the transform coefficients is
configured by considering a non-square block shape to reduce the
data amount required for coding the transform coefficient and
enhance compression performance.
[0026] Advantages which can be obtained in the present disclosure
are not limited to the aforementioned effects and other unmentioned
advantages will be clearly understood by those skilled in the art
from the following description.
DESCRIPTION OF DRAWINGS
[0027] The accompanying drawings, which are included herein as a
part of the description for help understanding the present
disclosure, provide embodiments of the present disclosure, and
describe the technical features of the present disclosure with the
description below.
[0028] FIG. 1 is illustrates a schematic block diagram of an
encoder in which the encoding of a still image or video signal is
performed, as an embodiment to which the present disclosure is
applied.
[0029] FIG. 2 illustrates a schematic block diagram of a decoder in
which decoding of a still image or video signal is performed, as an
embodiment to which the present disclosure is applied.
[0030] FIG. 3 is a diagram for describing a split structure of a
coding unit that may be applied to the present disclosure.
[0031] FIG. 4 is a diagram for describing a prediction unit that
may be applied to the present disclosure.
[0032] FIG. 5 illustrates a method for encoding a residual signal
as an embodiment to which the present disclosure is applied.
[0033] FIG. 6 illustrates a method for decoding a residual signal
as an embodiment to which the present disclosure is applied.
[0034] FIG. 7 is a diagram illustrating a method for scanning
transform coefficients in units of a coefficient group as an
embodiment to which the present disclosure is applied.
[0035] FIG. 8 is a diagram illustrating a scan order of transform
coefficients for each coefficient group as an embodiment to which
the present disclosure is applied.
[0036] FIGS. 9 and 10 are diagrams for describing a method for
determining a split structure of a transform block and a scan order
of a transform coefficient as an embodiment to which the present
disclosure is applied.
[0037] FIG. 11 is a diagram illustrating one example of
representing a location of a coefficient in a block as an
embodiment to which the present disclosure is applied.
[0038] FIGS. 12 and 13 are diagrams illustrating a scan order
depending on a location of a transform coefficient in a block
according to an embodiment of the present disclosure.
[0039] FIGS. 14 and 15 are diagrams for describing a method for
determining a scan order for coefficients of a non-square block as
an embodiment to which the present disclosure is applied.
[0040] FIGS. 16 and 17 are diagrams for describing a method for
determining a scan order for coefficients of a non-square block in
units of a super-pixel as an embodiment to which the present
disclosure is applied.
[0041] FIG. 18 is a diagram illustrating a method for determining a
scan order for coefficient groups as an embodiment to which the
present disclosure is applied.
[0042] FIG. 19 illustrates a method for encoding an image according
to an embodiment of the present disclosure.
[0043] FIG. 20 illustrates a method for decoding an image according
to an embodiment of the present disclosure.
[0044] FIG. 21 illustrates a device for decoding an image according
to an embodiment of the present disclosure.
MODE FOR INVENTION
[0045] Hereinafter, a preferred embodiment of the present
disclosure will be described by reference to the accompanying
drawings. The description that will be described below with the
accompanying drawings is to describe exemplary embodiments of the
present disclosure, and is not intended to describe the only
embodiment in which the present disclosure may be implemented. The
description below includes particular details in order to provide
perfect understanding of the present disclosure. However, it is
understood that the present disclosure may be embodied without the
particular details to those skilled in the art.
[0046] In some cases, in order to prevent the technical concept of
the present disclosure from being unclear, structures or devices
which are publicly known may be omitted, or may be depicted as a
block diagram centering on the core functions of the structures or
the devices.
[0047] Further, although general terms widely used currently are
selected as the terms in the present disclosure as much as
possible, a term that is arbitrarily selected by the applicant is
used in a specific case. Since the meaning of the term will be
clearly described in the corresponding part of the description in
such a case, it is understood that the present disclosure will not
be simply interpreted by the terms only used in the description of
the present disclosure, but the meaning of the terms should be
figured out.
[0048] Specific terminologies used in the description below may be
provided to help the understanding of the present disclosure.
Furthermore, the specific terminology may be modified into other
forms within the scope of the technical concept of the present
disclosure. For example, a signal, data, a sample, a picture, a
frame, a block, etc may be properly replaced and interpreted in
each coding process.
[0049] Hereinafter, in present disclosure, a `block` or `unit` may
mean a unit in which a process of encoding/decoding such as
prediction, transform, and/or quantization is performed and may be
configured in a multi-dimensional array of a sample (or a
pixel).
[0050] The `block` or `unit` may mean a multi-dimensional array of
the sample for a luma component and may mean a multi-dimensional
array of the sample for a chroma component. Further, the block or
unit may be collectively referred to as both the multi-dimensional
array of the sample for the luma component and the
multi-dimensional array of the sample for the chroma component.
[0051] For example, the `block` or `unit` may be interpreted as a
meaning including all of a coding block (CB) meaning an array of
samples to be encoded/decoded, a coding tree block (CTB)
constituted by a plurality of coding blocks, a prediction block
(PB) (or prediction unit (PU)) meaning the array of samples to
which the same prediction is applied, and a transform block (TB)
(or transform unit (TU)) meaning the array of samples to which the
same transform is applied.
[0052] Further, unless separately mentioned in present disclosure,
the `block` or `unit` may be interpreted as a meaning including a
syntax structure used during a process of encoding/decoding the
array of the samples for the luma component and/or chroma
component. Here, the syntax structure means a syntax element on 0
or more syntax elements which exist in a bitstream in a specific
order and the syntax element means an element of data represented
in the bitstream.
[0053] For example, the `block` or `unit` may be interpreted as a
meaning including all of a coding unit (CU) including the coding
block (CB) and the syntax structure used for encoding the coding
block (CB), a coding tree unit (CU) constituted by a plurality of
coding units, a prediction unit (PU) including the prediction block
(PB) and a syntax structure used for predicting the prediction
block (PB), and a transform unit (TU) including the transform block
(TB) and a syntax structure used for transforming the transform
block (TB).
[0054] Further, in present disclosure, the `block` or `unit` is not
particularly limited to an array of square or rectangular samples
(pixels) and may mean an array of polygonal samples (or pixels)
having three or more vertices. In this case, the `block` or `unit`
may be referred to as a polygon block or a polygonal unit.
[0055] FIG. 1 is illustrates a schematic block diagram of an
encoder in which the encoding of a still image or video signal is
performed, as an embodiment to which the present disclosure is
applied.
[0056] Referring to FIG. 1, the encoder 100 may include a video
split unit 110, a subtractor 115, a transform unit 120, a
quantization unit 130, a dequantization unit 140, an inverse
transform unit 150, a filtering unit 160, a decoded picture buffer
(DPB) 170, a prediction unit 180 and an entropy encoding unit 190.
Furthermore, the prediction unit 180 may include an
inter-prediction unit 181 and an intra-prediction unit 182.
[0057] The video split unit 110 splits an input video signal (or
picture or frame), input to the encoder 100, into one or more
blocks.
[0058] The subtractor 115 generates a residual signal (or residual
block) by subtracting a predicted signal (or predicted block),
output by the prediction unit 180 (i.e., by the inter-prediction
unit 181 or the intra-prediction unit 182), from the input video
signal. The generated residual signal (or residual block) is
transmitted to the transform unit 120.
[0059] The transform unit 120 generates transform coefficients by
applying a transform scheme (e.g., discrete cosine transform (DCT),
discrete sine transform (DST), graph-based transform (GBT) or
Karhunen-Loeve transform (KLT)) to the residual signal (or residual
block). In this case, the transform unit 120 may generate transform
coefficients by performing transform using a prediction mode
applied to the residual block and a transform scheme determined
based on the size of the residual block.
[0060] The quantization unit 130 quantizes the transform
coefficient and transmits it to the entropy encoding unit 190, and
the entropy encoding unit 190 performs an entropy coding operation
of the quantized signal and outputs it as a bit stream.
[0061] Meanwhile, the quantized signal outputted by the
quantization unit 130 may be used to generate a prediction signal.
For example, a residual signal may be reconstructed by applying
dequatization and inverse transformation to the quantized signal
through the dequantization unit 140 and the inverse transform unit
150. A reconstructed signal (or reconstructed block) may be
generated by adding the reconstructed residual signal to the
prediction signal output by the inter-prediction unit 181 or the
intra-prediction unit 182.
[0062] Meanwhile, during such a compression process, neighbor
blocks are quantized by different quantization parameters.
Accordingly, an artifact in which a block boundary is shown may
occur. Such a phenomenon is referred to a blocking artifact, which
is one of important factors for evaluating image quality. In order
to decrease such an artifact, a filtering process may be performed.
Through such a filtering process, the blocking artifact is removed
and the error of a current picture is decreased at the same time,
thereby improving image quality.
[0063] The filtering unit 160 applies filtering to the
reconstructed signal, and outputs it through a playback device or
transmits it to the decoded picture buffer 170. The filtered signal
transmitted to the decoded picture buffer 170 may be used as a
reference picture in the inter-prediction unit 181. As described
above, an encoding rate as well as image quality can be improved
using the filtered picture as a reference picture in an
inter-picture prediction mode.
[0064] The decoded picture buffer 170 may store the filtered
picture in order to use it as a reference picture in the
inter-prediction unit 181.
[0065] The inter-prediction unit 181 performs temporal prediction
and/or spatial prediction with reference to the reconstructed
picture in order to remove temporal redundancy and/or spatial
redundancy. In this case, a blocking artifact or ringing artifact
may occur because a reference picture used to perform prediction is
a transformed signal that experiences quantization or
dequantization in a block unit when it is encoded/decoded
previously.
[0066] Here, since the reference picture used for performing
prediction is a signal encoded/decoded in units of a block at a
previous time, blocking artifacts or ringing artifacts may
exist.
[0067] Accordingly, the inter-prediction unit 181 may interpolate a
signal between pixels in units of a sub-pixel by applying a
low-pass filter in order to solve performance degradation due to
discontinuity or quantization of such a signal or enhance
prediction of motion prediction. Here, the sub-pixel means a
virtual pixel generated by applying an interpolation filter and an
integer pixel means an actual pixel which exists in the
reconstructed picture. As an interpolation method, linear
interpolation, bi-linear interpolation, wiener filter, and the like
may be adopted.
[0068] An interpolation filter is applied to the reconstructed
picture to enhance precision of prediction. For example, the
inter-prediction unit 181 applies the interpolation filter to the
integer pixel to generate an interpolated pixel and the prediction
may be performed by using an interpolated block constituted by the
interpolated pixels.
[0069] The intra-prediction unit 182 predicts the current block by
referring to samples in the vicinity of a block which is to be
subjected to current encoding. The intra-prediction unit 182 may
perform the following process in order to perform the intra
prediction. First, a reference sample may be prepared, which is
required for generating the prediction signal. In addition, the
predicted signal (predicted block) may be generated by using the
prepared reference sample. Thereafter, the prediction mode is
encoded. In this case, the reference sample may be prepared through
reference sample padding and/or reference sample filtering. Since
the reference sample is subjected to prediction and reconstruction
processes, a quantization error may exist. Accordingly, a reference
sample filtering process may be performed with respect to each
prediction mode used for the intra prediction in order to reduce
such an error.
[0070] The predicted signal (or predicted block) generated through
the inter-prediction unit 181 or the intra-prediction unit 182 may
be used for generating the reconstructed signal (or reconstructed
block) or used for generating the residual signal (or residual
block).
[0071] FIG. 2 illustrates a schematic block diagram of a decoder in
which decoding of a still image or video signal is performed, as an
embodiment to which the present disclosure is applied.
[0072] Referring to FIG. 2, the decoder 200 may include an entropy
decoding unit 210, a dequantization unit 220, an inverse transform
unit 230, an adder 235, a filtering unit 240, a decoded picture
buffer (DPB) 250 and a prediction unit 260. Furthermore, the
prediction unit 260 may include an inter-prediction unit 261 and an
intra-prediction unit 262.
[0073] Furthermore, a reconstructed video signal output through the
decoder 200 may be played back through a playback device.
[0074] The decoder 200 receives a signal (i.e., bit stream) output
by the encoder 100 shown in FIG. 1. The entropy decoding unit 210
performs an entropy decoding operation on the received signal.
[0075] The dequantization unit 220 obtains transform coefficients
from the entropy-decoded signal using quantization step size
information.
[0076] The inverse transform unit 230 obtains a residual signal (or
residual block) by inverse transforming the transform coefficients
by applying an inverse transform scheme.
[0077] The adder 235 adds the acquired residual signal (or residual
block) to the predicted signal (or predicted block) output from the
prediction unit 260 (i.e., the inter-prediction unit 261 or the
intra-prediction unit 262) to generate the reconstructed signal (or
reconstructed block).
[0078] The filtering unit 240 applies filtering to the
reconstructed signal (or reconstructed block) and outputs the
filtered signal to a playback device or transmits the filtered
signal to the decoded picture buffer 250. The filtered signal
transmitted to the decoded picture buffer 250 may be used as a
reference picture in the inter-prediction unit 261.
[0079] In present disclosure, the embodiments described in the
filtering unit 160, inter-prediction unit 181 and intra-prediction
unit 182 of the encoder 100 may be identically applied to the
filtering unit 240, inter-prediction unit 261 and intra-prediction
unit 262 of the decoder, respectively.
Block Split Structure
[0080] In general, a block-based image compression method is used
in the compression technique (e.g., HEVC) of a still image or a
video. The block-based image compression method is a method of
processing an image by splitting it into specific block units, and
may decrease memory use and a computational load.
[0081] FIG. 3 is a diagram for describing a split structure of a
coding unit which may be applied to the present disclosure.
[0082] An encoder splits a single image (or picture) into coding
tree units (CTUs) of a quadrangle form, and sequentially encodes
the CTUs one by one according to raster scan order.
[0083] In HEVC, a size of CTU may be determined as one of
64.times.64, 32.times.32, and 16.times.16. The encoder may select
and use the size of a CTU based on resolution of an input video
signal or the characteristics of input video signal. The CTU
includes a coding tree block (CTB) for a luma component and the CTB
for two chroma components that correspond to it.
[0084] One CTU may be split in a quad-tree structure. That is, one
CTU may be split into four units each having a square form and
having a half horizontal size and a half vertical size, thereby
being capable of generating coding units (CUs). Such splitting of
the quad-tree structure may be recursively performed. That is, the
CUs are hierarchically split from one CTU in the quad-tree
structure.
[0085] A CU means a basic unit for the processing process of an
input video signal, for example, coding in which intra/inter
prediction is performed. A CU includes a coding block (CB) for a
luma component and a CB for two chroma components corresponding to
the luma component. In HEVC, a CU size may be determined as one of
64.times.64, 32.times.32, 16.times.16, and 8.times.8.
[0086] Referring to FIG. 3, the root node of a quad-tree is related
to a CTU. The quad-tree is split until a leaf node is reached. The
leaf node corresponds to a CU.
[0087] This is described in more detail. The CTU corresponds to the
root node and has the smallest depth (i.e., depth=0) value. A CTU
may not be split depending on the characteristics of an input video
signal. In this case, the CTU corresponds to a CU.
[0088] A CTU may be split in a quad-tree form. As a result, lower
nodes, that is, a depth 1 (depth=1), are generated. Furthermore, a
node (i.e., leaf node) that belongs to the lower nodes having the
depth of 1 and that is no longer split corresponds to a CU. For
example, in FIG. 3(b), a CU(a), a CU(b) and a CU(j) corresponding
to nodes a, b and j have been once split from the CTU, and have a
depth of 1.
[0089] At least one of the nodes having the depth of 1 may be split
in a quad-tree form. As a result, lower nodes having a depth 1
(i.e., depth=2) are generated. Furthermore, a node (i.e., leaf
node) that belongs to the lower nodes having the depth of 2 and
that is no longer split corresponds to a CU. For example, in FIG.
3(b), a CU(c), a CU(h) and a CU(i) corresponding to nodes c, h and
i have been twice split from the CTU, and have a depth of 2.
[0090] Furthermore, at least one of the nodes having the depth of 2
may be split in a quad-tree form again. As a result, lower nodes
having a depth 3 (i.e., depth=3) are generated. Furthermore, a node
(i.e., leaf node) that belongs to the lower nodes having the depth
of 3 and that is no longer split corresponds to a CU. For example,
in FIG. 3(b), a CU(d), a CU(e), a CU(f) and a CU(g) corresponding
to nodes d, e, f and g have been three times split from the CTU,
and have a depth of 3.
[0091] In the encoder, a maximum size or minimum size of a CU may
be determined based on the characteristics of a video image (e.g.,
resolution) or by considering the encoding rate. Furthermore,
information about the maximum or minimum size or information
capable of deriving the information may be included in a bit
stream. A CU having a maximum size is referred to as the largest
coding unit (LCU), and a CU having a minimum size is referred to as
the smallest coding unit (SCU).
[0092] In addition, a CU having a tree structure may be
hierarchically split with predetermined maximum depth information
(or maximum level information). Furthermore, each split CU may have
depth information. Since the depth information represents a split
count and/or degree of a CU, it may include information about the
size of a CU.
[0093] Since the LCU is split in a Quad-tree shape, the size of SCU
may be obtained by using a size of LCU and the maximum depth
information. Or, inversely, the size of LCU may be obtained by
using a size of SCU and the maximum depth information of the
tree.
[0094] For a single CU, the information (e.g., a split CU flag
(split_cu_flag)) that represents whether the corresponding CU is
split may be forwarded to the decoder. This split information is
included in all CUs except the SCU. For example, when the value of
the flag that represents whether to split is `1`, the corresponding
CU is further split into four CUs, and when the value of the flag
that represents whether to split is `0`, the corresponding CU is
not split any more, and the processing process for the
corresponding CU may be performed.
[0095] As described above, a CU is a basic unit of the coding in
which the intra-prediction or the inter-prediction is performed.
The HEVC splits the CU in a prediction unit (PU) for coding an
input video signal more effectively.
[0096] A PU is a basic unit for generating a prediction block, and
even in a single CU, the prediction block may be generated in
different way by a unit of PU. However, the intra-prediction and
the inter-prediction are not used together for the PUs that belong
to a single CU, and the PUs that belong to a single CU are coded by
the same prediction method (i.e., the intra-prediction or the
inter-prediction).
[0097] A PU is not split in the Quad-tree structure, but is split
once in a single CU in a predetermined shape. This will be
described by reference to the drawing below.
[0098] FIG. 4 is a diagram for describing a prediction unit that
may be applied to the present disclosure.
[0099] A PU is differently split depending on whether the
intra-prediction mode is used or the inter-prediction mode is used
as the coding mode of the CU to which the PU belongs.
[0100] FIG. 4(a) illustrates a PU if the intra-prediction mode is
used, and FIG. 4(b) illustrates a PU if the inter-prediction mode
is used.
[0101] Referring to FIG. 4(a), assuming that the size of a single
CU is 2N.times.2N (N=4, 8, 16 and 32), the single CU may be split
into two types (i.e., 2N.times.2N or N.times.N).
[0102] In this case, if a single CU is split into the PU of
2N.times.2N shape, it means that only one PU is present in a single
CU.
[0103] Meanwhile, if a single CU is split into the PU of N.times.N
shape, a single CU is split into four PUs, and different prediction
blocks are generated for each PU unit. However, such PU splitting
may be performed only if the size of CB for the luma component of
CU is the minimum size (i.e., the case that a CU is an SCU).
[0104] Referring to FIG. 4(b), assuming that the size of a single
CU is 2N.times.2N (N=4, 8, 16 and 32), a single CU may be split
into eight PU types (i.e., 2N.times.2N, N.times.N, 2N.times.N,
N.times.2N, nL.times.2N, nR.times.2N, 2N.times.nU and
2.times.nD)
[0105] As in the intra-prediction, the PU split of N.times.N shape
may be performed only if the size of CB for the luma component of
CU is the minimum size (i.e., the case that a CU is an SCU).
[0106] The inter-prediction supports the PU split in the shape of
2N.times.N that is split in a horizontal direction and in the shape
of N.times.2N that is split in a vertical direction.
[0107] In addition, the inter-prediction supports the PU split in
the shape of nL.times.2N, nR.times.2N, 2N.times.nU and 2N.times.nD,
which is an asymmetric motion split (AMP). In this case, `n` means
1/4 value of 2N. However, the AMP may not be used if the CU to
which the PU is belonged is the CU of minimum size.
[0108] In order to encode the input video signal in a single CTU
efficiently, the optimal split structure of the coding unit (CU),
the prediction unit (PU) and the transform unit (TU) may be
determined based on a minimum rate-distortion value through the
processing process as follows. For example, as for the optimal CU
split process in a 64.times.64 CTU, the rate-distortion cost may be
calculated through the split process from a CU of 64.times.64 size
to a CU of 8.times.8 size. The detailed process is as follows.
[0109] 1) The optimal split structure of a PU and TU that generates
the minimum rate distortion value is determined by performing
inter/intra-prediction, transformation/quantization,
dequantization/inverse transformation and entropy encoding on the
CU of 64.times.64 size.
[0110] 2) The optimal split structure of a PU and TU is determined
to split the 64.times.64 CU into four CUs of 32.times.32 size and
to generate the minimum rate distortion value for each 32.times.32
CU.
[0111] 3) The optimal split structure of a PU and TU is determined
to further split the 32.times.32 CU into four CUs of 16.times.16
size and to generate the minimum rate distortion value for each
16.times.16 CU.
[0112] 4) The optimal split structure of a PU and TU is determined
to further split the 16.times.16 CU into four CUs of 8.times.8 size
and to generate the minimum rate distortion value for each
8.times.8 CU.
[0113] 5) The optimal split structure of a CU in the 16.times.16
block is determined by comparing the rate-distortion value of the
16.times.16 CU obtained in the process 3) with the addition of the
rate-distortion value of the four 8.times.8 CUs obtained in the
process 4). This process is also performed for remaining three
16.times.16 CUs in the same manner.
[0114] 6) The optimal split structure of CU in the 32.times.32
block is determined by comparing the rate-distortion value of the
32.times.32 CU obtained in the process 2) with the addition of the
rate-distortion value of the four 16.times.16 CUs that is obtained
in the process 5). This process is also performed for remaining
three 32.times.32 CUs in the same manner.
[0115] 7) Finally, the optimal split structure of CU in the
64.times.64 block is determined by comparing the rate-distortion
value of the 64.times.64 CU obtained in the process 1) with the
addition of the rate-distortion value of the four 32.times.32 CUs
obtained in the process 6).
[0116] In the intra-prediction mode, a prediction mode is selected
as a PU unit, and prediction and reconstruction are performed on
the selected prediction mode in an actual TU unit.
[0117] A TU means a basic unit in which actual prediction and
reconstruction are performed. A TU includes a transform block (TB)
for a luma component and a TB for two chroma components
corresponding to the luma component.
[0118] In the example of FIG. 3, as in an example in which one CTU
is split in the quad-tree structure to generate a CU, a TU is
hierarchically split from one CU to be coded in the quad-tree
structure.
[0119] TUs split from a CU may be split into smaller and lower TUs
because a TU is split in the quad-tree structure. In HEVC, the size
of a TU may be determined to be as one of 32.times.32, 16.times.16,
8.times.8 and 4.times.4.
[0120] Referring back to FIG. 3, the root node of a quad-tree is
assumed to be related to a CU. The quad-tree is split until a leaf
node is reached, and the leaf node corresponds to a TU.
[0121] This is described in more detail. A CU corresponds to a root
node and has the smallest depth (i.e., depth=0) value. A CU may not
be split depending on the characteristics of an input image. In
this case, the CU corresponds to a TU.
[0122] A CU may be split in a quad-tree form. As a result, lower
nodes having a depth 1 (depth=1) are generated. Furthermore, a node
(i.e., leaf node) that belongs to the lower nodes having the depth
of 1 and that is no longer split corresponds to a TU. For example,
in FIG. 3(b), a TU(a), a TU(b) and a TU(j) corresponding to the
nodes a, b and j are once split from a CU and have a depth of
1.
[0123] At least one of the nodes having the depth of 1 may be split
in a quad-tree form again. As a result, lower nodes having a depth
2 (i.e., depth=2) are generated. Furthermore, a node (i.e., leaf
node) that belongs to the lower nodes having the depth of 2 and
that is no longer split corresponds to a TU. For example, in FIG.
3(b), a TU(c), a TU(h) and a TU(i) corresponding to the node c, h
and l have been split twice from the CU and have the depth of
2.
[0124] Furthermore, at least one of the nodes having the depth of 2
may be split in a quad-tree form again. As a result, lower nodes
having a depth 3 (i.e., depth=3) are generated. Furthermore, a node
(i.e., leaf node) that belongs to the lower nodes having the depth
of 3 and that is no longer split corresponds to a CU. For example,
in FIG. 3(b), a TU(d), a TU(e), a TU(f) and a TU(g) corresponding
to the nodes d, e, f and g have been three times split from the CU
and have the depth of 3.
[0125] A TU having a tree structure may be hierarchically split
with predetermined maximum depth information (or maximum level
information). Furthermore, each spit TU may have depth information.
The depth information may include information about the size of the
TU because it indicates the split number and/or degree of the
TU.
[0126] Information (e.g., a split TU flag "split_transform_flag")
representing whether a corresponding TU has been split with respect
to one TU may be transferred to the decoder. The split information
is included in all of TUs other than a TU of a minimum size. For
example, if the value of the flag representing whether a TU has
been split is "1", the corresponding TU is split into four TUs. If
the value of the flag representing whether a TU has been split is
"0", the corresponding TU is no longer split.
Encoding/Decoding Method of Residual Signal
[0127] An input image is differentiated by the block predicted by
the intra-prediction unit or the inter-prediction unit and
information related to prediction and a residual signal for
differentiation are transmitted to reconstruct the image in a
decoder. This will be described in more detail with reference to
drawings given below.
[0128] FIG. 5 illustrates a method for encoding a residual signal
as an embodiment to which the present disclosure is applied.
[0129] Referring to FIG. 5, an encoder (encoding device) transforms
a residual signal (or residual block) (S501). The residual signal
means a signal differentiated from the signal predicted by the
intra-prediction unit or the inter-prediction unit from the input
image. The residual signal is a signal of a spatial domain and is
transformed to the frequency domain to remove a correlation between
the signals and concentrate energy on a low-frequency region. In
this case, the encoder may generate the transform coefficient by
applying a transform technique such as DCT, DST, GBT, KLT, etc.
[0130] The encoder quantizes the transform coefficient (S502). The
transformed signal is scaled and/or quantized in order to reduce a
magnitude of the signal.
[0131] The encoder divides the transform block into subblocks
(S503). The encoder may divide the transform block into subblocks
(e.g., a subblock having a 4.times.4 size) having a predetermined
constant size.
[0132] The encoder scans the quantized transform coefficient and
encodes the coefficient according to a scan order (S504). That is,
the quantized transform coefficients are entropy-encoded and
transmitted to the decoder according to a predetermined order.
[0133] Here, the scan order may correspond to an up-right diagonal
scan order, a horizontal scan order, a vertical scan order,
etc.
[0134] The encoder may scan transform coefficients in a reverse
direction until reaching a coefficient of coordinate (0,0) so
called DC coefficient by starting at a location of a last
significant coefficient (i.e., a last non-zero coefficient). In
this case, the quantized transform coefficients in each subblock
may be scanned according to the up-right diagonal scan order and
further, respective subblocks may also be scanned according to the
up-right diagonal scan order similarly.
[0135] In this case, information for identifying a location (i.e.,
a location of a column and a location of a row) of the last
significant coefficient in the transform block may be encoded.
[0136] The decoder may acquire the reconstructed image by reversely
performing the process in the encoder. This will be described in
more detail with reference to drawings given below.
[0137] FIG. 6 illustrates a method for decoding a residual signal
as an embodiment to which the present disclosure is applied.
[0138] Referring to FIG. 6, the decoder (decoding device) decodes a
coefficient (S601). That is, the decoder performs entropy decoding
for a signal (i.e., bitstream) output from the encoder to acquire a
quantized transform coefficient.
[0139] The decoder locates the quantized transform coefficients in
the scan order and inversely quantizes the transform coefficients
(S602). That is, the decoder may arrange respective quantized
transform coefficients reconstructed through entropy decoding in
the residual signal array according to a predetermined order.
[0140] As described above, the scan order may correspond to the
up-right diagonal scan order, the horizontal scan order, the
vertical scan order, etc.
[0141] As described above, information representing the location of
the last significant coefficient (i.e., non-zero coefficient)
according to the scan order in the transform block may be signaled
through the bitstream. The decoder parses the above information to
derive the location of the column and the location of the row of
the last significant coefficient (i.e., non-zero coefficient)
according to the scan order in the transform block.
[0142] The decoder may scan transform coefficients in the reverse
direction until reaching coordinate (0,0) so called DC coefficient
by starting at the location of the last significant coefficient
(i.e., non-zero coefficient). In this case, the quantized transform
coefficients in each subblock may be scanned according to a reverse
order to the up-right diagonal scan order and further, respective
subblocks may also be scanned according to the reverse order to the
up-right diagonal scan order similarly.
[0143] The decoder may inversely quantize the quantized transform
coefficients according to the scan order as described above.
[0144] The decoder inversely transforms the inversely quantized
transform coefficients (S603). That is, the decoder may inversely
transform the transform coefficient by applying an inverse
transform technique and acquire the residual signal.
[0145] As such, respective coefficients reconstructed through
entropy decoding may be arranged in the residual signal array
according to the scan order and reconstructed into the residual
signals of the spatial domain through inverse quantization and
inverse transform. In addition, the reconstructed residual signal
is combined with the prediction signal and then output as the
reconstructed image through a filtering process.
EMBODIMENT 1
[0146] In an embodiment of the present disclosure, the
encoder/decoder may hierarchically configure the scan order for the
transform coefficients. In other words, the encoder/decoder may
split the transform block (or residual block or scan processing
block) into coefficient groups and then perform scanning in units
of the split coefficient groups. The coefficient group may be
referred to as a subblock, a sub group, a sub coefficient group,
etc.
[0147] The encoder/decoder may scan the transform coefficient in
each coefficient group while scanning the transform coefficient in
units of the coefficient group split from the transform block
according to the scan order. For example, the coefficient group may
be a block having a 4.times.4 size. This will be described with
reference to FIG. 7 below.
[0148] FIG. 7 is a diagram illustrating a method for scanning
transform coefficients in units of a coefficient group as an
embodiment to which the present disclosure is applied.
[0149] Referring to FIG. 7, it is assumed that the size of the
current block (i.e., transform block) is 8.times.8 and the
coefficient group is determined as 4.times.4 blocks. In this case,
for example, the encoder/decoder may scan the coefficient groups in
the order of CG1 701, CG3 703, CG2 702, and CG4 704. In addition,
the encoder/decoder may scan the coefficients in each coefficient
group according to a diagonal scan order similarly to the scan
order between the coefficient groups.
[0150] When the current block having the 8.times.8 size of FIG. 7
is expressed as CG.sup.0(1) and the coefficient groups having the
4.times.4 size are expressed as CG.sup.1(1,k),k=1, . . . ,4 (where
k represents the scan order), the coefficient groups of FIG. 7 may
satisfy Equation 1 below.
CG.sup.1(1,1)=CG1, CG.sup.1(1,2)=CG3, CG.sup.1(1,3)=CG2,
CG.sup.1(1,4)=CG4 [Equation 1]
[0151] It is assumed that scanning starts from a coefficient (i.e.,
DC coefficient) corresponding to a low frequency in FIG. 7 and
Equation 1, but encoding/decoding may be performed from a
coefficient group scanned last in an actual encoding/decoding
process. Further, in this case, the coefficients in the coefficient
group may be scanned by using the same scan order and
encoding/decoding may be performed from the coefficient positioned
last in the scan order.
[0152] That is, when entropy coding for the transform coefficient
is performed, the coefficient groups may be encoded in the order of
CG4 704, CG2 702, CG3 703, and CG1 701 and in this case, a DC
component coefficient positioned at an upper left end may be
encoded last.
[0153] In present disclosure, embodiments are described based on a
method for first scanning the DC component at the upper left end as
in Equation 1, but the present disclosure is not limited thereto
and a reverse-direction scan order may be applied. Even when the
reverse scan order is applied during the actual coding process, the
method proposed by the present disclosure may be applied. In this
case, the reverse scan order may be derived by using Equation 9 to
be described below from a forward scan order.
[0154] FIG. 8 is a diagram illustrating a scan order of transform
coefficients for each coefficient group as an embodiment to which
the present disclosure is applied.
[0155] Referring to FIG. 8, a hierarchical relationship of a
current block 801, coefficient groups 802, 803, 804, and 805, and
coefficients in each coefficient group may be represented as a tree
structure. In this case, the encoder/decoder may perform scanning
in the order from the left side to the right side and perform
scanning according to a depth-first search method.
[0156] Leaf nodes having the tree structure represent locations of
coefficients in the current block 801. The location of each
coefficient may be represented as a 1.times.2 row vector
constituted by a row-direction index and a column-direction
index.
[0157] In present disclosure, the coefficient group may be written
as CG.sup.d(i.sub.0,i.sub.1, . . . ,i.sub.d). Here, i.sub.k(k=0,1,
. . . ,d) represents a scan index in k depth of the corresponding
coefficient group. In addition, d represents the depth of the
corresponding coefficient group in the tree structure.
[0158] FIGS. 9 and 10 are diagrams for describing a method for
determining a split structure of a transform block and a scan order
of a transform coefficient as an embodiment to which the present
disclosure is applied.
[0159] Referring to FIG. 9, it is assumed that a current processing
block is a block having a 16.times.16 size. In this case, the
encoder/decoder may recursively (or hierarchically) split (i.e.,
split the current processing block into depth 2 or more) the
current processing block in order to perform scanning of the
transform coefficient. When the current processing block is
recursively split as shown in FIG. 9(c), the split structure of the
current processing block may be represented in a tree form
illustrated in FIG. 14.
[0160] Referring to FIG. 10, the lead nodes having the tree
structure are scanned from the left side to the right side to
perform scanning for all transform coefficients. That is, the scan
order may be determined from the left side to the right side of the
leaf node having the tree structure.
[0161] In present disclosure, a leaf coefficient group represents a
lowest depth coefficient group (i.e., a coefficient group of depth
2 in FIG. 10) including the lead node (i.e., the transform
coefficient in the coefficient group) having the tree structure in
FIG. 10. The leaf coefficient group is not split into coefficient
groups having lower depths any longer. Further, in a block
structure which is split into a tree structure, as the number of
splitting times increases, the depth increases. A node having a
lower depth represents nodes which are split from a node in which a
depth value is relatively larger, i.e., a node having a higher
depth.
[0162] The scan order in CG.sup.d(i.sub.0,i.sub.1, . . . ,i.sub.d)
may be expressed as shown in Equation 2 below.
.tau. ( CG d ( i 0 , i 1 , , i d ) ) = r 1 c 1 r 2 c 2 r h .times.
w c h .times. w , [ Equation 2 ] ##EQU00001##
where h=height of CG.sup.d(i.sub.0,i.sub.1, . . . ,i.sub.d) and
w=width of CG.sup.d(i.sub.0,i.sub.1, . . . ,i.sub.d)
[0163] Referring to FIG. 2, each row vector [r.sub.i c.sub.i] (i=1,
. . . ,h.times.w) represents the location of the transform
coefficient in h.times.w blocks. r.sub.i represents a row index and
c.sub.i represents a column index (1.ltoreq.r.sub.i.ltoreq.h,
1.ltoreq.c.sub.i.ltoreq.w).
[0164] In present disclosure, it is assumed that row indexes and
column indexes of all 2D blocks start from 1. In Equation 2,
.tau.(CG.sup.d(i.sub.0,i.sub.1, . . . ,i.sub.d)) represents the
scan order of the coefficients in the corresponding coefficient
group. That is, the coefficients at the corresponding locations may
be scanned in an order from [r.sub.1 c.sub.1] to [r.sub.h.times.w
c.sub.h.times.w].
[0165] As described above, since each of row vectors constituting
.tau.(CG.sup.d(i.sub.0,i.sub.1, . . . ,i.sub.d)) of Equation 2
represents the location of the transform coefficient in blocks
having an h.times.w size, a row index offset and a column index
offset in the transform block (i.e., CG.sup.0(1)) for the
coefficient group CG.sup.d(i.sub.0,i.sub.1, . . . ,i.sub.d) having
the depth d are added to all column vectors constituting
.tau.(CG.sup.d(i.sub.0,i.sub.1, . . . ,i.sub.d)) to acquire the
scan order in the transform block. In this case, the row index
offset and the column index offset may be calculated by using
Equation 3 below.
[ Equation 3 ] V ( CG d + 1 ( i 0 , i 1 , , i d + 1 ) ) = V ( CG d
( i 0 , i 1 , , i d ) ) + V rel ( CG d + 1 ( i 0 , i 1 , , i d + 1
) ) = k = 1 d + 1 V rel ( CG k ( i 0 , i 1 , , i k ) )
##EQU00002##
[0166] Referring to Equation 3,
V.sup.rel(CG.sup.d+1(i.sub.0,i.sub.1, . . . ,i.sub.d+1)) represents
a column vector representing a relative location of
CG.sup.d(i.sub.0,i.sub.1, . . . ,i.sub.d) of the current transform
block. For example, in FIG. 9 above V.sup.rel(CG.sup.2(1,1,4))=[8
8] may be established and
V(CG.sup.2(1,2,2))=V(CG.sup.1(1,2))+V.sup.rel(CG.sup.2(1,2,2))=[12
0]+[0 8]=[12 8] may be established.
[0167] When vector 1 is defined as 1=[1 1 . . . 1].sup.T, the scan
order of CD.sup.d(i.sub.0,i.sub.1, . . . ,i.sub.d) may be
calculated by using Equation 4 below.
S(CG.sup.d(i.sub.0,i.sub.1, . . .
,i.sub.d))=.tau.(CG.sup.d(i.sub.0,i.sub.1, . . .
,i.sub.d))+1V(CG.sup.d(i.sub.0,i.sub.1, . . . ,i.sub.d)) [Equation
4]
[0168] When CF.sup.d(i.sub.0,i.sub.1, . . . ,i.sub.d) is the leaf
coefficient group, the scan order in all blocks (i.e., transform
blocks) may be calculated by using Equation 4 above. That is, the
scan order in all blocks is equal to a sum of the scan order in the
coefficient group calculated by using Equation 2 described above
and the offset (i.e., 1V(CG.sup.d(i.sub.0,i.sub.1, . . .
,i.sub.d))) of the coefficient group calculated by using Equation 3
described above.
[0169] When CG.sup.d(i.sub.0,i.sub.1, . . . ,i.sub.d) is not the
leaf coefficient group, the scan order in the transform block may
be calculated by using Equation 5 below.
S ( CG d ( i 0 , i 1 , , i d ) ) = [ S ( CG d + 1 ( i 0 , i 1 , , i
d , 1 ) ) S ( CG d + 1 ( i 0 , i 1 , , i d , 2 ) ) S ( CG d + 1 ( i
0 , i 1 , , i d , N ) ) ] , [ Equation 5 ] ##EQU00003##
where N=number of CGs in CG.sup.d(i.sub.0,i.sub.1, . . . ,i.sub.d)
and d.gtoreq.0
[0170] The scan order for all blocks CG.sup.0(1) may be expressed
as S(CG.sup.0(i.sub.0)). In this case, the row index of the
S(CG.sup.0(i.sub.0)) may represent the scan index and each row
vector of the S(CG.sup.0(i.sub.0)) may represent the location in
all blocks for the corresponding scan index.
[0171] FIG. 11 is a diagram illustrating one example of
representing a location of a coefficient in a block as an
embodiment to which the present disclosure is applied.
[0172] Referring to FIG. 11, the location of the coefficient in the
block may be represented by using a raster scan order (i.e., a
row-first order and a lexicographical order). Index values may be
allocated to the locations of the respective coefficients according
to the scan order as illustrated in FIG. 11. In addition, the index
values representing the location of the coefficient of FIG. 11 may
be expressed as shown in Equation 6 below.
[ Equation 6 ] S ^ ( CG d ( i 0 , i 1 , , i d ) ) = S ( CG d ( i 0
, i 1 , , i d ) ) w 1 , where w = width of CG 0 ( i 0 ) and d
.gtoreq. 0 ##EQU00004##
[0173] When an index representing the location of the coefficient
is assigned according to a random scan order including the raster
scan order described above in the locations of the transform
coefficients in the block, the scan order may be expressed as shown
in Equation 7 below.
{tilde over (S)}(CG.sup.d(i.sub.0,i.sub.1, . . .
,i.sub.d))=f(S(CG.sup.d(i.sub.0,i.sub.1, . . . ,i.sub.d))), where
f:R.sup.L.times.2.fwdarw.R.sup.L, [Equation 7]
[0174] When
L = ( height of CG 0 ( i 0 ) ) .times. ( width of CG 0 ( i 0 ) ) ?
= ? ? 1 ? , ? , ? indicates text missing or illegible when filed
##EQU00005##
Equation 7 may be summarized as shown in Equation 6.
[0175] The scan order proposed in present disclosure may be
described by schemes described in Equations 2 to 7 above. When the
scan order is described by the scheme described above as such, the
scan order may be determined by the following components.
[0176] 1) Recursive splitting of coefficient group in each depth
(i.e., a depth of 0 or more)
[0177] 2) Determining scan order for split coefficient groups
[0178] 3) Determining scan order for transform coefficients of leaf
coefficient group
[0179] When the components are determined, the scan order may be
determined by using Equations 2 to 7. Accordingly, the present
disclosure proposes a method for configuring an appropriate scan
order by determining the components.
[0180] A set including all scan order matrixes which are applicable
may be expressed as shown in Equation 8 below.
={S.sub.1, S.sub.2, . . . , S.sub.|.sub.|} [Equation 8]
[0181] Here, represents a set in which all scan order matrixes
applicable to the blocks are collected. In addition, the block may
have various sizes or shapes (e.g., 4.times.4, 4.times.8,
16.times.4, 16.times.16, 32.times.8, etc.). In addition,
S(CG.sup.0(i.sub.0)) derived by Equation 5 described above may be
included as an element of the .
[0182] In an embodiment, the encoder/decoder may select a specific
scan order in the by using information on neighboring blocks of the
current processing block and perform scanning by using the selected
scan order. The information on the neighboring blocks may be, for
example, the number of non-zero coefficients which exist in a left
block or an upper block or the location of the last non-zero
coefficient. Further, the scan order of the current processing
block may be determined by using information on a block coded
immediately before the current processing block.
[0183] In an embodiment, the encoder/decoder may determine (or
apply) the scan order according the size or shape of the current
processing block. For example, the encoder/decoder may apply
S.sub.i.di-elect cons. to a block having a 4.times.8 size and apply
S.sub.j.di-elect cons. (i.noteq.j) to a block having an 8.times.16
size.
[0184] In an embodiment, the encoder/decoder may select and apply a
specific scan order among sets (i.e., a subset of ) of scan orders
applicable to a block having a specific size or shape. In this
case, the encoder may signal to the decoder an index for a scan
order selected in units of a sequence, a picture, a slice, a CTU, a
coding block, or a transform block (or transform unit).
[0185] When the entropy coding is performed with respect to the
transform coefficient, the reverse scan order may be applied in
addition to the forward scan order. The reverse scan order may be
calculated by using Equation 9 below.
.tau. B ( CG d ( i 0 , i 1 , , i d ) ) = P .tau. ( CG d ( i 0 , i 1
, , i d ) ) = [ 0 0 1 0 1 0 1 0 0 ] .tau. ( CG d ( i 0 , i 1 , , i
d ) ) S B ( CG d ( i 0 , i 1 , , i d ) ) = .tau. B ( CG d ( i 0 , i
1 , , i d ) ) + 1 V ( CG d ( i 0 , i 1 , , i d ) ) , when CG d ( i
0 , i 1 , , i d ) = leaf CG , otherwise , S B ( CG d ( i 0 , i 1 ,
, i d ) ) = [ S B ( CG d + 1 ( i 0 , i 1 , , i d , N ) ) S B ( CG d
+ 1 ( i 0 , i 1 , , i d , N - 1 ) ) S B ( CG d + 1 ( i 0 , i 1 , ,
i d , 1 ) ) ] = [ 0 0 1 0 1 0 1 0 0 ] [ S ( CG d + 1 ( i 0 , i 1 ,
, i d , 1 ) ) S ( CG d + 1 ( i 0 , i 1 , , i d , 2 ) ) S ( CG d + 1
( i 0 , i 1 , , i d , N ) ) ] , where N = number of CGs in CG d ( i
0 , i 1 , , i d ) and d .gtoreq. 0 [ Equation 9 ] ##EQU00006##
[0186] Here, P represents a permutation matrix in which only an
anti-diagonal component has a value of 1. The reverse scan order to
the forward scan order may be derived by using the permutation
matrix.
EMBODIMENT 2
[0187] In an embodiment of the present disclosure, the
encoder/decoder may determine the scan order for respective
coefficients in the coefficient group based on the size or shape of
the coefficient group. That is, the encoder/decoder may determine
the scan order of the coefficients in the coefficient group of
Equation 2 described above according to the size or shape of the
block.
[0188] FIGS. 12 and 13 are diagrams illustrating a scan order
depending on a location of a transform coefficient in a block
according to an embodiment of the present disclosure.
[0189] Referring to FIG. 12, the encoder/decoder may scan
coefficients in the order in which the d value increases according
to the diagonal scan order. Here, the d represents a distance of
the corresponding coefficient based on an upper left coefficient.
The encoder/decoder may scan coefficients at locations having the
same d value from a lower left side to an upper right side.
[0190] Here, the d value may be determined as d=dx+dy and as
illustrated in FIG. 12(b), dx and dy represent a horizontal
increment (or horizontal coordinate) and a vertical increment (or
vertical coordinate), respectively.
[0191] As described above, the encoder/decoder may apply the
reverse scan order to performing the entropy coding for the
transform coefficients. In this case, a coefficient in which the d
value to a coefficient in which the d value is 0 may be scanned and
scanned from the upper right side to the lower left side reversely
to an arrow direction illustrated in FIG. 12(a). In present
disclosure, the forward scan order is primarily described, but in
performing the entropy coding, the encoder/decoder may follow the
reverse scan order or the forward scan order.
[0192] The location having the same d value may correspond to
locations of coefficients having an equal phase in terms of the
frequency. Accordingly, the encoder/decoder may assign a random
order to coefficients at locations having the same d value. For
example, the encoder/decoder may scan line locations in which the d
value of FIG. 12(a) is 3 in the order of [4 1], [3 2], [2 3], and
[1 4] (each location is expressed by the row vector), [1 4], [2 3],
[3 2], and [4 1], or [2 3], [3 2], [1 4], and [4 1].
[0193] Further, the encoder/decoder may be configured to scan each
anti-diagonal line from the right side to the left side as
illustrated in FIG. 13, unlike the example of FIG. 12(a).
[0194] Table 1 below shows one example of a pseudo code for
determining the diagonal scan order.
TABLE-US-00001 TABLE 1 [ scan_order, scan_pos ] = find_scan_order (
height, width ) scan_idx = 1; for d = 0 : ( ( height - 1 ) + (
width - 1 ) ) sypos = d; if (sypos .gtoreq. height) sypos = height
- 1; end sxpos = d - sypos; while ( sxpos < width and sypos
.gtoreq. 0) scan_order ( sypos + 1, sxpos + 1 ) = scan_idx;
scan_pos ( scan_idx, : ) = [ ( sypos + 1 ) ( sxpos + 1 ) ];
scan_idx = scan_idx + 1; sypos = sypos - 1; sxpos = sxpos + 1; end
end
[0195] Referring to Table 1, the encoder/decoder may determine the
scan order by allocating the scan index from a coefficient at a
lower-leftmost location to a coefficient at an upper rightmost
location while increasing the d value by 1 from 0. Here, sypos and
sxpos represent parameters representing values acquired by
subtracting 1 from the row index and the column index,
respectively. That is, it is assumed that sypos and sxpos start
from 0.
[0196] In Table 1, it is assumed that a diagonal line specified by
the d value is scanned from the lower left side, but a code may be
configured so as to scan the diagonal line from the upper right
side as described in FIG. 13.
[0197] In Table 1 above, `while loop` is to determine a parameter
(or matrix) representing the scan information according to the scan
order with respect to the diagonal line specified by the d value.
The parameter may be a parameter (scan_order) representing the scan
order or a parameter (scan_pos) representing the scan position. A
scan index allocated to each position (i.e., a component of the
scan_order matrix) of the block is stored in the scan_order matrix.
In addition, in the scan_pos matrix, each row index corresponds to
the scan index and a coefficient position in the block is stored in
each row in the form of the row vector.
[0198] When the scan order is allocated to the position of the
coefficient by the existing method (e.g., HEVC), a horizontal or
vertical frequency increase rate may not be effectively reflected
when the current processing block is the non-square block.
[0199] Specifically, when separable transform is applied to the
non-square block, a length of a transform basis vector for a
vertical direction and the length of the transform basis vector for
a horizontal direction may be different from each other. For
example, when the current processing block is a block having a
2N.times.N size, DCT having a 2N.times.2N size may be applied to
the vertical direction and DCT having an N.times.N size may be
applied to the horizontal direction. In this case, whenever a
vertical coordinate of the coefficient increases by 1, the
frequency increases by 1/(2N)*.pi. in a height direction, while
whenever a horizontal coordinate of the coefficient increases by 1,
the frequency may increase in a width direction.
[0200] In describing the method proposed by present disclosure, it
is primarily described that an M.times.N block is a block having a
height of M and a width of N, but the present disclosure is not
limited thereto and the M.times.N block may represent a block
having the width and the height which are M and N,
respectively.
[0201] In the case of the non-square block, when the scan order is
similarly applied to the position of the coefficient by the
existing method, the frequency increase rate may not be effectively
reflected in the horizontal direction or the vertical direction. As
a result, scanning from a high-frequency component to a
low-frequency component may not be normally performed and
compression performance of the image may be degraded.
[0202] Accordingly, the present disclosure proposes a method for
allocating the scan order to the coefficients at respective
positions in the non-square block in order to solve such a problem
and effectively reflect the frequency increase rate in the
horizontal direction or the vertical direction.
[0203] The scan order may be acquired by using the methods
described in FIG. 12 and Table 1 above even with respect to the
non-square block. For example, when the current processing block is
the block having the 4.times.8 size, the height and the width may
be configured to 4 and 8, respectively as input parameters of the
function and when the function of Table 1 is performed, the
corresponding scan order may be acquired.
[0204] FIGS. 14 and 15 are diagrams for describing a method for
determining a scan order for coefficients of a non-square block as
an embodiment to which the present disclosure is applied.
[0205] As described above, when the separable transform is applied
to the non-square block, the length of the transform basis vector
for the vertical direction (i.e., row direction) and the length of
the transform basis vector for the horizontal direction (i.e.,
column direction) may be different from each other.
[0206] Referring to FIG. 14, it is assumed that the current
processing block is the block having the 4.times.8 size. In this
case, DCT having the 4.times.4 size may be applied to the vertical
direction and DCT having the 8.times.8 size may be applied to the
horizontal direction. When it is assumed that the transform
coefficient represents the low-frequency component as the transform
coefficient is positioned at the upper left end and represents the
high-frequency component as the transform coefficient is positioned
at the lower right end, in the case of the 4.times.8 block of FIG.
14(a), a vertical-direction (or height-direction) frequency
increment may be twice larger than the horizontal-direction (or
width-direction) frequency increment.
[0207] Accordingly, dx and dy depending on the position of the
transform coefficient may be configured as illustrated in FIG.
14(b). In addition, the encoder/decoder may configure the scan
order in the order in which the d value increases in units of the
coefficients of the positions having the same d (in this case,
d=dx+dy) value. In the case of the reverse scan order, the
encoder/decoder may configure the scan order in the order in which
the d value decreases.
[0208] In the present disclosure, the scan line may refer to the
coefficients at the positions having the same d value. That is, the
coefficients having the same d value may be included in the same
scan line.
[0209] The random scan order may be allocated among the
coefficients which belong to the same scan line. When the
coefficients are scanned from the left side to the right side, the
scan index may be allocated to the coefficients at the respective
positions as illustrated in FIG. 14(c).
[0210] Referring to FIG. 15, it is assumed that the current
processing block is the block having the 8.times.4 size. Except
that the horizontal frequency increment and the vertical frequency
increment are different from each other, the encoder/decoder may
determine the scan order by configuring the d value by a method
which is the same as the aforementioned method.
[0211] Table 2 below shows one example of the pseudo code to
acquire the scan order by applying the methods described in FIGS.
14 and 15.
TABLE-US-00002 TABLE 2 [ scan_order, scan_pos ] = find_scan_order (
height, width ) if ( height .gtoreq. width ) sh = 1; sw = round (
height / width ); else sh = round ( width / height ); sw = 1; end
scan_idx = 1; for d = 0 : ( (height - 1 ) sh + ( width - 1) sw )
sypos = floor ( d / sh ); if ( sypos .gtoreq. height) sypos =
height - 1; end sxpos = d - ( sypos sh ); rem = sxpos % sw; if (
rem != 0) sypos = sypos - ( sw - rem ); sxpos = sxpos + ( sw - rem
); end sxpos = floor ( sxpos / sw ); while ( sxpos < width and
sypos .gtoreq. 0 ) scan_order ( sypos + 1, sxpos + 1 ) = scan_idx;
scan_pos ( scan_idx, : ) = [ ( sypos + 1 ) ( sxpos + 1 ) ]; if ( sh
.gtoreq. sw ) sypos = sypos - 1; sxpos = sxpos + sh; else sypos =
sypos - sw; sxpos = sxpos + 1; end scan_idx = scan_idx + 1; end
end
[0212] Referring to Table 2, sh is a parameter representing the
vertical increment (i.e., dy) and sw is a parameter representing
the horizontal increment (i.e., dx). Other parameters are the same
as those in Table 1 above. In addition, a floor function returns an
integer value having a maximum size which is equal to or smaller
than a number given as a factor and a round function returns an
integer value acquired by rounding off the number given as the
factor. The encoder/decoder configures the sh value and the sw
value by using a ratio of the width and the height of the current
processing block and allocates the scan index to a coefficient at
the lower-leftmost position to a coefficient at the upper-rightmost
position while increasing the d value by 1 from 0 to determine the
scan order.
[0213] In an embodiment of the present disclosure, the
encoder/decoder may group the coefficients in units of a specific
number of coefficients and then scan the coefficients by applying
various scan orders. This will be described with reference to FIG.
16 below.
[0214] FIGS. 16 and 17 are diagrams for describing a method for
determining a scan order for coefficients of a non-square block in
units of a super-pixel as an embodiment to which the present
disclosure is applied.
[0215] Referring to FIG. 16, it is assumed that the current
processing block is the block having the 4.times.8 size. The
encoder/decoder may split the current processing block in units of
the super-pixel. Here, the super-pixel may represent a set of a
specific number of coefficients (or pixels) and the specific number
may be determined according to the ratio of the width and the
height of the current block. The super-pixel may be referred to as
a subblock, a sub group, a coefficient group, a sub coefficient
group, etc. Since the ratio of the width and the height of the
current block is 2, the super-pixel may be constituted by two
pixels.
[0216] The encoder/decoder may configure the square block with the
super-pixels, determine the scan order in units of the super-pixel
by using the methods described in FIGS. 7 to 13 above, and scan the
coefficients according to a random order in the super-pixel.
[0217] The encoder/decoder may apply the scan order for the square
block having the 4.times.4 size according to the diagonal scan
order in units of the super-pixel as illustrated in FIG. 16 and
apply the scan order from the left side to the right side in each
super-pixel.
[0218] Referring to FIG. 17, it is assumed that the current
processing block is the block having the 8.times.4 size. Similarly,
the encoder/decoder may split the current processing block in units
of the super-pixel. Since the height is twice larger than the
width, the encoder/decoder may configure the super-pixel by
grouping two coefficients in the vertical direction (or height
direction).
[0219] Table 3 below shows one example of the pseudo code to
acquire the scan order by applying the methods described in FIGS.
16 and 17.
TABLE-US-00003 TABLE 3 [ scan_order, scan_pos ] = find_scan_order (
height, width ) if ( height .gtoreq. width ) splen = round ( height
/ width ); norm_length = width; else splen = round ( width / height
); norm_length = height; end scan_idx = 1; for d = 0 : ( (
norm_length - 1) + ( norm_length - 1 ) ) sypos = d; if ( sypos
.gtoreq. norm_length ) sypos = norm_length - 1; end sxpos = d -
sypos; while ( sxpos < norm_length and sypos .gtoreq. 0 ) for i
= 0 : ( splen - 1 ) if ( height .gtoreq. width ) sypos_ex = ( sypos
splen ) + i; sxpos_ex = sxpos; else sypos_ex = sypos; sxpos_ex = (
sxpos splen ) + i; end scan_order ( sypos_ex + 1, sxpos_ex + 1 ) =
scan_idx; scan_pos ( scan_idx, : ) = [ ( sypos_ex + 1 ) ( sxpos_ex
+ 1 ) ]; scan_idx = scan_idx + 1; end sypos = sypos - 1; sxpos =
sxpos + 1; end end
[0220] Referring to Table 3, splen is a parameter representing the
length of the super-pixel. The splen may be determined according to
the width and the height of the current processing block. For
example, when the height is larger than the width, the super-pixel
may be determined as a super-pixel which is long in the vertical
direction and when the width is larger than the height, the
super-pixel may be determined as a super-pixel which is long in the
horizontal direction. In addition, norm_length is a parameter
representing the length of one side for a block (i.e., square
block) configured in units of the super-pixel. In Table 3 above,
`for-loop` in `while loop` allocates the scan index to the
coefficients at respective positions in the super-pixel.
[0221] The encoder/decoder may apply various scan orders in
addition to the scan order. For example, the encoder/decoder may
acquire number information of non-zero coefficients with respect to
the coefficients at the respective positioned by using statistics
of block transform coefficients having specific sizes (e.g.,
4.times.8, 16.times.8, 32.times.32, etc.). In addition, the
encoder/decoder may determine the scan order of coefficients in a
descending order (or ascending order) of the corresponding number
based on the number of acquired non-zero coefficients.
[0222] The encoder/decoder may represent a set of scan orders
applicable to the h.times.w block as shown in Equation 10 below
when the height and the width of CG.sup.d(i.sub.0,i.sub.1, . . .
,i.sub.d) ) are h and w, respectively as shown in Equation 2
described above.
I={.GAMMA..sub.1,.GAMMA..sub.1, . . . ,.GAMMA..sub.|I|} [Equation
10]
[0223] Here, I represents the set of applicable scan orders. In
addition, .GAMMA..sub.i(i=1, . . . ,|I|) may represent the scan
orders and may correspond to the scan orders described in FIGS. 7
to 17 above. .tau.(CG.sup.d(i.sub.0,i.sub.1, . . . ,i.sub.d) of
Equation 2 may satisfy .tau.(CG.sup.d(i.sub.0,i.sub.1, . . .
,i.sub.d)).di-elect cons.I.
EMBODIMENT 3
[0224] In an embodiment of the present disclosure, a method for
determining the scan order of the coefficient group is proposed.
For example, the encoder/decoder may determine the scan order for
four coefficient groups constituting CG.sup.1(1,1) in FIG. 9(c)
above.
[0225] The encoder/decoder may scan the scan groups in the diagonal
scan order as illustrated in FIG. 9(c) above. Further, the
encoder/decoder may apply the scan method described in Examples 1
and 2 above in determining the scan order between the coefficient
groups and apply the scan order having the random order.
[0226] FIG. 18 is a diagram illustrating a method for determining a
scan order for coefficient groups as an embodiment to which the
present disclosure is applied.
[0227] Referring to FIG. 18, the encoder/decoder may be configured
to similarly use the scan order for the coefficient group and the
scan order for the coefficients in the coefficient group or
configured to separately use the respective scan orders.
[0228] As one example, referring to FIG. 18(a), the encoder/decoder
may split the coefficient group into the blocks having the
4.times.2 size, apply the scan order generated by using Table 2
described above between the coefficient groups, and apply the scan
order generated by using Table 1 described above in each
coefficient group.
[0229] As another example, referring to FIG. 18(b), the
encoder/decoder may split the coefficient group into the blocks
having the 2.times.4 size and apply the scan order generated by
using Table 2 described above similarly to the scan order between
the coefficient groups and the scan order between the coefficients
in the coefficient group.
[0230] As yet another example, referring to FIG. 18(c), the
encoder/decoder may split the coefficient group into the blocks
having the 2.times.4 size, apply the scan order generated by using
Table 2 described above between the coefficient groups, and apply
the scan order generated by using Table 3 described above in each
coefficient group.
[0231] FIG. 19 illustrates a method for encoding an image according
to an embodiment of the present disclosure.
[0232] The encoder performs transform and quantization for a
residual signal of a current processing block to generate a
quantized transform block (S1901). Step S1901 may be performed
similarly to steps S501 and S502 described in FIG. 5 above.
[0233] The encoder splits the quantized transform block into a
plurality of coefficient groups (S1902).
[0234] As described above in FIGS. 9 and 10 above, the encoder may
recursively (or hierarchically) split the current processing block
in order to scan the transform coefficient. For example, the
splitting of the quantized transform block into the plurality of
coefficient groups may include hierarchically splitting the
quantized transform block and splitting the quantized transform
block into coefficient groups having a lower depth and the second
scan order may include a scan order among coefficient groups having
respective depths split from the quantized transform block.
[0235] Further, as described in FIGS. 16 and 17 above, the encoder
may group the coefficients in units of a specific number of
coefficients and then scan the coefficients by applying various
scan orders. That is, when the quantized transform block is a
non-square block, the quantized transform block may be split into
coefficient groups constituted by a specific number of coefficients
and the specific number may be determined according to a ratio of a
width and a height of the quantized transform block.
[0236] The encoder determines a first scan order representing the
scan order between the coefficients of the coefficient group
(S1903).
[0237] The encoder may determine the first scan order by applying
the methods described in FIGS. 12 to 18 above. For example, step
S1903 may include determining a distance value of the respective
coefficients of the coefficient group based on an upper left
coefficient of the coefficient group and allocating a scan index to
coefficients having the same distance value according to a
predetermined order while sequentially increasing the distance
value.
[0238] Further, as described in FIGS. 14 and 15 above, the encoder
may allocate the scan order to the coefficients at respective
positions in the non-square block in order to effectively reflect a
frequency increase rate in a horizontal direction or a vertical
direction. For example, the determining of the distance value of
the respective coefficients of the coefficient group may include
determining a horizontal increment representing an increase amount
of a coordinate value in the horizontal direction of each
coefficient and a vertical increment representing the increase
amount of the coordinate value in the vertical direction based on
the ratio of the width and the height of the coefficient group and
the distance value of the respective coefficients may be determined
by using a value acquired by summing up the horizontal increment
and the vertical increment.
[0239] Further, when the width of the coefficient group is larger
than the height, the horizontal increment may be determined as 1
and the vertical increment may be determined as 2 and when the
height of the coefficient group is larger than the width, the
horizontal increment may be determined as 2 and the vertical
increment may be determined as 2.
[0240] The first scan order may be predefined (or configured) by
the encoder and the encoder may transmit the first scan order to
the decoder in units of a picture, a slice, a CTU, a coding unit,
or a transform unit.
[0241] Further, the encoder may determine the second scan order
representing the scan order among the plurality of coefficient
groups. In this case, step S1903 may include determining the second
scan order and the encoder may determine the second scan order by
applying the methods described in FIGS. 12 to 18 above. The second
scan order may be predefined (or configured) by the encoder and the
encoder may transmit the second scan order to the decoder in units
of the picture, the slice, the CTU, the coding unit, or the
transform unit.
[0242] The encoder entropy encodes the coefficients of the
quantized transform block according to the first scan order and the
second scan order representing the scan order among the plurality
of coefficient groups (S1904).
[0243] FIG. 20 illustrates a method for decoding an image according
to an embodiment of the present disclosure.
[0244] The decoder splits a current processing block into a
plurality of coefficient groups (S2001).
[0245] As described above in FIGS. 9 and 10 above, the decoder may
recursively (or hierarchically) split the current processing block
in order to scan the transform coefficient. For example, the
splitting of the current processing block into the plurality of
coefficient groups may include hierarchically splitting the current
processing block and splitting the current processing block into
coefficient groups having a lower depth and the second scan order
may include a scan order among coefficient groups having respective
depths split from the current processing block.
[0246] Further, as described in FIGS. 16 and 17 above, the decoder
may group the coefficients in units of a specific number of
coefficients and then scan the coefficients by applying various
scan orders. That is, when the current processing block is a
non-square block, the current processing block may be split into
coefficient groups constituted by a specific number of coefficients
and the specific number may be determined according to a ratio of a
width and a height of the current processing block.
[0247] The decoder determines a first scan order representing the
scan order between the coefficients of the coefficient group
(S2002).
[0248] The decoder may determine the first scan order by applying
the methods described in FIGS. 12 to 18 above. For example, step
S2002 may include determining a distance value of the respective
coefficients of the coefficient group based on an upper left
coefficient of the coefficient group and allocating a scan index to
coefficients having the same distance value according to a
predetermined order while sequentially increasing the distance
value.
[0249] Further, as described in FIGS. 14 and 15 above, the decoder
may allocate the scan order to the coefficients at respective
positions in the non-square block in order to effectively reflect a
frequency increase rate in a horizontal direction or a vertical
direction. For example, the determining of the distance value of
the respective coefficients of the coefficient group may include
determining a horizontal increment representing an increase amount
of a coordinate value in the horizontal direction of each
coefficient and a vertical increment representing the increase
amount of the coordinate value in the vertical direction based on
the ratio of the width and the height of the coefficient group and
the distance value of the respective coefficients may be determined
by using a value acquired by summing up the horizontal increment
and the vertical increment.
[0250] Further, when the width of the coefficient group is larger
than the height, the horizontal increment may be determined as 1
and the vertical increment may be determined as 2 and when the
height of the coefficient group is larger than the width, the
horizontal increment may be determined as 2 and the vertical
increment may be determined as 2.
[0251] The first scan order may be predefined (or configured) by
the decoder and the decoder may transmit the first scan order to
the decoder in units of a picture, a slice, a CTU, a coding unit,
or a transform unit.
[0252] Further, the decoder may determine the second scan order
representing the scan order among the plurality of coefficient
groups. In this case, step S2002 may include determining the second
scan order and the decoder may determine the second scan order by
applying the methods described in FIGS. 12 to 18 above. The second
scan order may be predefined (or configured) by the decoder and may
be transmitted from the encoder to the decoder in units of a
picture, a slice, a CTU, a coding unit, or a transform unit.
[0253] The decoder entropy decodes a bitstream output from the
encoder to generate a quantized transform coefficient (S2003). Step
S2003 may be performed similarly to step S601 described in FIG. 6
above.
[0254] The decoder arranges the coefficients of the quantized
transform block according to the first scan order and the second
scan order representing the scan order among the plurality of
coefficient groups to generate the quantized transform block of the
current processing block (S2004).
[0255] In addition, the decoder may acquire the transform block by
dequantizing the quantized transform block. A dequantization method
may adopt a known technique and a detailed description thereof will
be omitted. In the image decoding method according to the
embodiment described above, some step may be omitted or added and
the image decoding method is not constrained even in the described
order. Further, steps S2003 and S2004 may be separately performed
or concurrently performed.
[0256] FIG. 21 illustrates a device for decoding an image according
to an embodiment of the present disclosure.
[0257] In FIG. 21, for convenience of description, a coefficient
group splitting unit 2101, a scan order determining unit 2102, a
transform coefficient generating unit 2103, and a transform block
generating unit 2104 are illustrated as separate blocks, but the
coefficient group splitting unit 2101, the scan order determining
unit 2102, the transform coefficient generating unit 2103, and the
transform block generating unit 2104 may be implemented as
components included in the encoder and/or the decoder.
[0258] Referring to FIG. 21, the device for decoding an image
according to the embodiment implements the functions, procedures,
and/or methods proposed in FIGS. 5 to 20 above and further, perform
scaling and transform processes to be described below.
Specifically, the decoding device may be configured to include a
coefficient group splitting unit 2101, a scan order determining
unit 2102, a transform coefficient generating unit 2103, and a
transform block generating unit 2104.
[0259] Detailed components of the device for decoding an image,
which are illustrated in FIG. 21 are just one example and some of
the illustrated detailed components may be included in another
detailed component and together implemented and another component
which is not illustrated may be added and together implemented.
[0260] The coefficient group splitting unit 2101 splits a current
processing block into a plurality of coefficient groups.
[0261] As described above in FIGS. 9 and 10 above, the coefficient
group splitting unit 2101 may recursively (or hierarchically) split
the current processing block in order to scan the transform
coefficient. For example, the coefficient group splitting unit 2101
hierarchically splits the current processing block to split the
current processing block into coefficient groups having a lower
depth and the second scan order may include a scan order among
coefficient groups having respective depths split from the current
processing block.
[0262] Further, as described in FIGS. 16 and 17 above, the
coefficient group splitting unit 2101 may group the coefficients in
units of a specific number of coefficients and then scan the
coefficients by applying various scan orders. That is, when the
current processing block is a non-square block, the current
processing block may be split into coefficient groups constituted
by a specific number of coefficients and the specific number may be
determined according to a ratio of a width and a height of the
current processing block.
[0263] The scan order determining unit 2102 determines a first scan
order representing the scan order between the coefficients of the
coefficient group.
[0264] The scan order determining unit 2102 may determine the first
scan order by applying the methods described in FIGS. 12 to 18
above. For example, the scan order determining unit 2102 may
determine a distance value of the respective coefficients of the
coefficient group based on an upper left coefficient of the
coefficient group and allocate a scan index to coefficients having
the same distance value according to a predetermined order while
sequentially increasing the distance value.
[0265] Further, as described in FIGS. 14 and 15 above, the scan
order determining unit 2103 may allocate the scan order to the
coefficients at respective positions in the non-square block in
order to effectively reflect a frequency increase rate in a
horizontal direction or a vertical direction. For example, the scan
order determining unit 2102 may determine a horizontal increment
representing an increase amount of a coordinate value in the
horizontal direction of each coefficient and a vertical increment
representing the increase amount of the coordinate value in the
vertical direction based on the ratio of the width and the height
of the coefficient group and the distance value of the respective
coefficients may be determined by using a value acquired by summing
up the horizontal increment and the vertical increment.
[0266] Further, when the width of the coefficient group is larger
than the height, the horizontal increment may be determined as 1
and the vertical increment may be determined as 2 and when the
height of the coefficient group is larger than the width, the
horizontal increment may be determined as 2 and the vertical
increment may be determined as 2.
[0267] The first scan order may be predefined (or configured) by
the decoder and the decoder may transmit the first scan order to
the decoder in units of a picture, a slice, a CTU, a coding unit,
or a transform unit.
[0268] Further, the scan order determining unit 2102 may determine
the second scan order representing the scan order among the
plurality of coefficient groups. In other words, the scan order
determining unit 2102 may include determining the second scan order
and the scan order determining unit 2102 may determine the second
scan order by applying the methods described in FIGS. 12 to 18
above. Further, the second scan order may be predefined (or
configured) by the decoder and may be transmitted from the encoder
to the decoder in units of a picture, a slice, a CTU, a coding
unit, or a transform unit.
[0269] The transform coefficient generating unit 2103 entropy
decodes a bitstream output from the encoder to generate a quantized
transform coefficient. In this case, the same method as step S601
described in FIG. 6 above may be applied.
[0270] The transform block generating unit 2104 arranges the
coefficients of the quantized transform block according to the
first scan order and the second scan order representing the scan
order among the plurality of coefficient groups to generate the
quantized transform block of the current processing block.
[0271] In the embodiments described above, the components and the
features of the present disclosure are combined in a predetermined
form. Each component or feature should be considered as an option
unless otherwise expressly stated. Each component or feature may be
implemented not to be associated with other components or features.
Further, the embodiment of the present disclosure may be configured
by associating some components and/or features. The order of the
operations described in the embodiments of the present disclosure
may be changed. Some components or features of any embodiment may
be included in another embodiment or replaced with the component
and the feature corresponding to another embodiment. It is apparent
that the claims that are not expressly cited in the claims are
combined to form an embodiment or be included in a new claim by an
amendment after the application.
[0272] The embodiments of the present disclosure may be implemented
by hardware, firmware, software, or combinations thereof. In the
case of implementation by hardware, according to hardware
implementation, the exemplary embodiment described herein may be
implemented by using one or more application specific integrated
circuits (ASICs), digital signal processors (DSPs), digital signal
processing devices (DSPDs), programmable logic devices (PLDs),
field programmable gate arrays (FPGAs), processors, controllers,
micro-controllers, microprocessors, and the like.
[0273] In the case of implementation by firmware or software, the
embodiment of the present disclosure may be implemented in the form
of a module, a procedure, a function, and the like to perform the
functions or operations described above. A software code may be
stored in the memory and executed by the processor. The memory may
be positioned inside or outside the processor and may transmit and
receive data to/from the processor by already various means.
[0274] It is apparent to those skilled in the art that the present
disclosure may be embodied in other specific forms without
departing from essential characteristics of the present disclosure.
Accordingly, the aforementioned detailed description should not be
construed as restrictive in all terms and should be exemplarily
considered. The scope of the present disclosure should be
determined by rational construing of the appended claims and all
modifications within an equivalent scope of the present disclosure
are included in the scope of the present disclosure.
INDUSTRIAL APPLICABILITY
[0275] Hereinabove, the preferred embodiments of the present
disclosure are disclosed for an illustrative purpose and
hereinafter, modifications, changes, substitutions, or additions of
various other embodiments will be made within the technical spirit
and the technical scope of the present disclosure disclosed in the
appended claims by those skilled in the art.
* * * * *