GROUP PROJECT—JPEG Implementation
The goal of this project is to implement the lossy compression part of the JPEG algorithm.
Implement and apply the following simplified JPEG algorithm for two images in
Project_Code_Images.zip. All of the following techniques are covered by Chapter 8 & 9.
Step I: Compression
1. Convert RGB components to YCbCr components (you can use Matlab function
rgb2ycbcr() or HW2.).
2. Perform chroma subsampling 4:2:0 on color components (you can use HW2).
3. Apply 2D DCT transform (for one block size: N = M = 8) on Y, Cb, and Cr
components (refer to dctbasis.m in Project_Code_Images.zip)
4. Apply quantization using quantization tables (Table 9.1 and Table 9.2 of the
Chap9 slide) for Luminance and Chrominance components respectively. (i.e.,
remove AC components–check Chap. 9 slide or textbook.)
Step II: Decompression
1. Dequantize the DCT coefficients.
2. Implement and apply the 2D IDCT to the dequantized DCT coefficients.
3. Convert YCbCr components to RGB model (Use your HW2 or ycbcr2rgb()).
Step III: Outputs
• Save the outputs in .png
Step IV: Error Computation
1. Compute the pixel-wise error (difference) between the original frame and output
frame and display the error using imagesc() or (any other way you can do with
2. Compute the Peak Signal-to-Noise Ratio (I is the original frame and I’ is the
I x y I x y
( , ) ‘( , )
PSNR 255 20 *log =
Step V: Group Report
• Show and output values of the first 8×8 block of the input and output pictures for
each stage at both Step I and II; you have to show how the values of the 8×8 block
are changed according to different stages.
• Include input (two different input pictures from Project_Code_Images.zip) and
output pictures for each stage at both Step I and II. So, you need to generate your
intermediate results at each stage.
• Discuss your observations of the results at each stage at Step I and II; discuss
comparisons between the original image and your final output image.
• Show and discuss how the output images look different
• Create a table including all error values (Step IV) for two images. Discuss the
• Lastly, your report cover (the first page) should also include a) Names of group
members and b) responsibilities/ contributions of group members.
You should submit the following materials for the grading. The user should be provided
an option of inputting images to your program. Include everything in a zip file and the
filename of the zip file should include last names of all team members.
• Source code
• A group report
• All output files in png (for each of the two images (tulip and alu), generate two