The Unreasonable Effectiveness of JPEG: A Signal Processing Approach
Visit https://brilliant.org/Reducible/ to get started learning STEM for free, and the first 200 people will get 20% off their annual premium subscription. Chapters: 00:00 Introducing JPEG and RGB Representation 2:15 Lossy Compression 3:41 What information can we get rid of? 4:36 Introducing YCbCr 6:10 Chroma subsampling/downsampling 8:10 Images represented as signals 9:52 Introducing the Discrete Cosine Transform (DCT) 11:32 Sampling cosine waves 12:43 Playing around with the DCT 17:38 Mathematically defining the DCT 21:02 The Inverse DCT 22:45 The 2D DCT 23:49 Visualizing the 2D DCT 24:35 Introducing Energy Compaction 26:05 Brilliant Sponsorship 27:23 Building an image from the 2D DCT 28:20 Quantization 30:23 Run-length/Huffman Encoding within JPEG 32:56 How JPEG fits into the big picture of data compression The JPEG algorithm is rather complex and in this video, we break down the core parts of the algorithm, specifically color spaces, YCbCr, chroma subsampling, the discrete cosine transform, quantization, and lossless encoding. The majority of the focus is on the mathematical and signal processing insights that lead to advancements in image compression and the big themes in compression as a whole that we can take away from it. Animations created jointly by Nipun Ramakrishnan and Jesús Rascón. References/Additional Resources: https://www.red.com/red-101/video-chroma-subsampling - great resource on different types of chroma subsampling http://weitz.de/dct/ - play around with the DCT https://www.cse.iitd.ac.in/~pkalra/col783-2017/DCT-History.pdf - paper referenced in video http://www.ee.ic.ac.uk/hp/staff/dmb/courses/DSPDF/00300_Transforms.pdf - a more rigorous signal processing approach to the DCT https://www.impulseadventure.com/photo/jpeg-huffman-coding.html - great landing point for learning more about how huffman codes work in the context of JPEG https://www.youtube.com/watch?v=CPT4FSkFUgs&list=PLpsTn9TA_Q8VMDyOPrDKmSJYt1DLgDZU4&ab_channel=DanielHarding - a great playlist I recommend that dives deep into actually implementing a JPEG decoder This video wouldn't be possible without the open source library manim created by 3blue1brown and maintained by Manim Community. The Manim Community Developers. (2021). Manim – Mathematical Animation Framework (Version v0.11.0) [Computer software]. https://www.manim.community/ Here is link to the repository that contains the code used to generate the animations in this video: https://github.com/nipunramk/Reducible All music in the video is from Aakash Gandhi