Комментарии:
One obvious idea for QOI is to use different parameters for images of different sizes (for example the index array length) and store this information in a small header
ОтветитьGreat video! I really learned a lot from it! Thank you for that.
One correction, if I may: in the QOI description you have the same 2-bits TAG (of '1 0') for both QOI_DIFF_SMALL and QOI_DIFF_MED. I think this is incorrect.
kindly explain in detail which software do you use to create such awesome videos. thanks .
ОтветитьThis could have been a lot simpler if you'd just written negative numbers as negative numbers instead of wrapping them
ОтветитьMost software I have seen uses a delta filter always on TrueColor input. On screenshots or hi-color 555 computer graphics manually selecting None in FastStone Viewer yields a smaller file size. PNG is also beaten by deflated TIFF if the filter can't be deselected. You can see what the delta filter outputs by selecting compression:None. The edges of artificial shapes bleed with a delta filter, and filtering a low bit depth source fills the bottom bits. There is no 6-bit depth in PNG; pixels get padded out ot 8 bits.
PNG lacks a channel decorrelation transform like YCoCg for near-gray parts.
PNG is indeed a bit slow to encode. It's annoying when games only offer this format with high compression selected for temporary screenshots. Even with no compression it is a bit slow which I think comes down to calculating checksums for the data chunks.
I don't see a use case for QOI. Do we need to capture huge amounts of simple screenshots with repeating pixels? Perhaps to illustrate a software manual? As other simple algorythms, it can't compress photgraphic data at all.
Wait until the end of the universe to save a damn image. JXL and AVIF have entered the chat.
Did the inventor of QOI test recording the difference of point (x,y) with the average of three neighboring points: Round((x-1,y-1)+(x-1,y)+(x,y-1)/3)?
ОтветитьRealistically, how often would the QOI_DIFF_SMALL tag meet its conditions? Could something else use that tag ID for better purposes?
Also, for extremely large images that can't fully be stored in memory, is there any form of compression that doesn't require decompressing the entire image (extremely slow) and throwing away the excess you don't want to display? This one doesn't seem to ever reach a state that doesn't rely on previous states.
so inspiring and all but still not knowing why we cant take pictures on png or tif, or raw or what ever losless picture format, but yeah, android still trash.
ОтветитьThe QOI algorithm gives me an idea for another algorithm that might also be fairly fast but also decent, since the fact that this algorithm works has some implications about the way pixels tend to be organized in images. Will have to see if I can ever find time between my other ideas.
Ответитьthe part 'heuristic for filtering ' is weird, why would you try every combination? if you can try it row by row? I don't see a heuristic here. it's just a local optimum
Ответитьfilter AVG is lossy. 3/2 =1
ОтветитьThanks!
ОтветитьThe QOI format is quite interesting. However, it can be made even smaller, by using Huffman coding for the QOI instructions, which will only marginally increase the runtime, but will quite drastically decrease the file size, in some cases compressing even better than PNG.
ОтветитьWrote a PNG decoder for a class.
This is an excellent overview video... but damn, when you go deeper it's just so complicated...
Also, try to write one in Java. It sucks.
Can't believe that Java does not have unsigned ints.
Thanks!
ОтветитьInteresting
ОтветитьHonestly, this video made me appreciate PNG more than anything.
Ответитьso QOI was invented by accident
ОтветитьIt seems like QOI + lz4/lzo would be the theoretical ideal image compression method, for speed and size, since PNG + lz4 provides no benefit for size but QOI by itself loses in average compression ratio
ОтветитьI mean, if you really need to save images faster than png, there's always bmp lmao
ОтветитьAbsolutely fantastic, very interesting and easy to understand
ОтветитьThis video needs a new title. No one who isn't already knowledgeable with how PNG/compression works is going to understand this. Just look at the comments, and the discussion people are having
ОтветитьI have to say, this is a really fantastic video. I'm studying on image signals, ur video helps me understand too much! thanks.
ОтветитьI’d love to see a video that talks about how some PDFs can actually increase in filesize when zipped
ОтветитьSuper interesting and very informative!
ОтветитьThey missed the opportunity to call UP "SUP" in PNGs.
Ответитьso QOI is basically the "trow an hasp table to every problem" kind of soluton
ОтветитьAs a computational linguistics student. I come across by pair encoding for generating vocabs used for tokenizers. I have only worked with convolutional neural networks that work with images once.
Image space is vast, the 64pixel example with 3x8 bit has more potential images than atoms in the universe. But the vast majority of those images are horrible noise. Only a tiny subset are actual images.
That's why you can compress in the first place.
.PNG is horrible for high frequency photos or renders. It shouldn't be used as an intermediate for frame sequences. .exr does it better.
Very nice.
Of course there should be easy to construct counter-examples where QOI is really bad at compression.
I am just thinking about a pixel chess-pattern with a slight gradient but ensured high differences in green values.
Quick suggestion about the QOI image format, since I can't think of any other place for discussion.
Since color indexing of consecutive values is technically possible, why not start the run-length encoding from n=3 instead of the current n=2 as in the spec? We just need to change the run length bias from -1 to -2. Am I missing something or is there an intention behind this feature?
Png is more better than jpeg xl. Just got 45% more smaller but sacrifice 150x more slower...
ОтветитьIm genuenly surprised that png doesnt use color transformation like jpeg. Even lossless id image that hsv color space would be inherently more redundant in common human images than rgb.
ОтветитьThose dam Russians, first Tetris, now this XD great video!
Ответитьyour video is linked on the wikipedia page of the QOI format :D
ОтветитьVery inspirating, thank you.
How is it with parallelization of PNG/QOI? It seems that the processing must be done sequentially and because of that no parallel processing (especially encoding) is possible, am I right?
Can you make a video about chroma subsampling? I'm trying to understand the different values 4:4:4, 4:2:0 etc.
ОтветитьClassic case of "Keep It Simple, Stupid"
ОтветитьAfter filtering, how does the PNG decoder knows the difference between say positif 255 and negative 1?
Ответитьset the speed to 1.25x, to watch a 3blue1 brown video
ОтветитьThat's a good example of the difference between computer science and software engineering. PNG is an academics solution. QOI is an engineers solution.
ОтветитьQOI's creator is my hero for fitting the specification onto a single page.
Ответитьpng is hella smart
Ответить