JPEG XL

Info

rules 57
github 35276
reddit 647

JPEG XL

tools 4225
website 1655
adoption 20712
image-compression-forum 0

General chat

welcome 3810
introduce-yourself 291
color 1414
photography 3435
other-codecs 23765
on-topic 24923
off-topic 22701

Voice Channels

General 2147

Archived

bot-spam 4380

on-topic

Whatever else

_wb_
2021-12-24 06:10:03
If you don't care about density, maybe โ€” cheapest jxl should be cheaper than jpeg
diskorduser
2021-12-24 09:11:48
Anyone here uses flatpak gimp? How to install jxl plugin on it?
novomesk
diskorduser Anyone here uses flatpak gimp? How to install jxl plugin on it?
2021-12-27 11:54:46
I don't know if it is possible, I never tried external plug-ins with flatpak builds. But you can try flatpak from GIMP 2.99.x which should have my JXL plugin (it is different to the plug-in for GIMP 2.10): https://flathub.org/beta-repo/appstream/org.gimp.GIMP.flatpakref https://nightly.gnome.org/repo/appstream/org.gimp.GIMP.flatpakref
2021-12-28 12:08:13
If someone wish to test GIMP 2.99.9 for Windows, to test JXL import/export and to provide feedback (it is better to get feedback sooner (before release) rather than later (after release)). The installer can be downloaded from Job artifacts (The artifacts will be removed in 6 days): https://gitlab.gnome.org/GNOME/gimp/-/jobs/1694716
spider-mario
2021-12-28 06:00:48
https://youtu.be/aVwxzDHniEw that intro animation ๐Ÿ˜ณ
diskorduser
2021-12-28 06:57:19
๐Ÿ˜
Deleted User
novomesk If someone wish to test GIMP 2.99.9 for Windows, to test JXL import/export and to provide feedback (it is better to get feedback sooner (before release) rather than later (after release)). The installer can be downloaded from Job artifacts (The artifacts will be removed in 6 days): https://gitlab.gnome.org/GNOME/gimp/-/jobs/1694716
2021-12-30 12:10:40
It automatically promotes imported JXL images (created with fjxl) to 32 Bit floats despite this option being disabled.
novomesk
It automatically promotes imported JXL images (created with fjxl) to 32 Bit floats despite this option being disabled.
2021-12-30 11:49:43
I heard that libjxl uses float internally so 32bit float precision is how the images get decoded. Beside using more memory, I think there is no other problem. And with older versions of libjxl, import with integer precision gave visually different results sometimes. So import in 32bit float was chosen in the past because it worked the best at that time.
Deleted User
novomesk I heard that libjxl uses float internally so 32bit float precision is how the images get decoded. Beside using more memory, I think there is no other problem. And with older versions of libjxl, import with integer precision gave visually different results sometimes. So import in 32bit float was chosen in the past because it worked the best at that time.
2021-12-30 01:46:51
It's a bit annoying (and confusing) for lossless images though. There should also be no visual difference between version otherwise it wouldn't really be lossless.
novomesk
It's a bit annoying (and confusing) for lossless images though. There should also be no visual difference between version otherwise it wouldn't really be lossless.
2021-12-30 02:20:02
OK, thanks for the feedback!
Scope
2021-12-30 04:03:33
https://www.reddit.com/r/programming/comments/rrsnbt/study_developers_spend_almost_2_days_a_week_just/
diskorduser
2021-12-31 06:14:01
why does jxl have banding? both png and jxl are 16-bits. jxl encoded at -q 93. Is it expected on vardct?
The_Decryptor
2021-12-31 06:26:53
It doesn't currently perform dithering for output, so unless the app uses dithering for display then you'll see banding
novomesk
It's a bit annoying (and confusing) for lossless images though. There should also be no visual difference between version otherwise it wouldn't really be lossless.
2022-01-02 08:19:53
New Windows build is available: https://gitlab.gnome.org/GNOME/gimp/-/jobs/1703454 If you want, can you check if it is now as you expected?
lithium
2022-01-03 08:25:24
I have some already DCT image want apply denoise filter and apply lossy compress, but I have some question about this process, Could somebody can teach me about this? 1. Already DCT image have artifacts, so if apply higher quantizer(q99) on lower quantizer image(q90), higher quantizer will preserve artifacts and increase file size, (jpg q90 444 lossy => jxl d0.5 e8 or jpg q95 444 lossy). but even I apply denoise filter, already denoise and apply higher quantizer image, file size still large than original image, probably I use too weak(strength) denoise filter? or have other reason affect file size? In my test, only use near quantizer can reduce file size, (jpg q90 444 lossy => jxl d1.0 e8 or jpg q91 444 lossy), it's mean previous encoder quantizer will affect next encoder quantizer? 2. About jxl lossy transform, if I lossy recompress jpg, will lost some high frequency detail(generation loss), what else lose in lossy transform process?(jpg lossy vardct to jxl)
_wb_
2022-01-03 08:27:43
You can try better jpeg decoders to reduce dct noise
2022-01-03 08:27:45
https://github.com/google/knusperli
2022-01-03 08:28:59
https://github.com/victorvde/jpeg2png
lithium
_wb_ https://github.com/victorvde/jpeg2png
2022-01-03 08:33:51
Thank you ๐Ÿ™‚ So best practices probably like jpeg2png + bilateral filter for non-photo jpeg lossy image?
2022-01-03 08:40:09
Look like about my question 1, I must reduce those artifacts, otherwise I only can apply lower quantizer? > Generation loss is the loss of quality between subsequent copies or transcodes of data. > Anything that reduces the quality of the representation when copying, > and would cause further reduction in quality on making a copy of the copy, > can be considered a form of generation loss. File size increases are a common result of generation loss, > as the introduction of artifacts may actually increase the entropy of the data through each generation.
Jyrki Alakuijala
diskorduser Is possible to make jxl vardct or lossy modular faster for screen casting with lower latency than video formats?
2022-01-03 10:33:43
Yes. A casting system would likely benefit from dividing the screen vertically into bands of something like 64 or 256 pixels, and transmitting those immediately when a band is ready.
Cropping doesn't "edit pixels" so you can keep the original bit depth. Also, does WebP really use DCTs?
2022-01-03 01:16:23
WHT and DCT -- https://datatracker.ietf.org/doc/html/rfc6386#section-14.3 and https://datatracker.ietf.org/doc/html/rfc6386#section-14.4 WHT is like a cheaper crappier DCT that doesn't use multiplications at all WHT can be ok for some types of content, but for photographs it is far inferior to DCT and modern systems tend not to implement it
spider-mario https://youtu.be/aVwxzDHniEw that intro animation ๐Ÿ˜ณ
2022-01-03 01:21:16
I love catmull-rom splines since my late teens and I don't get the beauty of bezier curves -- I like to have the spline to go through the control points and I like it to have uniform curvature properties otherwise
Deleted User
novomesk New Windows build is available: https://gitlab.gnome.org/GNOME/gimp/-/jobs/1703454 If you want, can you check if it is now as you expected?
2022-01-03 03:02:48
It's working as expected for modular mode but it's bad for VarDCT. So you can't even get 32 Bit floats when first selecting it and then opening the image. Ideally, (lossless) modular JXLs open with their specified bit depth whereas VarDCT always opens as 32 Bit floats. If that's not possible, then I guess it would be better how it was previously.
novomesk
It's working as expected for modular mode but it's bad for VarDCT. So you can't even get 32 Bit floats when first selecting it and then opening the image. Ideally, (lossless) modular JXLs open with their specified bit depth whereas VarDCT always opens as 32 Bit floats. If that's not possible, then I guess it would be better how it was previously.
2022-01-03 04:51:50
32.jxl is an image which opens in 32bit float precision in GIMP 2.99.9 libjxl API do not tell whether vardct or modular was used to compress the image.
Deleted User
novomesk 32.jxl is an image which opens in 32bit float precision in GIMP 2.99.9 libjxl API do not tell whether vardct or modular was used to compress the image.
2022-01-03 05:35:10
Yes, but if you change one Byte in the JXL header, you can make it 8 bpc and GIMP opens it as (lower quality) 8 Bit image despite the actual image data being exactly the same. OK, I didn't knew that about the API. Is it possible to detect RGB vs XYB? Otherwise, as I said, the previous implementation should be the lesser evil.
novomesk
2022-01-03 06:29:56
There is JXL_BOOL uses_original_profile; parameter, see https://github.com/libjxl/libjxl/blob/main/lib/include/jxl/codestream_header.h#L166 It is usually true for lossless and often (but not always) false for lossy.
Deleted User
2022-01-03 11:31:20
But that should be fitting: - RGB: use specified bit depth - XYB: use higher bit depth for conversion to RGB (32 Bit float)
novomesk
2022-01-04 09:29:29
<@!794205442175402004> I'd like to know your opinion regarding JXL import in GIMP 2.99 Shall I always respect bits_per_sample and exponent_bits_per_sample or in case uses_original_profile == 0 to import as 32bit float?
_wb_
2022-01-04 10:30:22
I don't think you can always respect it, since GIMP probably doesn't support arbitrary bit depths and float types
2022-01-04 10:31:16
In the XYB case the header info is not related to the pixel data anyway, so might as well use 32-bit float then
Traneptora
novomesk There is JXL_BOOL uses_original_profile; parameter, see https://github.com/libjxl/libjxl/blob/main/lib/include/jxl/codestream_header.h#L166 It is usually true for lossless and often (but not always) false for lossy.
2022-01-04 03:48:31
`uses_original_profile` is just the same thing as `!xyb_encoded` as far as I'm aware
2022-01-04 03:49:18
but yes, if there's an XYB transform then the library downsamples the pixel data before reporting it
2022-01-04 03:49:24
but you don't really *have* to do that
Scope
2022-01-04 04:20:39
๐Ÿค” https://twitter.com/Pangaea__/status/1478249696925667328
The_Decryptor
2022-01-05 01:05:04
I ran a bunch of old video game screenshots (Real representative I know) through WebP/JXL, WebP only "won" in a few cases, and not by much I think
monad
2022-01-05 08:30:06
But, across my 12 _Dungeons of Dreadmor_ samples, `cwebp -z 9` compressed 30% better than PNG and `cjxl -d 0 -e 9 -E 3 -I 1 -g 1` only 16% better.
2022-01-05 08:38:02
Other than that, WebP seems to compete with JXL on images of text and other repetitive images, but not much else.
_wb_
2022-01-05 08:42:54
Jxl is not very good yet at exploiting repetition
2022-01-05 08:44:14
The bitstream has lz77 and patches as ways to exploit repetition, but the encoder isn't making very effective use of those yet
Deleted User
2022-01-06 04:10:28
<@!886264098298413078> I don't wanna annoy you but the JXL export option could be improved as well. The "lossless" check box is kind of useless as it is the same as moving the slider to 0 (compared to say WebP where this is not equal). Alternatively, the slider could be limited to a minimum of 0.1 since 0.01 to 0.1 also results in the same output. One might also invert the direction of the slider so that it goes from 15 to 0.1 with the highest visual quality being on the right, which should feel more natural. Though in any case, if the lossless option stays, triggering it should gray out the distance slider. Furthermore, I would prefer a slider with numbers for the effort setting instead of the name dropdown.
novomesk
<@!886264098298413078> I don't wanna annoy you but the JXL export option could be improved as well. The "lossless" check box is kind of useless as it is the same as moving the slider to 0 (compared to say WebP where this is not equal). Alternatively, the slider could be limited to a minimum of 0.1 since 0.01 to 0.1 also results in the same output. One might also invert the direction of the slider so that it goes from 15 to 0.1 with the highest visual quality being on the right, which should feel more natural. Though in any case, if the lossless option stays, triggering it should gray out the distance slider. Furthermore, I would prefer a slider with numbers for the effort setting instead of the name dropdown.
2022-01-06 07:22:03
Setting 0 distance via API without lossless caused encoder to crash (there is a video on YouTube about it). Regarding the GUI: It can be changed in the future. New options will be added after next libjxl release. However about GUI design there are various opinions and preferences, it won't be possible to match everyone's expectations there.
Deleted User
2022-01-06 07:25:58
OK! But why does GIMP allow to combine 0 with no lossless then?
novomesk
OK! But why does GIMP allow to combine 0 with no lossless then?
2022-01-06 07:35:39
Because that dialog is too simple. It is mostly auto-generated.
eldritchart
2022-01-06 11:01:02
Why does my firefox (96.0b10 developer edition) not support JXL, even after enabling the about:config setting? Also why is it still behind a flag in both chromium and firefox?
Scope
2022-01-06 11:07:38
Some political decisions Because some people think it will hurt AVIF's success
monad
eldritchart Why does my firefox (96.0b10 developer edition) not support JXL, even after enabling the about:config setting? Also why is it still behind a flag in both chromium and firefox?
2022-01-07 02:15:26
Firefox only supports JXL in Nightly.
Jyrki Alakuijala
_wb_ The bitstream has lz77 and patches as ways to exploit repetition, but the encoder isn't making very effective use of those yet
2022-01-07 10:33:20
I copied the pixel-based lz77-like approach from WebP as well as the exact 2d LUT for addressing in lz77 -- I didn't copy the color cache and bit-packing
2022-01-07 10:34:08
bit-packing helps with very low color count images (2/4/16 colors)
2022-01-07 10:34:59
color cache helps with pixelized images that have many colors but have locally only few -- but a lot of entropy for example due to error diffusion dithering or other reasons
2022-01-07 10:36:10
overall the palette construct in JPEG XL has a lot of untapped potential and may be strong enough to shadow the benefits of the color cache
2022-01-07 10:36:55
also it should be eventually possible to shadow the benefits of bit-packing by more active use of context modeling and redundant palette entries to assist context modeling
_wb_
2022-01-07 10:46:52
Color cache is kind of hard to combine with the planar approach and arbitrary nb_channels of jxl anyway
2022-01-07 10:59:22
I think the main advantage of bit packing is the memory reduction / speed benefit, and maybe some benefits in entropy coding but I think that may be mostly the case for huffman coding, which does not have very precise chance modeling when there are too few symbols. With ANS you can model 70% white, 30% black, while with Huffman when there are only two symbols you cannot do better than 50-50 / one bit per symbol.
2022-01-07 11:01:26
Thinking about it a bit, I think we _can_ actually do bit packing in modular mode
2022-01-07 11:11:57
Say you have a 1-bit image of dimensions 8W x H. You can apply a horizontal Squeeze step to get two 4W x H channels, and some more Squeeze steps will give you eight WxH channels. Then you can apply Palette on those eight channels to get a single WxH channel. Not sure what exactly its range would be (probably not just 8-bit, due to the nonlinearity in Squeeze), but you would effectively be doing 8 pixels per encoded symbol.
eldritchart
2022-01-07 09:48:57
Why is it still Nightly-only? Is there anything that still needs work? And <@!111445179587624960> so? If it is a better image format it *should* hurt AVIF's success because its better
Scope
2022-01-07 09:59:44
No, everything important works, but patches are no longer accepted, although in fact there is no technical reason not to enable it by default, it's just a political decision For AVIF apparently some people think that only very low bitrates are important for the Web and also the heads and companies from the Alliance for Open Media don't want any other formats except their own
eldritchart
2022-01-08 12:54:49
:(
2022-01-08 12:55:39
Thanks for digging into it more. It's really annoying that this technology exists but isn't being adopted
gnat
2022-01-08 03:19:27
hey all, my favourite kanban board, gitkraken is being sunset in 2023. What do you fine folks use??
2022-01-08 03:21:58
bonus points for dark theme.
JendaLinda
2022-01-10 09:57:45
No support for WMF/EMF? What about all those cliparts?
diskorduser
2022-01-11 06:36:05
Anyone here using gthumb? Does jxl work fine on that?
haaaaah
diskorduser Anyone here using gthumb? Does jxl work fine on that?
2022-01-11 08:28:38
Says full support here: https://jpegxl.io/tutorials/gthumb/#gthumbsupportsjpegxl
diskorduser
haaaaah Says full support here: https://jpegxl.io/tutorials/gthumb/#gthumbsupportsjpegxl
2022-01-12 02:48:17
I'm using it. It opens jxl files but they look pixelated.
haaaaah
diskorduser I'm using it. It opens jxl files but they look pixelated.
2022-01-13 01:49:22
Forgot to ask, do you have a screenshot? Does it only happen when you zoom in?
2022-01-13 01:50:27
Might also try gwenview or geeqie (not sure the spelling is right)
diskorduser
2022-01-13 04:43:03
https://gitlab.gnome.org/GNOME/gthumb/uploads/24000735fb2b142ee2cfd1144da5e3aa/post.webp
2022-01-13 04:43:11
right one is gthumb.
2022-01-13 04:44:12
https://gitlab.gnome.org/GNOME/gthumb/uploads/45fb543706c3f9b8e09deb1d963550b4/post.webp
Deleted User
2022-01-15 03:16:02
hi! has anyone tested the **experimental/fast_lossless** codec? how does it compare to other codecs: on photo images? on other images?
Scope
2022-01-15 03:18:55
https://discord.com/channels/794206087879852103/803645746661425173/930838234550923294
2022-01-15 03:25:41
And (but without recent changes): https://twitter.com/jonsneyers/status/1472959101416226823
2022-01-15 03:30:25
Also, it would be interesting to see an updated comparison with the latest changes in all encoders and FPNGE (P2/P4)
veluca
2022-01-15 03:50:21
<@!794205442175402004> ๐Ÿ˜‰
Deleted User
2022-01-15 05:06:20
thank you!
_wb_
2022-01-21 11:31:44
<@!810102077895344159> do you know anyone at IPTC?
paperboyo
_wb_ <@!810102077895344159> do you know anyone at IPTC?
2022-01-21 11:40:13
No, but have had a substantive reply from office@iptc.org (via https://iptc.org/about-iptc/contact-us/).
_wb_
2022-01-21 11:42:33
thanks - I asked because JPEG is exploring to establish a liaison with them
Nova Aurora
2022-01-28 01:26:12
How much is progressive jpeg actually used in production?
2022-01-28 01:30:57
I was talking with my professor, who had never actually used the jpeg spec version. They just loaded two different versions of the same image, one low quality, one high. And this (https://cloudinary.com/blog/image_loading_reloaded) cloudinary blog post recommends the same.
_wb_
2022-01-28 08:44:06
<@223161712092774402> why not use actual video codecs?
Nova Aurora How much is progressive jpeg actually used in production?
2022-01-28 08:46:59
Cloudinary serves mostly progressive jpegs, it's the default. It's also the default of mozjpeg. If you see sequential jpeg and progressive jpeg as two separate formats, then progressive jpeg has been the fastest growing image format of the past couple of years, growing faster than webp and avif combined.
2022-01-28 08:51:35
The 'progressive' display of first some placeholder, then the actual image serves a somewhat different purpose I think: there the lqip is often very, very low quality, not enough to actually see what's in the image, just enough to know "an image will come here" and to avoid layout shifts.
StahlFerro
_wb_ <@223161712092774402> why not use actual video codecs?
2022-01-28 09:17:29
Oh I did exported it as an MP4 from AE and then uploaded the file to Imgur. But now that you mentioned it the animation seems too long for an animated image and too short for a short video haha
_wb_
2022-01-28 09:21:57
I think anything that is more than a few frames and can use interframe is long enough to justify using a video codec
2022-01-28 09:25:15
For the master copy you do want something lossless though, and then probably video codecs are not that useful (though for CGI maybe it's more useful)
StahlFerro
2022-01-28 09:45:42
Yea I do have the original sequence as a huge PNG sequence
_wb_
2022-01-28 09:59:54
For that, probably fjxl would be a good alternative
StahlFerro
2022-01-28 10:00:43
Noted, will check it out
_wb_
2022-01-29 08:01:31
https://online2pdf.com/convert-jpg-to-excel
2022-01-29 08:02:11
Perhaps someone heard "JPEG XL" and misunderstood ๐Ÿ˜…
fab
2022-01-29 08:13:32
ahah
190n
_wb_ Perhaps someone heard "JPEG XL" and misunderstood ๐Ÿ˜…
2022-01-29 08:17:44
it better be a spreadsheet of pixels with the background color set
monad
2022-01-29 08:48:10
https://youtu.be/UBX2QQHlQ_I
_wb_
2022-01-30 06:58:08
Not sure what packjpg does exactly, but at a high level the concept is similar: take the quantized dct coefficients and recompress them with better entropy coding
2022-01-30 07:00:00
Archivers like packjpg and lepton don't need to make it so that you can decode the file directly to pixels, they can assume you first decompress to jpg and then use a regular jpg viewer
2022-01-30 07:05:35
So they don't need to worry about progressive decode, parallel decode, etc
diskorduser
2022-01-31 07:21:38
Does djxl provide knusperli like deblocking output for jpeg-recompressed jxls?
Scope
2022-01-31 07:24:53
no
_wb_
2022-01-31 07:38:55
Not knusperli, but you _could_ add gaborish and/or epf deblocking filters to a recompressed jpeg if you wanted to (though I don't think we have an option for that atm)
2022-01-31 07:40:24
Also if I'm not mistaken, the dc adaptive reconstruction also does apply to ex-jpegs, so there should be a little less banding in slow gradients (unless I am wrong, I don't remember how exactly we ended up defining things)
Deleted User
_wb_ Also if I'm not mistaken, the dc adaptive reconstruction also does apply to ex-jpegs, so there should be a little less banding in slow gradients (unless I am wrong, I don't remember how exactly we ended up defining things)
2022-01-31 07:45:55
Nah, Knusperli is still unbeatable in that regard. Here's a MozJPEG...
2022-01-31 07:47:54
...here it's the same file, but losslessly JXL-compressed and decoded to PNG via `djxl` (still the same blocky mess)...
2022-01-31 07:48:33
...and here's glorious Knusperli decode of a MozJPEG file.
Scope
_wb_ Also if I'm not mistaken, the dc adaptive reconstruction also does apply to ex-jpegs, so there should be a little less banding in slow gradients (unless I am wrong, I don't remember how exactly we ended up defining things)
2022-01-31 07:49:19
Yes, there is less banding, but as far as I remember it is due to higher precision in decoding
Deleted User
2022-01-31 07:51:53
I think that Knusperli would allow <:JXL:805850130203934781> to cheap out a bit on LF coefficients (since they'd be smoothed out anyway).
2022-01-31 07:56:30
Knusperli'd MozJPEG is actually... kinda *competitive* with JPEG XL, at least on that particular image and compression ratio where Knusperli can show off because of lots of background bokeh. Here's a brand new JXL encode, same bitrate, decoded to PNG.
_wb_
2022-01-31 08:19:07
Yes, if you go _that_ low quality in jpeg, you need some creative dequant to avoid getting a blocky mess
2022-01-31 08:19:23
Which knusperli will be better at than jxl
2022-01-31 08:19:43
Since jxl doesn't do anything to make the low freq hf smoother
2022-01-31 08:21:39
<@179701849576833024> do we creatively dequant the dc in jxl when decoding a recompressed jpeg, or is it just the multiply and that's it?
Deleted User
2022-01-31 08:21:42
There are limits, though. Here's a JPEG of a different image (๐Ÿธ from jpegxl.io).
2022-01-31 08:22:13
Knusperli didn't help much because the quantization was too severe and the image is too big.
veluca
_wb_ <@179701849576833024> do we creatively dequant the dc in jxl when decoding a recompressed jpeg, or is it just the multiply and that's it?
2022-01-31 08:22:13
just the multiply unless you explicitly ask otherwise
2022-01-31 08:22:55
and you can't explicitly ask otherwise for a 420 img anyway...
_wb_
2022-01-31 08:23:14
"explicitly asking otherwise" is setting a flag in the frameheader or what is it?
2022-01-31 08:25:15
kSkipAdaptiveLFSmoothing
2022-01-31 08:25:49
We currently don't ever tell it to not skip lf smoothing when recompressing jpegs, right?
2022-01-31 08:27:07
But that dc debanding should work just as well for ycbcr as for xyb, right?
2022-01-31 08:27:45
As long as it's 444, obviously. It needs corresponding samples from 3 channels
2022-01-31 08:28:35
I wonder if we should expose some jpeg recompression encode settings, like setting that flag, and also signaling gaborish and/or epf
2022-01-31 08:29:17
Gaborish and epf can be done even with 420, right? Upsampling gets done before the filters...
2022-01-31 08:30:32
I think with adaptive dc smoothing, gaborish and epf, you can probably make an ugly jpeg look a bit less ugly
Deleted User
...and here's glorious Knusperli decode of a MozJPEG file.
2022-01-31 09:29:04
still looks rubbish though IMHO. I would rather delete this JPG to contaminate the ugliness or just reuse it scaled down to 1/3 or 1/4 of the original size.
veluca
2022-01-31 09:48:03
yeah you can gaborish and EPF with 420
monad
2022-01-31 09:55:54
With such low detail already, jpeg2png can perhaps yield more appealing results. (30 iteration example)
Deleted User
2022-01-31 09:57:48
Now it looks like an AVIF minus banding.
diskorduser
2022-02-01 05:44:46
Better for low BPP jxl decoding.
Koromaru Korรผko
2022-02-01 06:29:07
damn those artifacts
Mrtt
2022-02-03 10:18:21
Hello guys (just introduced myself in the chat section), i'm compressing 16 bit single channel images with jxl, and i wanted to assess the losslessness of JXL, but as far as i managed to adjust my data, i cannot find totaly lossless parameters
2022-02-03 10:22:44
maximum error is 32 gray level, which is really low, but i thought that jxl was able to achieve real lossless => also i've seen the fast_lossless in the experimental section from <@!179701849576833024>, but going through the code showed that it is currently 12bit, can we expect true lossless 16bit with jxl (and if the fast_lossless is adjustable to my need i'd be happy to help give feedback, (also if working i'll add a contribution to opencv for loading jxl files)
2022-02-03 10:26:55
Greylevel color coded input
2022-02-03 10:27:07
and corresponding residual image
2022-02-03 10:28:09
Input image as a range from 0 to 43000, and the residuals have 32 max absolute error, which is very good, but true lossless is a topic in this context
veluca
2022-02-03 10:29:32
That's weird, jxl ought to be able to do 16 bit lossless without any problems
2022-02-03 10:29:41
How are you encoding the image?
Mrtt
2022-02-03 10:49:35
custom c++ code (tif file loaded through opencv)
2022-02-03 10:49:51
JxlPixelFormat pixel_format = { 1, JXL_TYPE_UINT16, JXL_NATIVE_ENDIAN, 0 }; JxlBasicInfo basic_info; JxlEncoderInitBasicInfo(&basic_info);
2022-02-03 10:50:02
basic_info.xsize = im.cols; basic_info.ysize = im.rows; basic_info.bits_per_sample = 16;
2022-02-03 10:50:08
basic_info.num_color_channels = 1;
2022-02-03 10:50:22
if (JXL_ENC_SUCCESS != JxlEncoderSetFrameLossless(frame_settings, true)) std::cerr << "Warning Lossless mode not set!" << std::endl;
2022-02-03 10:50:25
then adding the frame
2022-02-03 10:50:41
decompressing & computing the image differences
veluca
2022-02-03 10:52:56
can you try using `cjxl` and seeing if you have the same problem?
Koromaru Korรผko
2022-02-03 12:50:26
<@!931493879801348106> how are you extracting the tif data?
2022-02-03 12:51:41
that and it would appear the processed image, has some heavy noise.
2022-02-03 12:56:06
also it would appear its not truly one channel.
Mrtt
2022-02-03 01:27:51
The tif comes from libtif (opencv (cv::imread(, ANY_DEPTH)) but nevermind this i need lossless
2022-02-03 01:28:06
the data is clearly single channel
2022-02-03 01:30:19
the provided image is just a screenshot, not the real content
2022-02-03 01:30:28
with pseudo coloring
veluca can you try using `cjxl` and seeing if you have the same problem?
2022-02-03 01:31:05
the issue would be that cjxl is not handling tif
2022-02-03 01:31:21
otherwise i would have directly tries
2022-02-03 01:31:24
d
veluca
2022-02-03 01:46:59
you could convert the tif to PNG just to try
Mrtt
2022-02-03 01:58:26
giving a try, but cjxl has no output for max error & or residual visualisation
BlueSwordM
Mrtt giving a try, but cjxl has no output for max error & or residual visualisation
2022-02-03 02:00:04
Well, do `cjxl -d 0.0`, and then you can check for errors by decoding it back to PNG with djxl and then compare with with `butteraugli_main source.png encode.png`.
Mrtt
BlueSwordM Well, do `cjxl -d 0.0`, and then you can check for errors by decoding it back to PNG with djxl and then compare with with `butteraugli_main source.png encode.png`.
2022-02-03 02:35:18
ok, apply the transformations (losslessly)
2022-02-03 02:35:23
and error is 0
2022-02-03 02:35:59
what is the difference of -d 0.0 and the c++ jxl JxlEncoderSetFrameLossless
veluca
2022-02-03 02:45:27
in theory none...
2022-02-03 02:45:32
could you file a bug?
_wb_
2022-02-03 02:58:49
Are you setting use_original_colorspace to true?
2022-02-03 02:59:08
Otherwise it does xyb...
2022-02-03 02:59:28
This is really confusing api design btw
veluca
2022-02-03 03:00:25
doesn't setlossless do that?
Mrtt
2022-02-03 03:18:06
setlossless is just setting lossless parameter (from my code reading)
2022-02-03 03:19:02
<@!794205442175402004> : did not change touch this one, as i thought that single chanel would not (should not?) go through this
2022-02-03 03:55:06
what are the paremeters related to [Modular, lossless, squirrel] ?
2022-02-03 03:55:59
i thought that setting : JxlEncoderSetFrameLossless && JxlEncoderFrameSettingsSetOption(frame_settings, JXL_ENC_FRAME_SETTING_MODULAR, 1); would be identifcal
2022-02-03 05:39:12
sorry guy's just joined in with my question but i'll be off for 1week, i'll come back with new tests & comments, do not hesitate to send me PM i you know the difference in settings from the jxlE,coderSetFrameLossless & cjxl parameters
2022-02-03 05:39:40
<@!794205442175402004> : how do you set this parameter properly with jxl lib options
veluca
2022-02-03 05:43:55
if you could file a github issue it would be best
_wb_
Mrtt <@!794205442175402004> : how do you set this parameter properly with jxl lib options
2022-02-03 06:04:24
Set uses_original_profile = JXL_TRUE when setting the basicinfo
2022-02-03 06:04:44
The thing is that xyb or not is a per-image decision
2022-02-03 06:05:17
And lossless is a per-frame decision
2022-02-03 06:05:40
But the default is to do xyb, which is not compatible with lossless
Mrtt
2022-02-03 08:29:23
<@!794205442175402004> :trying this one, sorry i'll be off for a few days, i'll get back in touch after my days
2022-02-03 08:33:27
ok with uses_original_profile = JXL_TRUE we are totally lossless
2022-02-03 08:35:17
compression ratio is way higher (first try is worse that 7z compression of the tif file)
2022-02-03 08:35:53
(effort was 6)
_wb_
2022-02-03 09:51:04
If you get worse results with the api than with cjxl, please file a report
novomesk
2022-02-04 11:44:34
I hope animated webp will work. It could be useful for short videos inside presentations. It will be visually better than videos converted to 256-colors GIF.
Deleted User
2022-02-04 11:50:03
Are videos not supported?
Fraetor
2022-02-04 12:47:25
I've had issues getting videos to work, especially when you create a presentation with libreoffice, and present it with PowerPoint.
Nova Aurora
2022-02-04 11:33:30
You could create a fully compliant odt with a jxl image in it, even if nothing could read it.
DZgas ะ–
2022-02-05 09:00:29
when will the jxl standard be frozen?
190n
2022-02-05 09:01:47
isn't it already frozen?
2022-02-05 09:02:46
the bitstream is, idk if the full standard is
DZgas ะ–
190n the bitstream is, idk if the full standard is
2022-02-05 09:07:14
If I start compressing the archives now, will they be 100% decode in the same way in 5 years? Of course, I mean the current state of encodecs and decodecs
w
2022-02-05 09:23:00
yes
_wb_
DZgas ะ– If I start compressing the archives now, will they be 100% decode in the same way in 5 years? Of course, I mean the current state of encodecs and decodecs
2022-02-05 09:47:49
100% will only be true for lossless encodes. Lossy does allow for conformance tolerances in order to allow efficient implementations on various platforms. The tolerances are quite small though โ€” let's say things have to decode 99.99% in the same way. This is also true for other codecs btw: the old JPEG has quite generous tolerances so different decoders can produce pretty different pixels while all being conformant.
DZgas ะ–
_wb_ 100% will only be true for lossless encodes. Lossy does allow for conformance tolerances in order to allow efficient implementations on various platforms. The tolerances are quite small though โ€” let's say things have to decode 99.99% in the same way. This is also true for other codecs btw: the old JPEG has quite generous tolerances so different decoders can produce pretty different pixels while all being conformant.
2022-02-05 09:50:39
I mean more global changes, like the fact that the current encoded photos in the future can be read as broken
_wb_
2022-02-05 09:50:58
that's not going to happen
2022-02-05 09:51:17
spec was frozen in that respect in December 2020
2022-02-05 09:52:02
anything encoded with a cjxl from after December 2020 is guaranteed to remain decodeable
DZgas ะ–
2022-02-05 09:53:01
oh well, then I can safely convert all my archives, without stopping at the current Decodec version, and updating it without worrying about the future
2022-02-05 09:54:03
Thank you
2022-02-05 09:55:40
itโ€™s a pity that I donโ€™t have a few years to wait for the transcode of all 2000+ 4k photos
_wb_
2022-02-05 09:55:45
doing a quick mini-benchmark on a large jpeg: ``` $ time for i in $(seq 1 10); do djpeg big_building.ppm.jpg >/dev/null; done real 0m1.641s user 0m1.583s $ time ../build/tools/djxl big_building.ppm.jpg.jxl --num_reps 10 --num_threads 0 7216 x 5412, geomean: 70.20 MP/s [57.81, 78.68], 10 reps, 0 threads. real 0m5.708s user 0m4.936s $ time ../build/tools/djxl big_building.ppm.jpg.jxl --num_reps 10 7216 x 5412, geomean: 165.09 MP/s [132.90, 177.63], 10 reps, 4 threads. real 0m2.450s user 0m7.563s ```
DZgas ะ–
2022-02-05 09:56:40
it is much more profitable for me to reduce the size by 4 times and use compression to the maximum
_wb_
2022-02-05 09:57:38
so let's say libjpeg-turbo is about 3-4 times faster to decode, or with 4 threads 1.5x as fast as libjxl decode of the same jpg recompressed to jxl โ€” some of that difference is because libjxl needs to do fancier entropy decode, some of it is because libjxl is doing more accurate decode
DZgas ะ–
2022-02-05 10:02:06
Is there any option for libjxl to make it more accurate but decode slower?
_wb_
2022-02-05 10:02:16
Comparing original image to decoded jpeg, you can see that the libjxl decode is slightly more accurate: ``` $ compare -verbose -metric mae big_building.ppm big_building.ppm.jpg.ppm null: big_building.ppm PPM 7216x5412 7216x5412+0+0 16-bit sRGB 223.463MiB 0.140u 0:00.147 big_building.ppm.jpg.ppm PPM 7216x5412 7216x5412+0+0 8-bit sRGB 111.732MiB 0.180u 0:00.181 Image: big_building.ppm Channel distortion: MAE red: 799.99 (0.0122071) green: 526.031 (0.00802672) blue: 1025.9 (0.0156542) all: 783.974 (0.0119627) $ compare -verbose -metric mae big_building.ppm big_building.ppm.jpg.jxl.ppm null: big_building.ppm PPM 7216x5412 7216x5412+0+0 16-bit sRGB 223.463MiB 0.160u 0:00.163 big_building.ppm.jpg.jxl.ppm PPM 7216x5412 7216x5412+0+0 16-bit sRGB 223.463MiB 0.150u 0:00.155 Image: big_building.ppm Channel distortion: MAE red: 786.918 (0.0120076) green: 503.873 (0.0076886) blue: 1000.86 (0.0152722) all: 763.885 (0.0116561) ```
DZgas ะ–
DZgas ะ– it is much more profitable for me to reduce the size by 4 times and use compression to the maximum
2022-02-05 10:04:33
for me using one thread at speed 9 - waiting 5 minutes for 1 megapixel
_wb_
2022-02-05 10:05:01
less accurate and faster: yes, there are compile options for that (`-DJXL_HIGH_PRECISION=0`)
2022-02-05 10:05:20
speed 9 is probably not really worth it โ€” are you encoding from pixels or recompressing existing jpg?
DZgas ะ–
2022-02-05 10:06:05
I'm downsizing photos from 8k to 2k or less
_wb_
2022-02-05 10:07:09
more accurate and slower: not really โ€” we do have experimental code that does things in `double` precision arithmetic, but that's not really meant to be used in practice because it's very slow for very little improvement in precision. But it's what we use to produce reference decoded images for conformance testing, for example.
DZgas ะ– I'm downsizing photos from 8k to 2k or less
2022-02-05 10:07:33
so from pixels then. Doing lossy compression on them?
DZgas ะ–
2022-02-05 10:07:53
yes
2022-02-05 10:08:50
to a size of same 30% of lossless compression
2022-02-05 10:09:48
I care about the information in pixels, not their amount
2022-02-05 10:11:03
but am really mining jxl haha
_wb_
2022-02-05 10:26:33
probably default speed (-e 7) is a better trade-off between speed and density
DZgas ะ–
2022-02-05 10:44:02
i need maximum compression for centuries
diskorduser
2022-02-05 11:07:48
Try Emma encoder XD
_wb_
2022-02-05 11:30:33
Emma does lossless, no?
DZgas ะ–
2022-02-05 11:30:55
Emma??
2022-02-05 11:31:16
"very slow experimental compressors LEA and EMMA"
2022-02-05 11:31:18
wow
2022-02-05 11:31:46
<:Cheems:890866831047417898> but lossless only
2022-02-05 11:32:17
https://twitter.com/jonsneyers/status/1346389917816008704
2022-02-05 11:34:31
it would be interesting to use this on a color palette like 16 bit for all color
2022-02-05 11:34:46
is it possible?
2022-02-05 11:35:33
in PNG and GIF you can create a palette of 256 colors from the most common colors in the picture
_wb_
2022-02-05 11:36:26
Jxl can do palettes of unlimited size
2022-02-05 11:36:39
It can also do delta palette
DZgas ะ–
_wb_ Jxl can do palettes of unlimited size
2022-02-05 11:38:46
Can I set the palette for normal image compression?
2022-02-05 11:40:50
I don't understand why I need so many gradient details of the same shades
2022-02-05 11:42:09
6+6+6 bit
_wb_
2022-02-05 11:45:47
You can try lossless 6-bit if you want, that would be cjxl -m --override_bitdepth 6
2022-02-05 11:45:49
Iirc
DZgas ะ–
_wb_ You can try lossless 6-bit if you want, that would be cjxl -m --override_bitdepth 6
2022-02-05 11:46:34
but, by what principle is the palette created in this case?
2022-02-05 11:47:19
just a color limit? or image color analysis
_wb_
DZgas ะ– just a color limit? or image color analysis
2022-02-05 12:36:43
Just reducing the input values to 6-bit, nothing fancy
Deleted User
DZgas ะ– Is there any option for libjxl to make it more accurate but decode slower?
2022-02-05 12:53:34
Definitely make sure to decode lossy 8 bit JXLs to higher bit depths and manually apply dithering if you display them at 8 Bit. The uint8 output produces bad rounding errors that will cause ugly banding on gradients.
2022-02-05 12:54:07
See this issue: https://github.com/libjxl/libjxl/issues/541
DZgas ะ–
Definitely make sure to decode lossy 8 bit JXLs to higher bit depths and manually apply dithering if you display them at 8 Bit. The uint8 output produces bad rounding errors that will cause ugly banding on gradients.
2022-02-05 02:10:11
so dithering adds entropy
2022-02-05 02:11:24
there is no point in using 8 bits if dithering is also used
diskorduser
See this issue: https://github.com/libjxl/libjxl/issues/541
2022-02-05 02:12:58
Oh. This is why I had banding on jxl even though source doesn't have banding ๐Ÿค”
DZgas ะ–
See this issue: https://github.com/libjxl/libjxl/issues/541
2022-02-05 02:13:05
well, I have photos, they have noise
2022-02-05 02:14:28
And I don't care about dynamic range
2022-02-05 02:23:29
but
2022-02-05 02:23:32
2022-02-05 02:24:07
this was 2 years ago, I'm sure it works better now
2022-02-05 02:24:44
my original photo
2022-02-05 02:25:33
Deleted User
diskorduser Oh. This is why I had banding on jxl even though source doesn't have banding ๐Ÿค”
2022-02-05 03:49:58
Yes, lossy JXL will mostly remove dithering during compression because it's of too small importance for butteraugli. But gradients aren't an issue for libjxl internally where 32 Bit floating point precision is used. The only issue arises when simply truncating back to 8 Bit instead of doing better rounding with dither.
DZgas ะ–
_wb_ You can try lossless 6-bit if you want, that would be cjxl -m --override_bitdepth 6
2022-02-08 12:06:17
looks interesting, but not very effective, it is better to use normal compression methods. cjxl -m --override_bitdepth 6 -q 100 -e 9 -P 15 image 407 Kb optipng with bitdepth 6 image 764 Kb WEBP with bitdepth 6 image 512 Kb
2022-02-08 12:12:11
wow, it started working but then gave an error, huh?....
2022-02-08 12:14:17
if not use -P 15 then everything works fine
2022-02-08 12:16:50
maybe a bug? -P 15 is work in lossless only? cjxl -m -q 90 -e 9 -P 15
2022-02-08 12:17:08
enc_encoding.cc:361: JXL_ASSERT: residual % res.multiplier == 0
2022-02-08 12:47:34
And I didn't understand How yuv444
2022-02-08 12:53:40
And the --palette parametr is just not work
_wb_
2022-02-08 12:59:00
--palette doesn't do anything lossy, it just sets the limit of how large the palette can be _if_ the image happens to have fewer than that number of colors
DZgas ะ–
_wb_ --palette doesn't do anything lossy, it just sets the limit of how large the palette can be _if_ the image happens to have fewer than that number of colors
2022-02-08 01:00:15
it doesn't work at all
_wb_
2022-02-08 01:00:18
Yuv444: you can do it by giving it yuv data in an (invalid) ppm, then adding -c 2
DZgas ะ– it doesn't work at all
2022-02-08 01:01:10
What doesn't work? Default is --palette 512 iirc
DZgas ะ–
_wb_ Yuv444: you can do it by giving it yuv data in an (invalid) ppm, then adding -c 2
2022-02-08 01:01:27
but it is signed there that this is only for modular encoding
_wb_ What doesn't work? Default is --palette 512 iirc
2022-02-08 01:02:09
the setting just doesn't apply
_wb_
2022-02-08 01:02:59
It does: that setting just means "do palette IF the image has fewer than 256 colors"
DZgas ะ–
2022-02-08 01:05:01
need the separate parameter for decrease colors and create palette
_wb_ Yuv444: you can do it by giving it yuv data in an (invalid) ppm, then adding -c 2
2022-02-08 01:07:03
wow <#805007255061790730>
_wb_
DZgas ะ– need the separate parameter for decrease colors and create palette
2022-02-08 01:07:43
that's not currently in the scope of libjxl โ€” you can use pngquant or something
DZgas ะ–
_wb_ that's not currently in the scope of libjxl โ€” you can use pngquant or something
2022-02-08 01:10:09
ok, but now I need to solve the problem, I have small pictures and colors should not decrease by 2 times like yuv420
_wb_
2022-02-08 01:10:41
did you try delta palette?
DZgas ะ–
_wb_ did you try delta palette?
2022-02-08 01:11:13
??
_wb_
2022-02-08 01:11:27
`cjxl -m --lossy-palette --palette 0 -P 0`
2022-02-08 01:12:42
what exactly are you trying to do? you want to do something lossy but not just default lossy like `cjxl -d 1` ?
DZgas ะ–
2022-02-08 01:13:26
i use -d 0.5
2022-02-08 01:13:56
but there are noticeable 2x2 blocks for color
_wb_ `cjxl -m --lossy-palette --palette 0 -P 0`
2022-02-08 01:15:54
I don't know what it looks like... but it size More than just lossless
2022-02-08 01:17:14
let's stop experimenting with palettes, I already realized that they are not very effective for what I compress
_wb_
DZgas ะ– but there are noticeable 2x2 blocks for color
2022-02-08 01:17:15
that's strange, since jxl doesn't do chroma subsampling
DZgas ะ–
2022-02-08 01:17:51
<:Thonk:805904896879493180>
_wb_ that's strange, since jxl doesn't do chroma subsampling
2022-02-08 01:21:26
then how do I get rid of this? Is it just need the more quality?
2022-02-08 01:31:42
<@!794205442175402004>this is a really noticeable problem that is completely absent on the JPEG XR at the identical size
_wb_
2022-02-08 01:32:55
if you're going to zoom in that much, -d 0.5 is not enough
DZgas ะ–
2022-02-08 01:33:30
what should I use in such cases?
_wb_
2022-02-08 01:33:45
does -d 0.1 look OK?
DZgas ะ–
_wb_ does -d 0.1 look OK?
2022-02-08 01:34:36
I can't UP the Size because then there is no point in using Jpeg XL instead of Jpeg XR which just works
2022-02-08 01:36:31
it is possible for varDCT to have poorly tuned scales
_wb_
2022-02-08 01:39:51
there could be an encoder bug, maybe
2022-02-08 01:39:57
can you share the original image?
DZgas ะ–
2022-02-08 01:49:28
oh
2022-02-08 01:50:14
I find in a more presentable image
2022-02-08 01:58:53
found
2022-02-08 01:59:58
ok it's just a gardint of cooked chicken the original
2022-02-08 02:03:04
top is JPEG XR
2022-02-08 02:03:38
fab
2022-02-08 02:05:03
fo me it looks like ebalancement of pesets
2022-02-08 02:05:05
for %i in (C:\Users\Utente\Videos\pi\a\*.png) do cjxl -s 6 -d 0.669 -I 0.761 --use_new_heuristics %i %i.jxl
2022-02-08 02:05:21
s 6 needs to be usedv bette
2022-02-08 02:07:36
this command don't wok withcueent cjxl
2022-02-08 02:07:47
-I is fobidden with new heusitics
2022-02-08 02:08:24
DZgas ะ–
2022-02-08 02:09:11
300 kb
fab
2022-02-08 02:09:32
you ae the peson who does compaisons i n encode.su
2022-02-08 02:09:53
2022-02-08 02:09:58
analyze this
2022-02-08 02:10:04
for %i in (C:\Users\Utente\Documents\eew\*.png) do cjxl -s 6 -d 0.669 -I 0.761 --use_new_heuristics %i %i.jxl
2022-02-08 02:10:13
i doesn't wok so is default 0.5 maybe
DZgas ะ–
fab fo me it looks like ebalancement of pesets
2022-02-08 02:10:18
it is strange that jpeg xr does not have such a problem even when it Size 3 times less
fab for %i in (C:\Users\Utente\Videos\pi\a\*.png) do cjxl -s 6 -d 0.669 -I 0.761 --use_new_heuristics %i %i.jxl
2022-02-08 02:11:56
what
fab
DZgas ะ– what
2022-02-08 02:12:21
is this the jxl i posted?
DZgas ะ–
2022-02-08 02:12:32
xl yes
fab
2022-02-08 02:12:39
a bit bette
2022-02-08 02:12:49
but moe aggessive filteing
DZgas ะ–
2022-02-08 02:13:58
it looks really bad
fab
2022-02-08 02:14:49
because it isn't exact i
2022-02-08 02:14:57
but what eve neew heuistics is using
2022-02-08 02:15:01
so 0.5
2022-02-08 02:15:17
iteations
DZgas ะ–
2022-02-08 02:15:47
what is parameter i? does not work
2022-02-08 02:16:51
0.1-0.9 does not even affect the size in bytes
DZgas ะ– 300 kb
2022-02-08 02:17:28
is -d 0.3
fab
2022-02-08 02:17:57
yes is disabled in this build
2022-02-08 02:18:09
so is only -s 6 -d 0.669
DZgas ะ–
2022-02-08 02:18:28
why 669
fab
2022-02-08 02:18:46
i'll ty the jamaika build if it changes
DZgas ะ–
2022-02-08 02:19:30
-s 6 -d 0.4 --use_new_heuristics
fab
2022-02-08 02:19:39
2022-02-08 02:19:42
big no
2022-02-08 02:19:48
doom nine build is same
2022-02-08 02:19:51
iter ations don't change
DZgas ะ–
2022-02-08 02:20:08
i have 0.7.0-d4e2f39
DZgas ะ– -s 6 -d 0.4 --use_new_heuristics
2022-02-08 02:21:06
these blocks ruin my precious pixels
fab
2022-02-08 02:21:26
DZgas ะ– these blocks ruin my precious pixels
2022-02-08 02:22:06
how use cjxlng
DZgas ะ–
2022-02-08 02:22:32
I've always used Jpeg XR -q95 and it's perfect of course
fab
2022-02-08 02:22:33
2022-02-08 02:22:38
i have msytwo
DZgas ะ–
fab how use cjxlng
2022-02-08 02:23:05
I have no idea why
fab
2022-02-08 02:23:37
maybe it isn't the exact vesion
2022-02-08 02:23:48
how vesai luca build jxlng
2022-02-08 02:23:52
do he uses clang
DZgas ะ–
2022-02-08 02:25:01
yep No modules matched<:YEP:808828808127971399>
fab
2022-02-08 02:26:54
2022-02-08 02:27:05
stat fom the beginning
DZgas ะ–
fab
2022-02-08 02:27:45
wtf open the CMD
2022-02-08 02:27:54
and going in folder
diskorduser
DZgas ะ– I've always used Jpeg XR -q95 and it's perfect of course
2022-02-08 02:27:58
So jxr performs better? Time to test on synthetic / anime images.
fab
DZgas ะ– wtf open the CMD
2022-02-08 02:28:14
i want to show cjxlng
2022-02-08 02:28:28
the folde is this
2022-02-08 02:28:35
i expect it to eecognize
DZgas ะ–
2022-02-08 02:28:44
jpeg xr not animated but work very Fast
fab i want to show cjxlng
2022-02-08 02:29:11
meh
diskorduser
2022-02-08 02:29:18
By anime, I mean anime art images. not anime video.
DZgas ะ–
diskorduser By anime, I mean anime art images. not anime video.
2022-02-08 02:29:30
use the AVIF
diskorduser
2022-02-08 02:30:09
Hmm. but it doesn't look on complex anime art. wipes many textures.
DZgas ะ–
diskorduser Hmm. but it doesn't look on complex anime art. wipes many textures.
2022-02-08 02:30:51
there is nothing better for "art"
2022-02-08 02:31:04
only avif
fab
2022-02-08 02:31:07
2022-02-08 02:31:44
DZgas ะ–
2022-02-08 02:32:03
stop
fab
2022-02-08 02:34:24
2022-02-08 02:34:35
i'm not english
2022-02-08 02:35:04
to me those aent' latin wods
DZgas ะ–
_wb_ there could be an encoder bug, maybe
2022-02-08 02:35:48
it also means i still can't use jpeg xl
2022-02-08 02:36:57
modular mode doesn't have these problems with blocks, but it's not usable
fab
2022-02-08 02:37:19
goodbye
DZgas ะ–
2022-02-08 02:37:24
quality does not match the size
diskorduser
DZgas ะ– modular mode doesn't have these problems with blocks, but it's not usable
2022-02-08 02:38:04
Is the source image lossless? developed from raw/dng?
DZgas ะ–
diskorduser Is the source image lossless? developed from raw/dng?
2022-02-08 02:38:44
2022-02-08 02:38:53
the source
diskorduser
2022-02-08 02:41:01
oh
2022-02-08 02:41:04
DZgas ะ–
2022-02-08 02:41:36
bruh
diskorduser
2022-02-08 02:42:51
webp ? !!!!!!!!!!!!!!!!
2022-02-08 02:42:55
DZgas ะ–
2022-02-08 02:43:17
discord moment
diskorduser
2022-02-08 02:43:39
I don't think discord converts images to webp
2022-02-08 02:43:58
I think your source image is webp
DZgas ะ–
diskorduser I don't think discord converts images to webp
2022-02-08 02:44:15
He has been doing this since recently.
2022-02-08 02:44:55
I notice this when I repost pictures in telegram
diskorduser
2022-02-08 02:45:19
sha256sum 26565e6c5571ee4bc893222153fc4cdfcf333ad4c745cd7cb72df00cf4ed3513 20210828_130710.png
DZgas ะ–
2022-02-08 02:45:47
2022-02-08 02:46:04
<:HaDog:805390049033191445>
Scope
DZgas ะ–
2022-02-08 02:50:58
I don't see any critical differences <https://slow.pics/c/qqHaYZub>
DZgas ะ–
2022-02-08 02:51:45
this size is too big
2022-02-08 02:52:22
I planned to lower it by 40% relative to Jpeg XR
2022-02-08 02:52:44
jpeg xr is 348 Kb
Scope
2022-02-08 02:54:17
I don't think it's possible, for a like almost lossless quality, especially if the source is not very good quality, for regular Jpeg - maybe
diskorduser
2022-02-08 02:55:32
jxl doesn't work well on low quality sources. Did you downscale it for removing jpeg artifacts?
DZgas ะ–
Scope I don't think it's possible, for a like almost lossless quality, especially if the source is not very good quality, for regular Jpeg - maybe
2022-02-08 02:56:07
what the did you say
2022-02-08 02:56:50
jpeg XL works as it should, but this problem with color blocks ruined everything
2022-02-08 02:57:21
even jpeg xr 5 times lower size has no such problems
2022-02-08 02:58:24
recomend use Jpeg in 2022 bruh
Scope
2022-02-08 02:58:43
I mean I don't think Jpeg XL is 40% more efficient than Jpeg XR (with the same quality), it may be 40-60% better than regular Jpeg, but Jpeg XR is a more modern and efficient format
DZgas ะ–
Scope I mean I don't think Jpeg XL is 40% more efficient than Jpeg XR (with the same quality), it may be 40-60% better than regular Jpeg, but Jpeg XR is a more modern and efficient format
2022-02-08 03:01:14
it is certainly not that effective, but it would be the most effective investment for the future
2022-02-08 03:01:30
could be
2022-02-08 03:02:20
Now it seems I understand that from the point of view of the encoder, JPEG XR is more suitable for my specific images
2022-02-08 03:03:04
because all these block problems would be completely invisible on images like 4k or 8k
2022-02-08 03:03:52
and at the same time jpeg xr is extremely fast
diskorduser
2022-02-08 03:06:40
Without having access to uncompressed / non artifact-y images, it is difficult to compare codecs.
DZgas ะ–
diskorduser Without having access to uncompressed / non artifact-y images, it is difficult to compare codecs.
2022-02-08 03:07:59
diskorduser
2022-02-08 03:08:42
Does your camera outputs bmp image?
Scope
2022-02-08 03:09:22
Yes, the higher quality source, the better and more efficient is Jpeg XL compared to other formats, although I also noticed some artifacts and problems with JXL, sadly it seems that Jyrki is pretty busy with something else, he mainly works on improving lossy VarDCT
DZgas ะ–
diskorduser Does your camera outputs bmp image?
2022-02-08 03:09:23
this is the source with which you need to work, everything that happened before is unimportant
diskorduser
DZgas ะ– this is the source with which you need to work, everything that happened before is unimportant
2022-02-08 03:09:35
No
2022-02-08 03:11:20
Artifacts from previous codecs ruin encoding process.
DZgas ะ–
Scope Yes, the higher quality source, the better and more efficient is Jpeg XL compared to other formats, although I also noticed some artifacts and problems with JXL, sadly it seems that Jyrki is pretty busy with something else, he mainly works on improving lossy VarDCT
2022-02-08 03:11:41
my situation with archiving is specific. for everything else, of course, the codec works for all 100
DZgas ะ– top is JPEG XR
2022-02-08 03:12:19
<@!263309374775230465> its
2022-02-08 03:13:50
https://cdn.discordapp.com/attachments/794206087879852106/940600784909893692/unknown.png
diskorduser
2022-02-08 03:14:54
I think you didn;t understand. Probably jpegxr alogrithm is more similar to jpg than jxl. Similar encoding process, so fewer artifacts.
DZgas ะ–
2022-02-08 03:15:44
DCT is DCT
Scope
DZgas ะ–
2022-02-08 03:17:13
Also, some smaller size
DZgas ะ–
Scope Also, some smaller size
2022-02-08 03:18:34
some problem
diskorduser
DZgas ะ– DCT is DCT
2022-02-08 03:19:47
butteraugli works in different way
DZgas ะ–
2022-02-08 03:20:32
jpeg xr same size
2022-02-08 03:21:09
no blocks
_wb_
2022-02-08 03:21:29
what's the original?
2022-02-08 03:21:37
or where in the original is this?
2022-02-08 03:21:48
you zoom in so much that it's a bit hard to tell
DZgas ะ–
2022-02-08 03:21:53
2022-02-08 03:22:04
orig
2022-02-08 03:23:03
ah yes
2022-02-08 03:23:56
I noticed that this is a problem on dark gradients that are close to flesh-colored
_wb_
2022-02-08 03:24:31
ah found it
2022-02-08 03:24:36
`convert 20210828_130710.bmp.ppm -gravity center -crop 100x50+-120+-80 -sample 1600% 20210828_130710.bmp.ppm-crop.ppm`
DZgas ะ–
2022-02-08 03:25:47
looking forward to learning about this made and information about it
Scope
2022-02-08 03:28:43
DZgas ะ–
Scope
2022-02-08 03:29:35
nearly
Scope
2022-02-08 03:32:10
I think it's just smaller blocks because Jpeg only has 8x8, but JXL can make blocks even smaller and also much larger And the encoding is usually not tuned for such zooming, but for normal viewing distance when the difference is almost not noticeable
DZgas ะ–
2022-02-08 03:34:07
<:FeelsAmazingMan:808826295768449054> I just need to completely disable the use of large blocks
2022-02-08 03:34:18
how
_wb_
2022-02-08 03:34:50
the thing is, if you zoom in that much, anything lossy will be visually lossy โ€” just some codecs will look more blurry, others more blocky
2022-02-08 03:37:47
at such extreme zoom levels, I can easily see big differences between the original and a q98 jpeg
2022-02-08 03:39:01
if your use case requires that much zooming, I would recommend either using higher resolution originals, or use lossless
DZgas ะ–
_wb_ if your use case requires that much zooming, I would recommend either using higher resolution originals, or use lossless
2022-02-08 03:40:01
i need 3-4 times compression from lossless png
diskorduser
2022-02-08 03:40:09
For archiving purpose, you should be using transcode mode and don't worry about file sizes.
DZgas ะ–
2022-02-08 03:40:52
jpeg xr does completely imperceptible compression at 2.5 times compression
Cool Doggo
2022-02-08 03:42:12
there is noticible quality loss in xr from the zoom amount you show
DZgas ะ–
DZgas ะ–
2022-02-08 03:42:20
actual jxr
Cool Doggo
2022-02-08 03:42:55
there would be for pretty much any lossy encoding too
DZgas ะ–
Cool Doggo there would be for pretty much any lossy encoding too
2022-02-08 03:43:36
losses should not be noticeable
Cool Doggo
2022-02-08 03:44:44
if you are encoding lossy then there is loss
2022-02-08 03:44:56
if you are going to look so close at it you will see that loss
2022-02-08 03:45:06
if you don't want any of that, don't use lossy
DZgas ะ–
2022-02-08 03:45:23
Look this XOR
2022-02-08 03:46:25
is 350 xr and 200 xl
2022-02-08 03:46:42
and:
2022-02-08 03:50:03
ok
diskorduser
2022-02-08 03:50:19
`83M d.bmp 7.5M dim-gunger-3emffQOvHxA-unsplash.jpg 17M d.jxr` Why am I getting big jxr files.
DZgas ะ–
diskorduser `83M d.bmp 7.5M dim-gunger-3emffQOvHxA-unsplash.jpg 17M d.jxr` Why am I getting big jxr files.
2022-02-08 03:51:03
?
diskorduser
2022-02-08 03:51:21
trying to recompress jpg to jxr.
2022-02-08 03:51:45
I used quality 90
DZgas ะ–
DZgas ะ– and:
2022-02-08 03:52:30
xr and xl same size
2022-02-08 03:53:35
wait, doesn't that mean that jpeg xr is better on BPP 3+
diskorduser
2022-02-08 03:55:32
I get very bad quality on jxr
2022-02-08 03:55:38
DZgas ะ–
diskorduser
2022-02-08 03:56:18
??
diskorduser
2022-02-08 03:56:44
Probably I am using worst implementation of jxr
2022-02-08 03:57:03
<@!226977230121598977> which software are you using to convert to jxr?
DZgas ะ–
diskorduser <@!226977230121598977> which software are you using to convert to jxr?
2022-02-08 03:57:20
XnConvert
2022-02-08 03:58:13
Jpeg XR wih all block overlap mode
DZgas ะ– xr and xl same size
2022-02-08 04:00:06
i will make tests with different sizes
diskorduser
2022-02-08 04:00:59
Even with overlapping I get bad results
2022-02-08 04:03:41
2022-02-08 04:06:19
microsoft's encoder. It should be good I guess.
DZgas ะ–
2022-02-08 04:08:00
wow what a simple codec hehe
diskorduser
2022-02-08 04:08:20
Okay. used xnconvert this time. with quality 80 and overlapping all. I get big files lol
DZgas ะ–
diskorduser
2022-02-08 04:08:24
my q is 0-100
diskorduser
2022-02-08 04:08:24
DZgas ะ–
diskorduser
2022-02-08 04:09:02
why are you doing this with jpg
diskorduser
2022-02-08 04:09:26
Well, you said dct is dct
DZgas ะ–
2022-02-08 04:09:47
<:ReeCat:806087208678588437>
diskorduser
2022-02-08 04:19:40
Having tested with lossless source, i get smaller file sizes than png but noise and textures get lost on jxr.
2022-02-08 04:24:41
left jxl - 246 kb . right - jxr - 685kb
2022-02-08 04:26:15
lot of mosquito noise on jxr even at 680kb ๐Ÿ˜ฆ
DZgas ะ–
diskorduser left jxl - 246 kb . right - jxr - 685kb
2022-02-08 04:28:09
yuv444?
diskorduser
2022-02-08 04:31:15
yes
2022-02-08 04:31:44
DZgas ะ–
diskorduser
2022-02-08 04:32:50
i use q 95
diskorduser
2022-02-08 04:33:36
even at 80, the file size is 680
2022-02-08 04:33:46
what will happen at q 95
DZgas ะ–
2022-02-08 04:35:56
some strange transition of algorithms from 94 to 95
diskorduser
2022-02-08 04:36:19
at 95, it gets bigger than png. 3.8mb jxr. source png 2.4mb
Scope
2022-02-08 04:38:07
JXR also has a lossless mode and is usually better than PNG (for photos)
DZgas ะ–
diskorduser at 95, it gets bigger than png. 3.8mb jxr. source png 2.4mb
2022-02-08 04:38:31
photo?
2022-02-08 04:38:40
real photo
diskorduser
2022-02-08 04:39:10
I used q100 ( lossless mode) now. it's 100kb less than png
DZgas ะ– real photo
2022-02-08 05:07:54
yes
fab
2022-02-08 05:34:59
2022-02-08 05:35:06
Parody
DZgas ะ–
DZgas ะ– i will make tests with different sizes
2022-02-08 05:38:24
<:Cheems:890866831047417898> <:Thonk:805904896879493180>
2022-02-08 05:39:36
well, an interesting note is that XR share data much more evenly
diskorduser
2022-02-08 05:41:39
It's expected.
fab
2022-02-08 05:44:57
https://discuss.pixls.us/t/jpeg-xl-file-format/25925
_wb_
DZgas ะ– well, an interesting note is that XR share data much more evenly
2022-02-08 05:46:01
What colorspace are you doing the comparison in?
DZgas ะ–
2022-02-08 05:47:19
I didn't really go saince it, but it seems that jpeg XR makes the image so that the maximum quality is first made and then elements are removed from it, as in the original JPEG, while Jpeg XR generates an image from low to high
_wb_ What colorspace are you doing the comparison in?
2022-02-08 05:48:21
here everything is XOR, and an indicator of what was removed from the original image, then what is not in the compressed version
2022-02-08 05:48:59
on the right side of the image, the lighter the more the pixels differ
_wb_
2022-02-08 05:49:54
Xor of RGB values? That's probably not really the best way to make a heatmap...
DZgas ะ–
_wb_ Xor of RGB values? That's probably not really the best way to make a heatmap...
2022-02-08 05:50:26
yes
2022-02-08 05:52:45
but this very clearly shows that in JPEG XL the image does not match the original at all, and many shifts were made, while JPEG XR removed mostly noise, all pixels