The Unreasonable Effectiveness of JPEG: A Signal Processing Approach

  Рет қаралды 1,057,047

Reducible

Reducible

Күн бұрын

Visit 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:
www.red.com/red-101/video-chr... - great resource on different types of chroma subsampling
weitz.de/dct/ - play around with the DCT
www.cse.iitd.ac.in/~pkalra/co... - paper referenced in video
www.ee.ic.ac.uk/hp/staff/dmb/c... - a more rigorous signal processing approach to the DCT
www.impulseadventure.com/phot... - great landing point for learning more about how huffman codes work in the context of JPEG
• Everything You Need to... - 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]. www.manim.community/
Here is link to the repository that contains the code used to generate the animations in this video: github.com/nipunramk/Reducible
All music in the video is from Aakash Gandhi

Пікірлер: 884
@vylbird8014
@vylbird8014 2 жыл бұрын
Little secret of JPEG: It actually supports two entropy coders. Huffman coding, and arithmetic coding. The arithmetic coding is superior in performance, and yet almost never used and supported by almost no software. The reason for this is historical: Back when JPEG was new, arithmetic coding was subject to multiple patents. Mostly held by IBM, but not all. That made it very difficult for any program to use arithmetic coding legally, so all the early JPEG implementations were huffman-only. Once the patents expired, it became the classic chicken-and-egg problem: No-one wants to make software that saves jpegs with arithmetic coding because all of the existing software wouldn't be able to display them, and no-one has a reason to make their software able to display arithmetic-coded JPEG because there are none in use to display. So even up to today, we are all using JPEG in the low-performance mode. If it were practical to use the arithmetic option, JPEG files could be about 10% smaller while still maintaining exactly the same quality.
@Reducible
@Reducible 2 жыл бұрын
Yes, this is a great tidbit of history that most people don't know! Fun fact you may already know: in video codecs such as H.264 and H.265, where compression ratios are really important in terms of saving bandwidth, most entropy based encoding is based on context-adaptive binary arithmetic coding (CABAC). The improvements of arithmetic coding vs Huffman coding were enough of an incentive for most developers of video codecs to implement this logic in both the encoding and decoding side.
@vylbird8014
@vylbird8014 2 жыл бұрын
@pyropulse Looks like one to me. A circular dependency: No one will use a feature that has no software support, and no-one will make software to support a feature that is never used. The problem cannot be solved because of a condition that can only be altered by solving the problem.
@Bobbias
@Bobbias 2 жыл бұрын
Sounds like someone working on serenity os has a chance to do things their way and support that format just because.
@clown134
@clown134 2 жыл бұрын
@@Bobbias is that the temple on thing
@Bobbias
@Bobbias 2 жыл бұрын
@@clown134 no, serenity is a different project to temple os. If temple os feels like an 80s os, serenity feels like a 90s os. It's basically a Unix style system with a windows 95 style desktop environment
@slippybean900
@slippybean900 2 жыл бұрын
going to save more images as JPEGs out of sheer respect from now on
@Reducible
@Reducible 2 жыл бұрын
Ha, this cracked me up! Great comment!
@DavidEngelen
@DavidEngelen 2 жыл бұрын
No NFT is save
@leif1075
@leif1075 2 жыл бұрын
@@Reducible qhy is only one coefficient in dct output if most of the cosine wave values were positive? Since the others were too low? But youd think some would still be positive and just lower positive value, no?
@vylbird8014
@vylbird8014 2 жыл бұрын
It should probably be phased out, really. JPEG's compression was cutting-edge when it came out, in 1992. There have many several attempt to replace it since then with more sophisticated compression that can achieve higher quality for the same size, but they've all failed because they can't compete with JPEG's universal support. The latest is WebP, which is making some progress because it has the giant of Google to promote it. JPEG2000 was a big flop. Though amusingly to me, every web browser today /does/ support it sort-of... not as a JPEG2000 file, but because it's one of the image compression methods supported within PDF files.
@a2e5
@a2e5 2 жыл бұрын
All/most of the image formats that followed are based on the basic idea of stacking waves, and even more so for the video formats. So in a way you are already paying homage to this genius design by watching this video! The JPEG people didn’t stop working on pictures after good ol’ JPEG either. Their latest JPEG XL comes with tricks to make it much more efficient in terms of beauty/fidelity-per-bit. It is able to go toe to toe with video-based image formats like HEIC, AV1F in terms of efficiency while staying easy on the CPU to encode and decode.
@akarshkumar0101
@akarshkumar0101 2 жыл бұрын
I did a degree in electrical/computer engineering. This is BY FAR one of the best explanations I've seen about this. Doing the math is nothing compared to the understanding this video gives you. Thank you!
@onradioactivewaves
@onradioactivewaves 2 жыл бұрын
I agree. One thing I would have added though, is why we used sine instead of cosine. But perhaps if this is of interest to you, then you already know the answer why😉
@JivanPal
@JivanPal 2 жыл бұрын
If you've ever studied differential equations or Fourier series in general as a mathematics student, then the concepts also make a lot more sense intuitively than I expect they might as an EE student alone. 3Blue1Brown has some great videos on this.
@2hedz77
@2hedz77 2 жыл бұрын
totally agree. it's the visualization of behavior as parameters are varied that is so powerful. great job @Reducible!
@manamsetty2664
@manamsetty2664 2 жыл бұрын
That's great where did you do your degree I'm assuming you are indian
@sid2112
@sid2112 2 жыл бұрын
As a network engineer, thank you for not being a code monkey. Welcome to the Machine, priest. You're one of us!
@vcubingx
@vcubingx 2 жыл бұрын
This was *really* good. Well paced, well explained with great visuals. I have a much greater appreciation for what JPEGs do now. I'd love to see a video outlining some of the other various transformations used in signal processing or some more neat applications of them!
@Reducible
@Reducible 2 жыл бұрын
Yup, there are quite a few on the list, but no promises on when I'll get to them :)
@harryguanous7198
@harryguanous7198 2 жыл бұрын
I didn't expect you to be here lol, might join one day making the same videos on this platform?
@vcubingx
@vcubingx 2 жыл бұрын
@@harryguanous7198 Welp, I am a cs major after all :p
@jalbEgo
@jalbEgo 2 жыл бұрын
@@vcubingx your name and profile picture are amazing
@leif1075
@leif1075 2 жыл бұрын
@@Reducible At 14:56 where isbthe corresponding negative DCt value?? Ther shoukd be one if there is a positive one..
@oresteszoupanos
@oresteszoupanos 2 жыл бұрын
Other interesting compression algorithms for people to look up: - Opus, the successor to MP3/AAC that powers audio on the internet these days. - QOI, an amazingly fast and simple to understand image format (1-page specification!) - JPEG XL, the cutting-edge expansion of the original JPEG format shown in this brilliant video :-)
@WASDsweden
@WASDsweden 2 жыл бұрын
XL sounds like the file sizes will be bigger
@Dorumin
@Dorumin 2 жыл бұрын
Opus is only used for voice streaming or voice compression, it's definitely not an mp3 killer
@vylbird8014
@vylbird8014 2 жыл бұрын
@@Dorumin It could be though. Opus performs really well at any bitrate, though it does excel especially at the low end. Outperforming MP3 isn't that impressive a performance though. There are lots of codecs that can make that claim. MP3 is just /old/.
@mr_biscuit
@mr_biscuit 2 жыл бұрын
@@Dorumin KZfaq also uses opus for many videos
@nickwallette6201
@nickwallette6201 2 жыл бұрын
I'm going to have to agree with the discussion above. Opus isn't a successor to MP3/AAC. AAC is reasonably considered a successor to MP3, but Opus is more of a peer to AAC.
@damnsamnoble7737
@damnsamnoble7737 2 жыл бұрын
This channel has some of the most well produced content right now
@markhaus
@markhaus 2 жыл бұрын
JPEG really was massively ahead of it’s time and accelerated the practical use of images in computing by years
@kodirovsshik
@kodirovsshik 2 жыл бұрын
I always knew jpeg has got some interesting maths going behind the scenes, but man, this is like super impressive. And it actually sounds like a great coding challenge to create an actually functioning jpeg encoder/decoder Btw I can't admit the quality of the work done to bring this video to us, I just love it. Thank you a lot for what you are doing, your videos are fascinating as always
@LiborTinka
@LiborTinka 2 жыл бұрын
I remember coding the DCT/IDCT functions in Borland Pascal two decades ago... it was a day of work - not full JPEG scheme, just playing with the coefficient (e.g. erasing them a seeing what it does) but quite some fun
@VivekYadav-ds8oz
@VivekYadav-ds8oz 2 жыл бұрын
I imagine it's not a good coding challenge, since there's not much elegancy you can bring here, often coding math-related stuff is tiresome and ugly, unless you use languages like Julia.
@kodirovsshik
@kodirovsshik 2 жыл бұрын
@@VivekYadav-ds8oz Well although this might actually be very true for someone, I personally feel kind of ok with coding applied math stuff. After all, coding a JPEG encoder/decoder is not only about coding a math part of it, it's also about engineering a software because that's what we, as programmers, do
@kuma9239
@kuma9239 2 жыл бұрын
@@kodirovsshik this. There's the beauty of engineering a complex function into code that is readable, easy to grasp, maintainable and performant.
@kodirovsshik
@kodirovsshik 2 жыл бұрын
@@kuma9239 true!!
@panchociarer
@panchociarer 2 жыл бұрын
in one of my university courses we made a few image filters using the SIMD instructions set in assembler. now i understand the horror of the professor when someone said they wanted to make a jpeg encoder in ASM
@GalBlanga
@GalBlanga 2 жыл бұрын
This topic has been honestly stuck in my head for so long, but I found no content satisfying my need to learn it until now!! this has been greatly explained, awesome job!
@mbmadden77
@mbmadden77 2 жыл бұрын
It is no exaggeration to say that the quality of this video's presentation of the subject is beyond superb. Utterly fascinating and presented with outstanding clarity and insight. Left me wanting more, more, more of this content, please! Thank you for the effort and care you put into its creation.
@xnagytibor
@xnagytibor 2 жыл бұрын
32:14 There's also the progressive stuff like spectral selection and successive approximation that also break every assumption of your logic and makes you question why you even want to write your own JPEG decoder.
@SokarEntertainment
@SokarEntertainment 2 жыл бұрын
I would just like to take the time and say; Thank you for making these. As a mathematical engineer, I really appreciate these type of videos, which go into something that is extremely interesting, but I don't have time to explore myself.
@jonipaliares5475
@jonipaliares5475 2 жыл бұрын
I've never thought image compression could be this interesting! Thank you for this incredibly well explained video!
@travisbosco8469
@travisbosco8469 2 жыл бұрын
What an outstanding video - the graphics, explanation, pacing, everything. Thanks for creating it.
@willemvdk4886
@willemvdk4886 Жыл бұрын
The production value of these video's are out of this world. Mad respect. Contents and visuals on point!
@aayush_dutt
@aayush_dutt 2 жыл бұрын
I added this to watch later and really wanted to watch it after work. But I was hooked, I couldn't stop the video even if I wanted to. Awesome video and amazing engagement!
@jawadtahmeed9854
@jawadtahmeed9854 Жыл бұрын
I've been lurking around DFT/FFT explanations for the past couple of days, both in your channel and 3b1b including some others, I understood many underlined concepts but why cosine functions itself pull out the contribution info out of the input was mystery, this video solved it for me on that vector similarity based on dot product part. I was blown away by the simplicity of the concept. Next I plan to check more on orthogonality. Great video as well, mate! My utmost respect!
@kleinesfilmroellchen
@kleinesfilmroellchen 2 жыл бұрын
Topics like this tickle my brain in just the right way. Fantastic video, we need more DSP content like this.
@xeostube
@xeostube 2 жыл бұрын
This is a excellent video, I really appreciate your putting so much effort into both covering the actual math and also giving a visual run-through of it's implications. So often this stuff is explained with a page of equations and maybe single figure of featuring the DCT 2D basis functions. This was way better than that! This is a great example of how a well-done video with good illustrations and animations can explain concepts way better than a text book can, though at the cost of making it much harder to skim ahead when part of the information presented was already understood.
@monjurmorshed9129
@monjurmorshed9129 2 жыл бұрын
For people like you and your work, it is worth spending time on KZfaq. Thank you, keep up the good work.
@morezco
@morezco 2 жыл бұрын
This channel is the best I have found this year, and I think it will remain the best find for the rest of it.
@cdjwmusic
@cdjwmusic 2 жыл бұрын
Not only the content of the video is interesting and well explained, but also the animations are incredible. I dream of one day being 10% as good as you are with Manim.
@CDBelfer4
@CDBelfer4 2 жыл бұрын
You sir, just earned a new sub, absolutely brilliant content quality! I'm loving how many new channels are adapting the 3blue1brown style of teaching, I honestly find these videos so clear I'm learning faster than I've ever before!
@Retrosen
@Retrosen 2 жыл бұрын
The amount of work behind this video is astonishing, 1000/10
@bars2051
@bars2051 2 жыл бұрын
What I find incredible about this excellent video is that it helped me understand something I never expected to find here. I’m currently in an Electrical Engineering program, and for months, I’ve had a very limited understanding of the Fourier series concept we covered a few months back. The way you explained the DCT so clearly and concisely somehow crystallized the concept in my head. I deeply envy your ability to keep an audience so engaged with all this math I previously thought boring. Thank you so much for the well done video!
@hexeddecimals
@hexeddecimals 2 жыл бұрын
I don't like JPEGs because of their lossiness, but I will admit there's some cool math behind them!
@susmitislam1910
@susmitislam1910 2 жыл бұрын
So to summarize: you don't like JPEG the image format, but you do like JPEG the algorithm :p
@hexeddecimals
@hexeddecimals 2 жыл бұрын
@@susmitislam1910 yes haha
@CrosSeaX
@CrosSeaX 2 жыл бұрын
Theoretically, you have to give up some efficiency in order to compress any sort of information. The difficult part is about by keeping the data as original or comprehensible as possible, how much would you give up. But yeah, nowadays we have bigger and cheaper digital storage, so the problem of jpg is gradually getting noticed.
@lawrencedoliveiro9104
@lawrencedoliveiro9104 2 жыл бұрын
There are better alternatives to DCT available nowadays. For example, JPEG2000 uses wavelets: when you push the compression too far on these, instead of getting blocky like DCT, they become fuzzy, which is generally less objectionable.
@maxheim3802
@maxheim3802 2 жыл бұрын
There is nothing wrong With Lossy compression, i dont understand whats your problem, everything has Advantages and disadvantages
@veggiet2009
@veggiet2009 2 жыл бұрын
I appreciate how this video gives great length to the broad overview of compression, and then very quickly runs through specific details about the jpeg system... Very meta
@ritwikgupta7540
@ritwikgupta7540 Жыл бұрын
Such an amazing explanation!! as someone who started to watch the video without any information about the topic, but still understood everything in detail, I must say this was a great video
@birendrakathariya3517
@birendrakathariya3517 2 жыл бұрын
This video is by far one of the best explained video on JEPEG compression. Not only this video presents intuitive explanation but also puts the right amount of mathematical details for any brain to comprehend. Kudos!!
@luckyowl9593
@luckyowl9593 2 жыл бұрын
Love your videos. Especially loved the graph theory related ones. Keep up the good work 👍.
@michaelrcolton
@michaelrcolton 2 жыл бұрын
Thank you for this! I've watched and read many explanations of JPEG and they all talk about the DCT like that is the part that makes JPEGs smaller. Your video finally made it clear that the DCT doesn't reduce the size of the data, but does put it in a form where the less important information is easier to identify and remove, and why its okay to get rid of the high frequency content. The explanation is great and the visualizations were clear and helped a lot. Excellent work!
@Axman6
@Axman6 2 жыл бұрын
This is a great introduction, really nice work. I’d never thought about the DCT as being a vector dot product but that absolutely makes sense.
@knight024
@knight024 2 жыл бұрын
This is hands down the best video on DCT on the internet, period. Well done
@DevashishGuptaOfficial
@DevashishGuptaOfficial 2 жыл бұрын
The level of elegance and attention to detail in the presentation was absolutely amazing 😭
@ChrisOffner
@ChrisOffner 2 жыл бұрын
This is such an incredibly well-structured, well-paced, and well-presented lecture, I'm in awe. Thank you so much for this, you outdid yourself here!
@98perova
@98perova 2 жыл бұрын
Great Video! It's amazing how much thought is put into something we use daily without even realizing it! and how intresting the math and logic behind can be.
@DevashishGuptaOfficial
@DevashishGuptaOfficial 2 жыл бұрын
This video left me with no choice other than turning on all notifications for your channel! ❤️
@lachlanperrier2851
@lachlanperrier2851 2 жыл бұрын
I love how I see a vid from this channel and I like the vid before even watching it. Keep up the great work!
@SohailKhan-zb5td
@SohailKhan-zb5td Жыл бұрын
your explanation and quality of video is so amazing. It really reflects the amount of hardwork you have committed for this cause. Thanks a lot for your service to humanity,
@PeteTheBrazilian
@PeteTheBrazilian 2 жыл бұрын
You, sir, managed to hit all your goals, in my humble opinion: a very clear explanation of a fairly complex algorithmic pipeline, very visual examples/demos, and inspiring awe of how people can be immensely creative to problem-solve. 11/10, GREAT video!
@yabbaso
@yabbaso 2 жыл бұрын
Incredible descriptions. Really wish I had these during my masters. Fantastic work, thank you!
@Adecker100
@Adecker100 2 жыл бұрын
This is, by far, the most visually appealing video I think I've ever seen!
@nilsp9426
@nilsp9426 2 жыл бұрын
Great video quality! Crisp explanations and beautifully crafted visuals, that are exactly on point.
@robodiam707
@robodiam707 3 ай бұрын
BEST VIDEO EVER! So clearly explained,so clear audio, perfect slides. 🎉😊
@tortellofer
@tortellofer Жыл бұрын
This is one of the best videos I have seen about how the Fourier Transform is used in JPG compression . The amount of effort, time and money put into it is incredible. Thank you for sharing.
@Luca-zq5lo
@Luca-zq5lo 2 жыл бұрын
That's just beautiful and fascinating! Thanks for making this video, you did an excellent job in balancing complexity of the topic and simplicity of explanation! I think a sequel on PNG would be grand! 😉
@daberth1262
@daberth1262 2 жыл бұрын
I am working on medical digital image processing and this is by far one of the best videos on this topic!!!!
@slimhazard
@slimhazard 2 жыл бұрын
This reminds me of the way it felt when I first saw 3blue1brown‘s video showing how the Fourier transform works. I *got it*. It was miraculous. Reducible, you‘re up there with the best of them.
@1KneeDown
@1KneeDown 2 жыл бұрын
Thank you for such wonderful visuals. Even though I honestly don't get all these concepts at all, I find it super interesting to watch these concepts explained visually. I hope this video will be a vital complement to my upcoming signal processing course.
@PolychoronProductions
@PolychoronProductions 2 жыл бұрын
Always happy to see a new reducible video in my recommended
@etis398
@etis398 2 жыл бұрын
This video is gold. Thank you for having posted this!
@abellefi1
@abellefi1 2 жыл бұрын
wow that was awesome to watch. When you said I could go deeper I was like (you don't say!) You're awesome bro keep it up
@keithwallace5277
@keithwallace5277 2 жыл бұрын
I don't even remember subscribing to your channel, but I have a feeling it's great
@victordebone7150
@victordebone7150 2 жыл бұрын
As a designer, I very often go through these concepts and therms without the understanding of what they actually mean. And I have to say it, this video has already helped me in an artistic experiment that translates image to audio. Beautiful work, thank you!
@kartikeyporwal3539
@kartikeyporwal3539 2 жыл бұрын
So much information. Feeling overwhelmed, will tune in after having some food.
@nigeltan7766
@nigeltan7766 2 жыл бұрын
Thank you for the amazing video. Truly astounding visualisations that teach a complex topic with such effectiveness
@richardwatson5437
@richardwatson5437 2 жыл бұрын
This was amazing, thank you for the work that went into making this.
@dcterr1
@dcterr1 Күн бұрын
You clarified a lot of the math involved in JPEG compression so that now I think I understand it, or at least the most important parts. Great explanation!
@MrHichammohsen1
@MrHichammohsen1 2 жыл бұрын
My mind was blown! Thank you for this amazing presentation. Definitely a subscriber!!!!!!
@VinayAggarwal
@VinayAggarwal 2 жыл бұрын
This visual explanation is done brilliantly. 👏
@Darkknight512
@Darkknight512 2 жыл бұрын
This is a great explanation, we actually implemented a simplified image decompressor with an image format based on JPEG but without 2D downsampling and without huffman decoding on an FPGA in undergrad.
@insomnia20422
@insomnia20422 2 жыл бұрын
This video must have taken a very long long long long long time. Thanks so much! Fantastic educational content!
@ceremonious_houseplant
@ceremonious_houseplant 2 жыл бұрын
This is hands down the best explanation of JPEG I’ve ever seen.
@RavenLuni
@RavenLuni 2 жыл бұрын
Perception is such a massively important field in IT. This is why they teach cognitive psychology as part of a software engineering degree (or at least they did when I studied).
@tylisirn
@tylisirn 2 жыл бұрын
It depends on what exactly you're majoring in. Computer science and software engineering are vast fields. I touched on those things because I liked doing usability stuff, but I could just as easily have avoided if I hadn't.
@alfredowaltergutierrezmald834
@alfredowaltergutierrezmald834 9 ай бұрын
Thank you brother, this is the best explanation I have encountered about this subject in the whole internet. You are the best!
@noegogniat1548
@noegogniat1548 2 жыл бұрын
What a beautiful explanation of the JPEG compression algorithm! Very understandable and somewhat easy to remember ^^
@nicholasleong4768
@nicholasleong4768 2 жыл бұрын
One of the best visual explanation for JPEG, can't wait for the h264 video :)
@grabmy
@grabmy 2 жыл бұрын
Wow, very well explained video ! This is brilliant ! Please keep it up!
@jogloran
@jogloran 2 жыл бұрын
Your FFT video was incredible! Can’t wait to watch this one too.
@ModernDayGeeks
@ModernDayGeeks 2 жыл бұрын
I definitely didn't come across this video at 4AM wondering of what my image file's features are. Awesome video!
@sandman.38
@sandman.38 2 жыл бұрын
Great video, I learned about and experimented with F.T. and Z transform in my last semester of ECE, so this was right up memory lane haha
@Android480
@Android480 2 жыл бұрын
When people ask if a computer science degree makes any sense in the modern world I should point them to this video. I don’t have a degree myself and work in web development, and I never ever come across a problem as localized and deep as this. Makes me think about going back to school honestly. The hardest problems I need to solve, while definitely difficult, is always about managing lots of data, managing lots of network failures, managing large code bases, managing race conditions and synchronization issues, it’s all just trying to solve these large, messy code management problems. No doubt, there are thousands of people in web development working on really deep problems like this, but they’re all working for the big 5 and making large sums of money for it. Most developers in my field just don’t need to interact with code as a mathematical problem. The math has been solved, the tools have been built, and we need to figure out how to use them as best we can. It’s definitely a different job entirely.
@bestgun9994
@bestgun9994 2 жыл бұрын
It's literally the most employee degree, currently.
@Rockyzach88
@Rockyzach88 2 жыл бұрын
Most of the things people interact with nowadays during their typical day is brought to you by electrical engineering and computer science. The fact that people take this for granted is a compliment to the fields, albeit can be frustrating at times. This also applies to many other fields of science, including chemistry, biology, math, physics, and all fields composed of those base sciences. Just think about the things you use, own, and touch, all created because of material science bred from those sciences.
@mykytahordia
@mykytahordia 2 жыл бұрын
it was a pleasure to consume this information. thanks!
@alengm
@alengm 2 жыл бұрын
The quantization table idea is really neat!
@nadavshemesh1231
@nadavshemesh1231 2 жыл бұрын
Best explanation and visualization i could hope for, thank you!
@MrJonsi7777
@MrJonsi7777 2 жыл бұрын
Amazing video. Very well explained and beautifully animated. Thank you for all your effort
@redoni3429
@redoni3429 2 жыл бұрын
It is incredible how complex and thought through technology is that we use without thinking about it. This video Really makes you appreciate the hard work and genius ideas that have been put into what we use today. It always amazes me to understand and learn how things work. Thank you for explaining it.
@McLucaas99
@McLucaas99 2 жыл бұрын
I learned a lot, thank you very much for making this. It was a very pleasend watch
@felipec
@felipec 2 жыл бұрын
I've been working with multimedia encoders and decoders for most of my professional life, and I've watched many videos that try to explain what is going on behind the scenes. This is the first video I've seen that touches important technical details like chroma subsampling 4:2:0, which is literally the second thing any decoding software like FFmpeg will report to you, right after the encoder (e.g. H.264). Good job.
@jpierce2l33t
@jpierce2l33t 2 жыл бұрын
Not even done with the video yet, but just had to stop and say...WOW, dude!! To say that you took a complex topic and broke it down into understandable pieces is a sheer understatement!! I've looked at this stuff before, and quickly went on to something else, discarding it as 'too difficult' or 'too boring and not worth the mental investment' 🤣🤣. But I do, however, have interest in fields where this type of knowledge is greatly beneficial...and your explanations, the animations, just everything..great stuff and I appreciate this so much!! I'm about to watch all of your videos, and I'm excited to see you have one on FFT..as I've always avoided it and it's complexity like the plague!! 🤣 Anyways...THANK YOU SO MUCH!!!
@dijkstra4678
@dijkstra4678 Жыл бұрын
A few months ago I had a go at reading the spec and trying to build a decoder for JPEG images but there were so many layers, I was confused in which steps the huffman encoding was happening and the order of things just became skewed with HOW things were happening, what was happening was clear enough. Thanks to that little explanation you did there at the end I understand now that no one man save mythic beasts is able to do all that by themselves.
@MindGameArcade
@MindGameArcade 2 жыл бұрын
Amazing content my friend, see you at 1 million subs, but take your time & don't burn yourself out!
@ankushtagore4299
@ankushtagore4299 2 жыл бұрын
I admire your thinking patterns and hard work you do to make these videos. I don't think you have any competition on KZfaq.
@f2yd
@f2yd 2 жыл бұрын
This was an insanely good explanation! Thank you!
@carocardozo1507
@carocardozo1507 2 жыл бұрын
This is extremly amazing! I loved the technology, the maths, the cleverness, the explanation. This one of the best ways I have invest my time in weeks. Thank you for this video!!
@goop_lord
@goop_lord 2 жыл бұрын
I'm running this video back just to make sure I understood. Amazing content.
@songhiengvan
@songhiengvan 2 жыл бұрын
Finally new vid! Keep up the good work
@fern3436
@fern3436 2 жыл бұрын
Awesome video. The visuals for the DCT were beautiful. I wish my professors had visuals that nice to make the math more interesting!
@elenfoiro78
@elenfoiro78 Жыл бұрын
Just the best explanation of JPEG I've seen. Thanks.
@malcolmjay1660
@malcolmjay1660 2 жыл бұрын
I did a degree in Electrical Engineering but I do software engineering and this video is awesome! I love the visualizations and the explanations of signal processing concepts. If they taught signal processing like this in school I would've been MUCH more interested! Really well done!
@pranayjain7548
@pranayjain7548 2 жыл бұрын
Love the signal processing based explanation
@burnfire4617
@burnfire4617 2 жыл бұрын
Great video, I never took the time to understand the jpeg algorithm but this video really explains it efficiently, with relevant illustrations. Well done ! The only remark I would make is about the curve you plot on the frequency coefficients (when you explain the DCT). I think it kills the idea that it is a discrete sequence of coefficients. The interpolating values have absolutely no meaning, whereas the curve on the left (the signal) is relevant because it represents the "real" signal that was sampled.
@Reducible
@Reducible 2 жыл бұрын
Yeah, very good point! Now that I think about it, you are right. I think I wanted some visual symmetry when I made it, but truth be told, it serves no purpose. Sometimes, when you are so deep into a project, you can forget how something so superficial can possibly lead to some confusion. Thanks for the feedback!
@Uroc327
@Uroc327 2 жыл бұрын
It's not only a discrete sequence (as the sequence of samples would be), but it's still discrete when you consider the extension to continuous signals. On the time domain you can interpolate using the cosines. Thus, on the left side I think the continuous line is helpful. In the frequency domain, you would still see discrete delta impulses, because the dct requires (assumes) your signal to be periodic. Other than that, great video! Thanks
@hetsmiecht1029
@hetsmiecht1029 2 жыл бұрын
@@Reducible I think the continuous line does serve some purpose. It makes it easier to understand why the discrete values are the way they are when you slowly shift the frequency between integers.
@milanstevic8424
@milanstevic8424 2 жыл бұрын
Though the interpolating values have no meaning, they serve as a reminder that cosines are in fact, continuous and not discrete. Also the signal transformation is better to visualize and understand with this in mind. This is ultimately what the step of quantization gets rid of, as it samples this continuous interval back to discrete space. In my mind it was definitely not in vain to have it included and visualized.
@ratlinggull2223
@ratlinggull2223 2 жыл бұрын
@@Reducible I think one problem is that it's a bit hard to spot the actual coefficient points because they're the same colour as the curve, which is why making the curve less bright is a valid solution.
@3thanguy7
@3thanguy7 2 жыл бұрын
this was a fascinating video, I feel like I understand a lot more of how jpg actually operates now. it does beg the question of how lossy video compression *actually* works, that might have to be another rabbit hole I go down
@teaman7v
@teaman7v 2 жыл бұрын
Your videos are really great. Your delivery is quite simple to 3blue1brown. I mean that as a complement. You take time to explain things very clearly, your cadence is rhythmic, and your voice is pleasing to the ears.
@Sliceoflie
@Sliceoflie 2 жыл бұрын
Had a course in signals and systems where we learned Fourier transforms. Decided to try using a 2D FFT transform of an image, then essentially cropping or removing high frequency components, then doing an inverse FFT to make a very crude image compression algorithm. It still achieved a filesize reduction to about 20-30% of the original before obvious artifacts became visible. Not bad for not doing any block operations or other data compression. Got real interesting applying matrix operations to create filters like blur, sharpen, edge detection, and color shifting.
@HuntersHunter
@HuntersHunter 2 жыл бұрын
You pretty much taught the entire signal processing class I took in college in 30 minutes. Bravo.
@22222Sandman22222
@22222Sandman22222 2 жыл бұрын
I took a picture on the lowest quality setting on a PowerShot in, like, 2009, zoomed it in and saw those DCT 2D patterns. I knew they were there due to the compression but I had no clue about the technology. Great video! (to watch at 6AM while having insomnia)
@yensteel
@yensteel Ай бұрын
There’s a brilliant video by “Reducible” about the concept of signal processing and jpegs. It’s totally worth watching!
@98danielray
@98danielray 2 жыл бұрын
amazing. thank you for taking the time
How PNG Works: Compromising Speed for Quality
32:00
Reducible
Рет қаралды 623 М.
Wavelets: a mathematical microscope
34:29
Artem Kirsanov
Рет қаралды 590 М.
Каха с волосами
01:00
К-Media
Рет қаралды 4,7 МЛН
ШЕЛБИЛАР | bayGUYS
24:45
bayGUYS
Рет қаралды 382 М.
Colourspaces (JPEG Pt0)- Computerphile
7:31
Computerphile
Рет қаралды 241 М.
How AI Learns Concepts
14:22
Art of the Problem
Рет қаралды 167 М.
But what are Hamming codes? The origin of error correction
20:05
3Blue1Brown
Рет қаралды 2,3 МЛН
How are Images Compressed?  [46MB ↘↘ 4.07MB] JPEG In Depth
18:47
Branch Education
Рет қаралды 3,4 МЛН
How Computers Draw Weird Shapes (Marching Squares)
28:00
Reducible
Рет қаралды 405 М.
The Man Who Revolutionized Computer Science With Math
7:50
Quanta Magazine
Рет қаралды 2,7 МЛН
КАК УСТРОЕН JPEG?
22:57
Alek OS
Рет қаралды 39 М.