Everything You Need to Know About JPEG - Episode 9: Progressive JPEGs

In this series you will learn all of the in-depth details of the complex and sophisticated JPEG image compression format
In this episode, we cover Progressive JPGs - an alternative to baseline decoding that allows for progressively higher quality images as decoding continues
Jump into the playlist here: • Everything You Need to...
The code for this series can be found here: github.com/dannye/jed
The example jpeg files used throughout this series can be downloaded here: www.mediafire.com/file/x3o1ic...

Пікірлер: 18

  • @ethamin_
    @ethamin_8 ай бұрын

    Please keep this series alive. We're all waiting for the encoder

  • @MrAlex403
    @MrAlex4032 ай бұрын

    the best explanation of progressive jpeg. thank a lot!

  • @singha360
    @singha3602 жыл бұрын

    Omg I am glad to see you uploading again and continuing this tutorial 😊. A much welcomed holiday present. That being said, have a happy holiday and new year!

  • @danielharding3688

    @danielharding3688

    2 жыл бұрын

    Thank you! You too!

  • @dsfs17987
    @dsfs179875 ай бұрын

    other parts so far were reasonable, but this refinement thing made me think - screw it, I'll just wait for that jpeg to load over my 33.6k modem 😅

  • @tootaashraf1
    @tootaashraf12 жыл бұрын

    YES!!! after 2 years.. it's here!

  • @ashwinmurali4345
    @ashwinmurali43452 жыл бұрын

    Thanks a ton!

  • @jeang5611
    @jeang56112 жыл бұрын

    Ohhh mon Dieu You are the Man This is fully a great gift for Christmas. This is a LOT to take but God bless you mom ami. Have a wonderful Chritmas with your family. And a Big Question Will it be a tutorial for Jpeg 2000? I know this is a lot to ask but let us know. I don't know about the other viewers. But I'm sure they might be curious about it Anyhow thank you very much again and remember WHO IS DA MAN? YOU ARE !!!!

  • @danielharding3688

    @danielharding3688

    2 жыл бұрын

    I have looked a bit into the JPEG 2000 format and it seems much more complicated. I would still have to learn it all before I could make any tutorials on it and I'm not sure if it would really be worth it given how unpopular the format is (relatively speaking) but I'm not ruling it out!

  • @jeang5611

    @jeang5611

    2 жыл бұрын

    Thank you for the response. I know it was a one in a thousand chance but if you do post a tutorial on it, it will mean the world to me and a few others I am sure. Keep up the good work.

  • @donaastor
    @donaastor Жыл бұрын

    At 59:32, why didn't you add coeff to the component coefficient, but copy?

  • @danielharding3688

    @danielharding3688

    Жыл бұрын

    Because even though this is during a "refinement" scan, this is essentially the "first visit" to that particular coefficient, so there is nothing to add. The value in `coeff` is the value of that coefficient (so far).

  • @donaastor
    @donaastor Жыл бұрын

    At 19:13, for the special symbol 0xF0, do we skip 15 zeros (reading a bit for each non-zero value) and then skip the current position or we skip 16 zeros (reading a bit for each non-zero value) and then move on to the next symbol?

  • @danielharding3688

    @danielharding3688

    Жыл бұрын

    You sort of described the same thing in two slightly different ways, but both are correct. At 57:58, the do-while loop that starts on line 1006 will read a bit for every non-zero coefficient and keep a tally of every zero coefficient (by decrementing `numZeroes`). It only breaks out of that do-while loop once yet another zero is encountered *after* `numZeroes` has already reached 0 (aka, after skipping 15 zeroes and encountering a 16th zero). This final zero coefficient which triggered the `break` will either be filled with `coeff` (if `coeffLength` was 1) or it will be skipped and left as 0 (in the case of special symbol 0xF0) thus skipping a total of 16 zeroes before moving on to the next symbol.

  • @danielharding3688

    @danielharding3688

    Жыл бұрын

    I guess your second explanation is a bit more accurate, because it's important to remember to read additional bits for all the non-zero coefficients that are between the 15th and 16th zeroes.

  • @maxwellmbugua6146
    @maxwellmbugua61462 жыл бұрын

    Hi,, I have a question about special symbols 0xf0,, are we skipping 16 zeroes or 15 zeroes at AC refinement,, because it seems that you do not change the number of zeroes which is 15

  • @danielharding3688

    @danielharding3688

    2 жыл бұрын

    Special symbol 0xF0 does still skip 16 zeroes just like in baseline decoding. The reason we didn't change the `numZeroes` variable this time was because the break happens before the decrement at 59:08, so we break from the loop on the 16th zero (the zero that would have caused `numZeroes` to be decremented to -1).

  • @muragekibicho1184
    @muragekibicho11842 жыл бұрын

    YEsss!!