JPEG Hao Jiang Computer Science Department Sept. 27, 2007 What is JPEG?  JPEG: Joint Photographic Expert Group — an international standard in 1992.  Works.

Download Report

Transcript JPEG Hao Jiang Computer Science Department Sept. 27, 2007 What is JPEG?  JPEG: Joint Photographic Expert Group — an international standard in 1992.  Works.

JPEG
Hao Jiang
Computer Science Department
Sept. 27, 2007
What is JPEG?
 JPEG: Joint Photographic Expert Group —
an international standard in 1992.
 Works for both color and grayscale images.
 Targets at natural images.
 Applications include satellite, medical
imaging, general photography ...
The System of JPEG
8x8 block
DCT
Quantization
Quantization
tables
Header
Tables
DC
Entropy
coding
Data
Difference coding
Run length coding
AC
Color Space Conversion
 JPEG first converts RGB to YUV or YCrCb.
 Y is the luminance component (brightness).
Y = 0.299 R + 0.587 G + 0.144 B
 U and V are color components
U=B–Y
V=R-Y
Y
U
V
Color Subsampling
 JPEG down-samples the “color channels” by half
and partitions images into 8x8 small blocks.
Y1
Y2
Y3
Y4
Intensity Component
U
V
Color components
DCT (Discrete Cosine Transform)
 DCT converts each image 8x8 block into another
8x8 block.
 The energy in DCT domain is concentrated into
very few coefficients.
Image
block
DCT
DCT
coefficients
10
20
6
DCT Coefficients
Grayscale Level
8
4
2
0
8
6
8
6
4
row
2
0
0
0
0
2
-10
0
4
2
4
2
10
col
4
row
6
6
8
Image block
8
DCT Coefficients
col
Definition of DCT
A linear transfrom F(u,v) = x=07 y=0 7 h(u,v,x,y) f(x,y)
where h(u,v,x,y) is the linear weighting function.
DCT:
The inverse transform IDCT recovers the original data from DCT
coefficients.
 For DCT, h(u,v,x,y) can be decomposed into g(u,x)
* g(v,y)
F(u,v) = x=07 y=0 7 h(u,v,x,y) f(x,y)
= y=07 g(v,y) [x=0 7 g(u,x) f(x,y)]
followed
by
Horizontal 1D DCT
Vertical 1D DCT
Given u and v, h can be viewed as an image of x and y.
u
v
DCT coefficients are projection of image block into these patterns.
Quantization
 Recall that quantization can be used to collapse
the input into smaller number of values.
 For DCT coefficients, we want to quantize
different coefficients in different details:
 DC coefficient should have the most quantization
levels.
 Quantization for AC coefficients can be coarser and
coarser as the frequency increases.
Y quantization table
U, V quantization table
17
18
24
47
99
99
99
Quantization:
18
21
26
66
99
99
99
24
26
56
99
99
99
99
99
66
99
99
99
99
99
99
99
99
99
99
99
99
99 99
99 99
99 99
99 99
99 99
99 99
99 99
Fq(u,v) = round(F(u,v)/Q(u,v))
De-quantization: Fr(u,v) = Fq(u,v) * Q(u,v)
99
99
99
99
99
99
99
quantization
dequantization
The Quality Factor
 For most current JPEG encoders, we can choose a
quality factor from 1 to 100.
 The method of controlling the compression quality
is by scaling the quantization table. For example,
Fq(u,v) = round(F(u,v)* (quality) / Q(u,v))
DC Coefficients Encoding
D(m,n)
D(m,n+1)
D(m,n+2)
D(m,n+3)
We compute the difference of each two successive quantized
coefficients
D(m,n) – 0 =>
D(m,n+1) – D(m,n) =>
D(m,n+2) – D(m,n+1) =>
D(m,n+3) – D(m,n+2) =>
d(m,n)
d(m,n+1)
d(m,n+2)
d(m,n+3)
DC Coefficients Encoding
 Then, we encode each DC difference value by
(size, coefficient)
1 -1, 1
2 -3, -2, 2, 3
3 -7 …-4, 4, …,7
4
…
11 -2047,…,-1024,1024,…,2047
7 will be coded as (3, 7)
• The first number 3 is Huffman
coded.
• The second 7 is encoded as
1’s complement 111.
(-7 will be 000)
The Size Table
Can we encode the dc difference value directly?
AC Coefficients Encoding
 AC coefficients are not differentially encoded.
 Instead, we first do run-length coding.
The run length code:
(0,11), (0,-12), (1, -12),
(0, 10), (0,16), (0, 0)
Zig-zag scanning
Indicates all are 0
from here
AC Coefficients Encoding (cont)
 For AC coefficients, we now have a bunch of
symbols like
(zero-run length, value)
 The “value” has large number of possible values
in [-1023, 1023]. Direct Huffman coding is
infeasible.
 Instead, we generate symbols like
( zero-run length, size, value)
Huffman coded
1’s complement
JPEG File Format
Start of image
Tables
Tables
Header
Header
Block
Frame
Scan
Segment
Block
End of image
Scan
Restart
Block
…
Segment
Scan
….
JPEG Extensions
 The basic mode of JPEG supports sequential
coding (the order is from top to bottom and left to
right).
 JPEG extensions support progressive modes:
 Spectrum selection.
 Successive approximation.
 Hierarchical mode.
JPEG 2000
 JPEG 2000 is a new standard based on wavelet
transform.
 JPEG2000 does not partition an image into small
blocks.
 Wavelet decomposes the whole image into
different “bands” and then encodes the coefficients
in different bands smartly.
LL
LH
50
100
150
200
250
300
HL
350
400
450
HH
500
50
100
150
200
250
300
350
400
450
500
The wavelet decomposition of Lena image using Haar Wavelet.