CSE679: JPEG: JPEG Goals JPEG Compression Steps Lab
CSE679: JPEG: JPEG Goals JPEG Compression Steps Lab
JPEG Goals
JPEG: Joint Photographic Experts Group Applications can tune compression level Should have tractable computational complexity Should be possible to implement in hardware Compression scheme should be independent of data
format
Picture Preparation
JPEG specifies a very general image model. A source image consists of at least one and at most
255 components.
Components may be assigned to the three colors RGB, YIQ or YUV signals.
Each pixel is represented by p (8, or 12) bits. If p = 8, each pixel is an integer in the range of 0 to 255.
each entry in the transform matrix, F[x, y] to generate 64 new samples F[0,0] is the mean of all 64 values in the matrix, known as the DC coefficient, others are called as the AC coefficients.
Quantization
FQ[x, y] = Integer Round (F(x, y)/Q(x, y)) Different coefficients are treated separately based on
quantization table.
An Example of Quantization
Entropy Encoding
Vectoring o 2-D matrix should represent the values in the form of a single-dimension vector. o Scan in zig-zag order
Differential Encoding
The DC coefficient varies only slowly from one block
to the next.
encoded.
12, 1, -2, 0, 1
Run-length Encoding
The AC coefficients are encoded in the form of a
(0,6) (0,7) (0,3) (0,3) (0,3) (0,2) (0,2) (0,2) (0,2) (0,0)
Huffman Encoding
Use variable length codes Most frequently used symbols coded with fewest bits The intermediate symbol sequence
Huffman code
Summary
DC coefficient
Input: 12, 13, 11, 11, 10, Differential encode: 12, 1, -1,-1,-2 The intermediate symbol sequence: (sss, value) Huffman code:
P160 (b) sss P160 (a) value Example: 12 = (4, 12) = (1011100)
AC coefficient
Input: 6, 7, 3, 0, 0, 3, 3, 2, 0, 0, 0 Run-length encoding: (0,6) (0,7) (0,3) (2,3) (0,3) (0,2) (0,0) The intermediate symbol sequence: (skip, sss) (value) Huffman code:
P163-164 (skip, sss) P160(a) value Example: (0, 6) = (0, 3) (6) = (100110)
Lab Project
Objective: be familiar with JPEG Description
Input: an original 8 8 block original data (the value of each pixel is in the range of [0, 255]) (given by the Instructor) Steps:
Shifted to the range of [-128, 127] FDCT (round: 1.6 2, -1.6 -2, 1.5 2, 1.1 1) ( = 3.141592654) Quantized with the given quantization table (see the given example) (round) (round: 1.6 2, -1.6 -2, 1.5 2, 1.1 1) Zig-zag coded Converted to the intermediate symbol sequence with run-length encoding on AC coefficients Encoded to bit sequence with Huffman encoding (based on the given default Huffman codewords tables) compressed data The compression ratio = original data size (i.e., 64 8)/compressed data size
Output: print out all the results of the above steps into different files (The names and formats of output files should follow the files put on the web.)
Lab Project
Team: 2 or 3 students What should be turned in (via email to TA, subject: 679 project)?
Put all codes into one file (source_jpeg.c (.cpp) with clear comments (softcopy)
Make sure TA can understand, compile, and run your codes on UNIX machines. All the codes should be in C or C++.
A report including a summary (2 page # 5) and the source code file, and result files (hardcopy or softcopy either in PDF) Correctness: TA will use his own data to test your codes. Clearness: TA will check whether your code and report are understandable. Fairness:
Students in the same teams get the same scores. No copy! All students involved in copy will get ZERO.
162 147
136 148
148 167
156 155
156 140
123 136
148 155
167 155
140 155
162 152
136 140
144 147
147 136
140 147
162 162
147 136
24 40
34 19 8 20
27 17
20 39 28 27
8 28
28 12 -5 8
39 32
20 27 39 27
35 24
12 27 34 24
34 27
8 12 16 19
24 8
19 8 12 19
44 32
34 34 19 8
9
11 13 15 17
11
13 15 17 19
13
15 17 19 21
15
17 19 21 23
17
19 21 23 25
19
21 23 25 27
21
23 25 27 29
23
25 27 29 31
4
-2 -1 0 0 1 0
-5
-3 0 1 0 0 0
3
0 1 1 -1 0 0
-1
0 -1 0 0 0 0
-1
-1 0 -1 0 0 0
1
0 0 1 0 0 0
1
-1 0 1 0 0 0
0
0 0 1 0 0 0
Conclusion
JPEG goals JPEG compression steps Picture Preparation
Component, block, and pixel
Picture Processing
Forward DCT
Quantization
Different coefficients are treated separately.
Entropy coding
Lab