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

spider-mario
2025-05-09 11:06:19
well, not on its own, it seems
2025-05-09 11:06:37
but maybe now it will be better adjustable
2025-05-09 11:30:23
yees, it aligns very well now
2025-05-09 11:32:13
(that might make it sound like more thorough testing than it is)
spider-mario at the cost of disturbing existing users of the flag (by a constant factor, though, so easily adjusted)
2025-05-09 11:38:50
“by a constant factor” was a brain fart – there might not be a direct correspondence
JesusGod-Pope666.Info
2025-05-10 06:32:59
I don't think this command exist: --ignore-gain-map
2025-05-10 06:33:04
don't seem it is legit.
TheBigBadBoy - 𝙸𝚛
A homosapien Here ya go, I used this model: https://openmodeldb.info/models/1x-Bendel-Halftone With this software: https://github.com/chaiNNer-org/chaiNNer
2025-05-10 07:17:37
it indeed works quite well unfortunately it is not keeping all the details
2025-05-10 07:18:06
here it is loosing some grass
2025-05-10 07:18:26
the complete scan for reference (should have sent it earlier...)
2025-05-10 08:05:37
so I searched for quite some time, at first I did not know this was called halftone <:KekDog:805390049033191445> seems like `descreen` filter from G'MIC-Qt for GIMP is quite nice, got me that:
2025-05-10 08:06:10
not completely removed, but keeps all the details
2025-05-10 08:10:48
I can't say which one I prefer between 1x-Bendel-Halftone and descreen lol
A homosapien
2025-05-10 09:22:39
Run the descreen result through an anime AI upscaler, it retains the small details while removing the noise
2025-05-10 09:25:43
Here is an example
JesusGod-Pope666.Info
2025-05-10 01:32:49
Processing completed: Screenshot 2014-09-13 15.36.38.png [202/] Processing the image: *.webp [203/] ERROR: unrecognized option --ignore-gain-map
𝕰𝖒𝖗𝖊
JesusGod-Pope666.Info Processing completed: Screenshot 2014-09-13 15.36.38.png [202/] Processing the image: *.webp [203/] ERROR: unrecognized option --ignore-gain-map
2025-05-10 01:39:12
AFAIK, webp does not support gain maps. Maybe that's why
Jyrki Alakuijala
Oh, so JXL had the noise first and it was ported to AVIF?
2025-05-10 01:48:16
https://arxiv.org/pdf/1803.09165 this work was done before AVIF format was scratched up, of course AV1 was thinking about noise before this, but imho, they parameterized other things that are interesting for image compression
spider-mario no, the spectrum is whatever https://github.com/libjxl/libjxl/blob/77cd542df9714955e35e4b1515682da651157cc7/lib/jxl/dec_noise.cc generates, and it’s mostly achromatic
2025-05-10 01:52:00
I chose to keep the noise achromatic even though physical processes tend to create more R-G axis noise than luma -- this was by observing how photographers introduce noise into their creations, there were no youtube videos of how to add r-g or b-y noise, only luma, and there were quite a few videos on how to get rid of any chromacity noise, and the golden standard to create 'noisy' real looking photos was to add luma noise only and to complete remove chroma noise
2025-05-10 01:52:43
or, iirc, there is a tiny bit of chromacity in the noise synthesis according to "my good taste" at that time
2025-05-10 01:53:24
I didn't want to parameterize it as I am not a great friend of believing into super complex configurable systems -- better to build a simple system that 'just works'
2025-05-10 01:53:47
if people need something complex they can still store it into an image or create an additional layer having those properties and blend it in ...
2025-05-10 01:55:02
a photographer friend (who was a global-level fashion photographer ~10 years ago) used a stock image of a 256x256 tile that they used to create a credible grain noise pattern -- they had obtained it by photographing an empty film
jonnyawsom3
Jyrki Alakuijala https://arxiv.org/pdf/1803.09165 this work was done before AVIF format was scratched up, of course AV1 was thinking about noise before this, but imho, they parameterized other things that are interesting for image compression
2025-05-10 02:22:13
A good read. Is that what `--noise 1` does in cjxl?
RaveSteel
2025-05-10 03:48:24
I think that flag only works if you specify photon noise too?
spider-mario
2025-05-10 03:54:39
nah, it predates photon noise
jonnyawsom3
2025-05-10 04:30:56
Did a quick test encode, definitely more chroma noise in the original and larger 'chunks' for lack of a better term, but not bad. Original, `-d 3`, `-d 3 --noise 1`
JesusGod-Pope666.Info
2025-05-10 08:11:26
I think I sorted it:
2025-05-10 08:11:29
for i in *.{png,jpg,jpeg,webp}; do ((current++)); echo "Processing the image: ${i} [$current/$total]"; avifenc -a tune=iq -q 60 -d "10" -y "444" -s "0" "${i}" "new_${i%.*}.avif"; echo "Processing completed: ${i} [$current/$total]"; done
2025-05-10 08:12:58
for i in *.{png,jpg,jpeg,webp}; do ((current++)); echo "Processing the image: ${i} [$current/$total]"; avifenc -a tune=iq -q 60 -d "10" -y "444" -s "0" --ignore-xmp --ignore-exif "${i}" "new_${i%.*}.avif"; echo "Processing completed: ${i} [$current/$total]"; done
2025-05-10 08:17:15
It seems to work now, with all pictures.
2025-05-10 08:17:34
In one folder.
2025-05-10 08:17:46
Now I guess I have to find out the subfolder thing and run it.
2025-05-10 08:18:05
tune=iq don't really know about the different settings.
2025-05-10 08:18:16
But I guess it is less.......
2025-05-10 08:18:24
of an issue maybe.
2025-05-10 08:29:17
hmmmmm
AccessViolation_
Jyrki Alakuijala I chose to keep the noise achromatic even though physical processes tend to create more R-G axis noise than luma -- this was by observing how photographers introduce noise into their creations, there were no youtube videos of how to add r-g or b-y noise, only luma, and there were quite a few videos on how to get rid of any chromacity noise, and the golden standard to create 'noisy' real looking photos was to add luma noise only and to complete remove chroma noise
2025-05-10 09:53:43
when noise reduction is set to 'low' on my canon mirrorless, it doesn't seem to 'reduce' noise, instead it replaces RGB noise with luma noise. the higher noise reduction settings do start attempting to remove the noise. I can get behind your decision, personally I'm a big fan of luma noise, it can add so much to the atmosphere of an image. I don't like how RGB noise looks at all
2025-05-10 09:56:52
hence also my message that started off this topic; viewing an image at a scaled down size causes the averaging filter remove the noise, changing the vibe of the image. I want to see if I can extract the luma noise and have the image viewer apply just the noise at a constant scale regardless of the scale of the image itself, so that no matter how small the image is, it'll always look the intended level of noisy
2025-05-10 10:03:43
I live for images like this https://cdn.discordapp.com/attachments/151482247424376832/1335584728757043220/otdzarzwtrc41.png?ex=68209535&is=681f43b5&hm=2255d07344857bb77a362d85851244cc7118228f5cdc4a75f3ff429e366c011f&
jonnyawsom3
AccessViolation_ when noise reduction is set to 'low' on my canon mirrorless, it doesn't seem to 'reduce' noise, instead it replaces RGB noise with luma noise. the higher noise reduction settings do start attempting to remove the noise. I can get behind your decision, personally I'm a big fan of luma noise, it can add so much to the atmosphere of an image. I don't like how RGB noise looks at all
2025-05-10 10:07:23
I just realised, *technically* you can still get Chroma noise
2025-05-10 10:07:33
Set way too high for this image, but just to demo
2025-05-10 10:08:23
Lossless disables XYB, but the noise is still encoded as XYB, causing RB noise. Could probably be done for lossy using a dummy lossless layer but I don't have the tools for it
AccessViolation_
2025-05-10 10:08:59
<:galaxybrain:821831336372338729>
2025-05-10 10:12:05
hmm I wonder if you could create rgb noise in jxl by putting a copy of the r,g,b channels from an image into individual layers, then applying luma noise to those, then patching those back on to the original image
2025-05-10 10:13:35
maybe with the right combination of blend modes. it'd be very hacky though
jonnyawsom3
2025-05-10 10:16:51
Also, vaguely related. <@207980494892040194> I stumbled across this https://discord.com/channels/794206087879852103/804324493420920833/1192234113223102535 Combined with this https://kampidh.com/whyjxl, maybe the real blue noise is the dithering we made along the way
AccessViolation_ hmm I wonder if you could create rgb noise in jxl by putting a copy of the r,g,b channels from an image into individual layers, then applying luma noise to those, then patching those back on to the original image
2025-05-10 10:17:35
Depending on the parameters, we might still be able to make some chroma noise https://discord.com/channels/794206087879852103/794206087879852106/1370760471140896771
AccessViolation_
2025-05-10 10:25:33
thinking of nefarious possibilities like creating an image viewer that intentionally falsely assumes every jpeg xl image is requesting a lot of noise to be added
2025-05-10 10:27:32
ooo, anti AI training measure! add a bunch of noise to the jxl images present on your website, but use a custom Wasm based decoder to render them that ignores the noise parameter completely. when the images are scraped and eventually decoded, they'll get the variants with the noise and it might not be immediately obvious that they can ignore the noise parameter to get the original back
2025-05-10 10:41:42
wait, JXL's noise is fixed-pattern right? so two images will have identical noise patterns where they overlap? if true that makes it so much better
2025-05-10 10:43:07
because I think in AI model training, the noise would usually just average out to nothing in the end, but if every JXL image that's protected this way has the same noise pattern they're going to "constructively interfere" and actually be captured in the image generation model
jonnyawsom3
2025-05-10 10:43:26
I've wanted a djxl option to ignore noise for quite a while. Wanted to explore lossless encoding without needing an entire second image/frame for the clean version. Though the XYB noise means it's a bit... Messy
AccessViolation_ wait, JXL's noise is fixed-pattern right? so two images will have identical noise patterns where they overlap? if true that makes it so much better
2025-05-10 10:44:55
It uses a LUT to modulate the noise, the current default is to mimic Luma photon noise
AccessViolation_
2025-05-10 10:45:52
but the base difference between the noise in this pixel and the next is based on a fixed-seed SRNG no?
jonnyawsom3
2025-05-10 11:12:05
You gave me an idea :P ```Width 1024 Height 1024 XYB Noise 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 if g > 0 - Set 0 - Set 0```
embed
You gave me an idea :P ```Width 1024 Height 1024 XYB Noise 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 if g > 0 - Set 0 - Set 0```
2025-05-10 11:12:10
https://embed.moe/https://cdn.discordapp.com/attachments/794206087879852106/1370901237792378882/art.jxl?ex=68212ec5&is=681fdd45&hm=3c786218b5fafbb0281901cdf5f3b6edc956f95289392920ef12e8c953e05e66&
jonnyawsom3
2025-05-10 11:12:26
I forgot you can use noise in JXL art
JesusGod-Pope666.Info
2025-05-11 08:00:21
Seems this might work for multiple folders - although only for png files at the moment, have to figure out to fix multiple without it breaking - but it seems like it is working: find . -name "*.png" | parallel avifenc -a tune=iq -q 60 -d 10 -y 444 -s 0 --ignore-xmp --ignore-exif {} {.}.avif;
2025-05-11 08:15:00
2025-05-11 12:03:08
Is there a way to have it choose multiple picture formats?
2025-05-11 12:03:18
find . -name "*.jpg" | parallel avifenc -a tune=iq -q 60 -d 10 -y 444 -s 0 --ignore-xmp --ignore-exif {} {.}.avif;
2025-05-11 12:03:40
and an input and output folder with the subfolders.
2025-05-11 12:05:45
darkijah<@892795132531838997>-USBSSD:~/downloads/images/D--Book images$ find . -name "*.jpg,jpeg,png,webp" | parallel avifenc -a tune=iq -q 60 -d 10 -y 444 -s 0 --ignore-xmp --ignore-exif {} {.}.avif; darkijah<@892795132531838997>-USBSSD:~/downloads/images/D--Book images$ find . -name *.{png,jpg,jpeg,webp} | parallel avifenc -a tune=iq -q 60 -d 10 -y 444 -s 0 --ignore-xmp --ignore-exif {} {.}.avif; find: paths must precede expression: `Frontpage1845.jpg' find: possible unquoted pattern after predicate `-name'? darkijah<@892795132531838997>-USBSSD:~/downloads/images/D--Book images$ find . -name *.{png,jpg,jpeg,webp}; | parallel avifenc -a tune=iq -q 60 -d 10 -y 444 -s 0 --ignore-xmp --ignore-exif {} {.}.avif; bash: syntax error near unexpected token `|' darkijah<@892795132531838997>-USBSSD:~/downloads/images/D--Book images$ find . -name "*.{png,jpg,jpeg,webp}" | parallel avifenc -a tune=iq -q 60 -d 10 -y 444 -s 0 --ignore-xmp --ignore-exif {} {.}.avif; darkijah<@892795132531838997>-USBSSD:~/downloads/images/D--Book images$
2025-05-11 12:06:17
I don't know
2025-05-11 12:34:05
lets try this: find . \( -iname "*.png" -o -iname "*.webp" -o -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.bmp" \) \ | parallel avifenc -a tune=iq -q 60 -d 10 -y 444 -s 0 --ignore-xmp --ignore-exif {} {.}.avif
2025-05-11 12:34:25
althouigh tried to make an input output thing but did not work.
2025-05-11 02:57:41
darkijah<@892795132531838997>-USBSSD:~/downloads/images/M--Images/webp$ for i in *.webp; do ((current++)); echo "Processing the image: ${i} [$current/$total]"; avifenc -a tune=iq -q 60 -d 10 -y 444 -s 0 --ignore-xmp --ignore-exif "${i}" "new_${i%.*}.avif"; echo "Processing completed: ${i} [$current/$total]"; done Processing the image: 037bfe49-5b6b-4f1e-b319-1ff37f039b90.webp [1/] Unrecognized file format for input file: 037bfe49-5b6b-4f1e-b319-1ff37f039b90.webp Cannot read input file: 037bfe49-5b6b-4f1e-b319-1ff37f039b90.webp Processing completed: 037bfe49-5b6b-4f1e-b319-1ff37f039b90.webp [1/] Processing the image: 04-19-05.webp [2/] Unrecognized file format for input file: 04-19-05.webp Cannot read input file: 04-19-05.webp Processing completed: 04-19-05.webp [2/] Processing the image: 0c4th5s2y0g71.webp [3/] Unrecognized file format for input file: 0c4th5s2y0g71.webp Cannot read input file: 0c4th5s2y0g71.webp Processing completed: 0c4th5s2y0g71.webp [3/] Processing the image: 16228.webp [4/] Unrecognized file format for input file: 16228.webp
2025-05-11 02:58:00
It seems to have issues with webp file formates?
2025-05-11 03:03:23
darkijah<@892795132531838997>-USBSSD:~/downloads/test/New Folder$ avifenc -q 60 "The world councils by Ian Paysley.webp" output.avif Unrecognized file format for input file: The world councils by Ian Paysley.webp Cannot read input file: The world councils by Ian Paysley.webp
2025-05-11 03:03:48
It can't do webp files???
2025-05-11 03:08:20
Is this buld not made with webp support?
2025-05-11 03:08:26
build
2025-05-11 03:15:27
Hoew retarded is that..... if it does not support webp
2025-05-11 03:22:35
It literally heals some of the jpg damage
2025-05-11 03:22:54
2025-05-11 03:23:04
2025-05-11 03:23:38
Much of the jpeg noise is gone.
2025-05-11 03:34:13
So is there a way to combile it with webp support?
RaveSteel
2025-05-11 04:09:26
No, supporting webp would require coding effort on your part
JesusGod-Pope666.Info
2025-05-11 04:34:49
sucks
2025-05-11 04:35:26
how can a so popular format not be supported.
2025-05-11 04:35:35
is png not lossless?
2025-05-11 04:36:37
for i in *.webp; do ((current++)); echo "Processing the image: ${i} [$current/$total]"; dwebp "${i}" -o "new_${i%.*}.png" -lossless; echo "Processing completed: ${i} [$current/$total]"; done I thought it was lossless by default
2025-05-11 04:37:19
darkijah<@892795132531838997>-USBSSD:~/downloads/test/New Folder$ for i in *.webp; do ((current++)); echo "Processing the image: ${i} [$current/$total]"; dwebp "${i}" -o "new_${i%.*}.png"; echo "Processing completed: ${i} [$current/$total]"; done Processing the image: H264-VP9-AV1-Quality.webp [3/] Decoded H264-VP9-AV1-Quality.webp. Dimensions: 1000 x 438 . Format: lossy. Now saving... Saved file new_H264-VP9-AV1-Quality.png Processing completed: H264-VP9-AV1-Quality.webp [3/] Processing the image: The world councils by Ian Paysley.webp [4/] Decoded The world councils by Ian Paysley.webp. Dimensions: 300 x 420 . Format: lossy. Now saving... Saved file new_The world councils by Ian Paysley.png Processing completed: The world councils by Ian Paysley.webp [4/]
RaveSteel
2025-05-11 04:47:34
PNG is in 99.99% of cases lossless, yes
JesusGod-Pope666.Info
2025-05-11 04:51:13
for i in *.webp; do ((current++)); echo "Processing the image: ${i} [$current/$total]"; convert "${i}" -quality 100 "new_${i%.*}.png"; # Enforcing lossless conversion (100 quality) echo "Processing completed: ${i} [$current/$total]"; done
2025-05-11 04:51:54
ahh I guess it is the webp that is lossy.
2025-05-11 05:22:24
how do I maximised compression of png?
CrushedAsian255
JesusGod-Pope666.Info how do I maximised compression of png?
2025-05-11 05:22:45
oxipng -o max
JesusGod-Pope666.Info
2025-05-11 05:23:51
with what app?
CrushedAsian255 oxipng -o max
2025-05-11 05:24:23
a little example would be nice.
CrushedAsian255
JesusGod-Pope666.Info with what app?
2025-05-11 05:24:40
https://github.com/shssoichiro/oxipng
2025-05-11 05:24:44
It’s a command line tool
JesusGod-Pope666.Info
2025-05-11 05:29:44
Yea I kinda guessed that.
2025-05-11 05:30:50
the AVIF is 6KB better then the webp.... although not sure about the difference in the quality. Most likely not noticeble at all.
spider-mario
2025-05-11 05:43:17
FYI your console output will be better formatted (and retain its `*`) if you write it as (let’s hope I don’t mess up the nesting): ```markdown ```console for i in *.webp; do ((current++)); echo "Processing the image: ${i} [$current/$total]"; convert "${i}" -quality 100 "new_${i%.*}.png"; # Enforcing lossless conversion (100 quality) echo "Processing completed: ${i} [$current/$total]"; done ``` ```
2025-05-11 05:43:45
well, I tried
2025-05-11 05:44:06
the final triplet of ` should have been inside the block
2025-05-11 05:44:34
you can use `bash` for pure bash code or `console` when it’s a mixture of prompts, commands and program output
2025-05-11 05:44:59
this example with `bash` looks like this: ```bash for i in *.webp; do ((current++)); echo "Processing the image: ${i} [$current/$total]"; convert "${i}" -quality 100 "new_${i%.*}.png"; # Enforcing lossless conversion (100 quality) echo "Processing completed: ${i} [$current/$total]"; done ```
JesusGod-Pope666.Info
2025-05-11 06:03:16
*Processing the image: 01-01111TEXT.bmp [13/] Unrecognized file format for input file: 01-01111TEXT.bmp Cannot read input file: 01-01111TEXT.bmp Processing completed: 01-01111TEXT.bmp [13/] Processing the image: 01-1111TEXT.bmp [14/] Unrecognized file format for input file: 01-1111TEXT.bmp Cannot read input file: 01-1111TEXT.bmp Processing completed: 01-1111TEXT.bmp [14/] Processing the image: 01 - text.bmp [15/] Unrecognized file format for input file: 01 - text.bmp Cannot read input file: 01 - text.bmp Processing completed: 01 - text.bmp [15/] *
2025-05-11 06:22:29
compile this and that and what not.
Fab
2025-05-11 06:27:01
https://www.vanityfair.it/article/elmira-35-anni-mamma-avvocato-non-ho-mai-smesso-del-tutto-di-lavorare-mi-hanno-detto-che-ero-pazza-fatto-per-non-andare-fuori-di-testa
JesusGod-Pope666.Info
2025-05-11 07:09:21
2025-05-11 07:13:22
stinking linux. Always always and more always
2025-05-11 07:14:10
2025-05-11 07:42:53
What is this memory thing..... that seems a lot.
2025-05-11 07:43:05
2025-05-11 07:43:34
Size in memory
2025-05-11 07:43:40
300 mb
jonnyawsom3
2025-05-11 08:04:50
Compressed images still have to be decompressed before they can be viewed, so they require Width x Height x Bitdepth (Total, not per channel)
gb82
2025-05-11 11:39:44
<@794205442175402004> how does Cloudinary resize images? I’ve seen NN resizing stuff but I don’t know if any of it is used in practice
2025-05-11 11:39:50
Like: https://github.com/Fivefold/SRCNN
_wb_
2025-05-12 05:48:01
We use a few different ones, all classic ones for downscaling (mostly just Lanczos or Mitchell, though we also have a fancier detail-preserving downscale method). For upscaling we have some AI stuff but I don't know any details.
Meow
2025-05-12 06:07:37
I don't know if there's any image hosting service offering upscaling
gb82
_wb_ We use a few different ones, all classic ones for downscaling (mostly just Lanczos or Mitchell, though we also have a fancier detail-preserving downscale method). For upscaling we have some AI stuff but I don't know any details.
2025-05-12 06:41:27
any of the downscales proprietary?
_wb_
gb82 any of the downscales proprietary?
2025-05-12 06:50:01
I implemented two downscalers for Cloudinary that are not (or not yet?) open sourced, one is just Mitchell in linear RGB with some post-sharpening so you could do something pretty similar with imagemagick, the other is a fancier detail-preserving method.
gb82
2025-05-12 06:50:23
both seem very cool, that's interesting!
spider-mario
gb82 <@794205442175402004> how does Cloudinary resize images? I’ve seen NN resizing stuff but I don’t know if any of it is used in practice
2025-05-12 08:37:49
“neural” would be less ambiguous than “NN” which for resizing could mean “nearest neighbour”
JesusGod-Pope666.Info
2025-05-12 08:53:55
why is it saying that the AVIF images are 16 bit and the originals are 8 bit?
2025-05-12 08:54:03
Like I thought I did 10 bit.....
2025-05-12 08:54:11
Like this is a mess of confusion.
2025-05-12 08:55:35
2025-05-12 08:55:57
Like first one says 8 bit and the next says 16 bit
A homosapien
2025-05-12 08:57:26
That's the canvas, the 10 bit image is displayed on a 16-bit canvas
JesusGod-Pope666.Info
2025-05-12 09:01:53
aha.....
2025-05-12 09:02:07
so even if I did 8 bit the AVIF would 16bit canvas.
2025-05-12 09:02:35
so whether 8 10 or 12 it would show it as 16 bit canvas
2025-05-12 09:02:45
2025-05-12 09:03:09
By the way, 3 different images and yet each of them take the same size in the memory - apparently.
2025-05-12 09:03:26
303.1MB
2025-05-12 09:04:02
I guess it is as it is.... the images are bigger then the usual images I have in resolution so..... But still surprised it would take so much - maybe it is only when it is in Gimp.
2025-05-12 09:04:11
like if it stores it in the RAM that is a lot.
2025-05-12 09:05:09
oh well... we sure use a lot of RAM these days overall.
2025-05-12 09:05:46
In ever thought I would use 24GB of RAM, but lo and behold....
2025-05-12 09:08:09
damian101
_wb_ I implemented two downscalers for Cloudinary that are not (or not yet?) open sourced, one is just Mitchell in linear RGB with some post-sharpening so you could do something pretty similar with imagemagick, the other is a fancier detail-preserving method.
2025-05-12 09:36:08
If you are willing to provide a source image and target resolution(s), I'd love to demonstrate my own fancy detail-preserving downscaling method, which I think works extremely well. I wonder if it's a similar approach...
JesusGod-Pope666.Info
2025-05-12 10:50:44
Some sizes test from the originals to AVIF
2025-05-12 10:59:47
https://www.youtube.com/watch?v=R2ZWzaNCEVU
2025-05-12 11:08:18
my biggest concern was the size of the files but 8 bit and 10 bit with the things I have on, the 10 bit are the smaller ones.
2025-05-12 11:11:39
So the canvas is able to do 16 bit but the highest is 12 bit for avif and av1 and we can't even comprehend the many colors in 12 bit if used..... am I getting this correct?
damian101
JesusGod-Pope666.Info my biggest concern was the size of the files but 8 bit and 10 bit with the things I have on, the 10 bit are the smaller ones.
2025-05-12 11:21:18
Yes, 8-bit all-intra aomenc has some special optimizations that tend to produce larger files. 10- and 12-bit AVIF should be very similar in size, though...
JesusGod-Pope666.Info
Yes, 8-bit all-intra aomenc has some special optimizations that tend to produce larger files. 10- and 12-bit AVIF should be very similar in size, though...
2025-05-12 11:21:57
Ahhh, okay - yea well I absolutely want the smallest files and getting the positive things of 10 bit as well then.
2025-05-12 11:22:29
I have not tried 12 bit to check what I get, but I did note bigger files at 8 bit which I was surprised about.
damian101
JesusGod-Pope666.Info Ahhh, okay - yea well I absolutely want the smallest files and getting the positive things of 10 bit as well then.
2025-05-12 11:23:43
Well, you want efficiency, size or quality is regulated through the user parameter. But 10-bit is more efficient for lossy encoding.
JesusGod-Pope666.Info
2025-05-12 11:24:44
Yea I am doing lossy encoding.
2025-05-12 11:25:03
Like 1/10 of the original sources for a lot of files. very good.
2025-05-12 11:25:23
I did go from 50 to 60 as there was some square box issues.
2025-05-12 11:25:42
I think 60 quality takes care of them all, at least not seen any as for yet.
2025-05-12 11:27:39
What would you gain with 12 bit encoding, anything at all?..... Like if you are going from jpeg which apparently is 8 bit to 12 bit probably would do nothing I guess..... I have not checked any loading times yet.
damian101
JesusGod-Pope666.Info So the canvas is able to do 16 bit but the highest is 12 bit for avif and av1 and we can't even comprehend the many colors in 12 bit if used..... am I getting this correct?
2025-05-12 11:29:35
Undithered 10-bit still produces some very subtle banding, which 12-bit would prevent. However, considering you're probably doing some substantially lossy encoding, those extremely subtle banding artifacts probably aren't very relevant. More importantly, most image viewers don't dither, and most people only have 8-bit screens, in which case all benefits of 12-bit encoding are practically eliminated anyway. What is relevant, however, is that 10-bit AVIF is easier to decode than 12-bit AVIF.
JesusGod-Pope666.Info Like 1/10 of the original sources for a lot of files. very good.
2025-05-12 11:29:58
Definitely use 10-bit then.
JesusGod-Pope666.Info
2025-05-12 11:31:03
Hmmm yea okay. Would be interesting to see if 12 bit would make any bigger loading time overall on the website..... But yea 10 But seems to be the way.
damian101
JesusGod-Pope666.Info What would you gain with 12 bit encoding, anything at all?..... Like if you are going from jpeg which apparently is 8 bit to 12 bit probably would do nothing I guess..... I have not checked any loading times yet.
2025-05-12 11:31:05
Minimally better preservation of smooth gradients. And only perceptible if your image viewer dithers or you're viewing on a high bit depth monitor.
JesusGod-Pope666.Info
2025-05-12 11:31:40
Yea okay.... Probably not going to happen.
damian101
2025-05-12 11:32:51
Web browsers don't dither high bit depth images to 8-bit. So, yeah, 10-bit is the way to go here. Or 8-bit for maximum compatibility I guess.
JesusGod-Pope666.Info
2025-05-12 11:32:58
Many of the screenshots is low quality material as well.... Overall.... But just for fun I would like to test the 12 bit for the website. If any decoding difference can be felt.
2025-05-12 11:34:03
I could do 85 Q but for my website.... I don't think it is even needed.
2025-05-12 11:34:36
Like rather have some faster speed bandwidth then higher quality.
damian101
2025-05-12 11:34:40
Wait, what settings do you use? Just wanna see if those could be improved.
JesusGod-Pope666.Info
2025-05-12 11:35:00
Here is my latest upload: http://jesusgod-pope666.info/images.php
Wait, what settings do you use? Just wanna see if those could be improved.
2025-05-12 11:35:41
If you can wait 5 minutes, I am on the Pope throne at the moment 🙂
2025-05-12 11:37:06
I am still looking into making an input output folder thing like I have working for subtitles app terminal thing.
2025-05-12 11:41:23
find . \( -iname "*.png" -o -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.bmp" \) \ | parallel avifenc -a tune=iq -q 60 -d 10 -y 444 -s 0 --ignore-xmp --ignore-exif {} {.}.avif
2025-05-12 11:41:44
I don't think bmp is supported so probably going to take that off.
2025-05-12 11:42:50
---
2025-05-12 11:43:09
for i in *.{png,jpg,jpeg,bmp}; do ((current++)); echo "Processing the image: ${i} [$current/$total]"; avifenc -a tune=iq -q 60 -d 10 -y 444 -s 0 --ignore-xmp --ignore-exif "${i}" "new_${i%.*}.avif"; echo "Processing completed: ${i} [$current/$total]"; done
2025-05-12 11:43:20
again bmp should probably be removed.
2025-05-12 11:43:38
no idea why avifenc would not support standard images, kinda sucks.
2025-05-12 11:43:44
like webp and bmp
Wait, what settings do you use? Just wanna see if those could be improved.
2025-05-12 11:45:13
avifenc -a tune=iq -q 60 -d 10 -y 444 -s 0 --ignore-xmp --ignore-exif "${i}" "new_${i%.}.avif"
2025-05-12 12:06:52
anyone know how to search for specific files like in windows *.avif - how you do it in linux in thunder filemanager.
damian101
JesusGod-Pope666.Info avifenc -a tune=iq -q 60 -d 10 -y 444 -s 0 --ignore-xmp --ignore-exif "${i}" "new_${i%.}.avif"
2025-05-12 12:10:21
Looks good, but you might want to consider using -s 1 as it's much faster but performs pretty much the same at good quality. Also, you might want to use `-y 420 --sharpyuv` instead of -y 444. Will probably give mixed results regarding efficiency, but will make decoding twice as fast.
JesusGod-Pope666.Info
2025-05-12 12:11:05
Not sure about that.... someone said to use 444. And it seems to be the full flavour...... Although as I understand it makes files smaller.
2025-05-12 12:11:36
Speed is lessor of concern but I have not tried 1 compared to 0.... I could check that out.
2025-05-12 12:11:48
My computer is already so slow so it takes forever 😛
2025-05-12 12:12:02
1 is just faster in encoding correct?
2025-05-12 12:12:08
not decoding.
damian101
JesusGod-Pope666.Info 1 is just faster in encoding correct?
2025-05-12 12:12:11
right
JesusGod-Pope666.Info
2025-05-12 12:12:19
rogher.
2025-05-12 12:12:23
what is sharpyuv?
damian101
JesusGod-Pope666.Info what is sharpyuv?
2025-05-12 12:13:25
It performs better chroma subsampling, scaling in linear RGB instead of doing that directly on the chroma planes.
2025-05-12 12:14:30
Resulting in 4:2:0 subsampling that looks much closer to 4:4:4 than you would normally get.
JesusGod-Pope666.Info
2025-05-12 12:19:38
okay, dunno.... hard to know all the different stats.
2025-05-12 12:23:33
I'll try the speed of -1 and see how it goes and the output.
Looks good, but you might want to consider using -s 1 as it's much faster but performs pretty much the same at good quality. Also, you might want to use `-y 420 --sharpyuv` instead of -y 444. Will probably give mixed results regarding efficiency, but will make decoding twice as fast.
2025-05-12 12:27:36
I am not sure the decoding is the issue overall, it seems to go pretty quick on those levels.
2025-05-12 12:28:18
Overall on my website the biggest issue seems to be getting the data down - the decoding seems to go pretty speedely after it has downloaded the 200 images.
2025-05-12 12:28:58
and I am running slow devices.... but overall as far as I can see it is the data stream that is the issue, how much it has to download.
2025-05-12 12:29:55
for i in *.{png,jpg,jpeg,bmp}; do ((current++)); echo "Processing the image: ${i} [$current/$total]"; avifenc -a tune=iq -q 60 -d 10 -y 420 --sharpyuv -s 1 --ignore-xmp --ignore-exif "${i}" "new_${i%.*}.avif"; echo "Processing completed: ${i} [$current/$total]"; done So this would be closer to what you would want?
2025-05-12 12:31:05
I don't know.... I did see something about 444 and it seemed to be better on getting the right colors.
2025-05-12 12:31:17
does sharpquv work on all levels
damian101
JesusGod-Pope666.Info Overall on my website the biggest issue seems to be getting the data down - the decoding seems to go pretty speedely after it has downloaded the 200 images.
2025-05-12 12:34:11
sure, but that of course very much depends on the decoding hardware
JesusGod-Pope666.Info
2025-05-12 12:34:33
yea but i am on really low hardware, and it still seems pretty good.
damian101
JesusGod-Pope666.Info I don't know.... I did see something about 444 and it seemed to be better on getting the right colors.
2025-05-12 12:40:30
Chroma subsampling can reduce raw image data to half with minimal loss (on natural images at least), before the actual AVIF encoding is done. And sharpyuv performs significantly better chroma subsampling. Thing is, AV1 is primarily optimized for 4:2:0 chroma subsampling, so lossy 4:4:4 encoding is often less efficient, although tune iq mitigates a lot of that.
_wb_
If you are willing to provide a source image and target resolution(s), I'd love to demonstrate my own fancy detail-preserving downscaling method, which I think works extremely well. I wonder if it's a similar approach...
2025-05-12 12:48:59
these type of images are good test images for detail-preserving downscaling.
2025-05-12 12:49:06
https://upload.wikimedia.org/wikipedia/commons/6/60/Thrift_Store_Express_Jeans.jpg
2025-05-12 12:49:37
this is what my method does with it: https://res.cloudinary.com/jon/image/fetch/w_300,f_png,q_100/https://upload.wikimedia.org/wikipedia/commons/6/60/Thrift_Store_Express_Jeans.jpg
2025-05-12 12:49:48
(when downscaling to 300 px wide)
2025-05-12 12:50:40
compared to simple lanczos downscaling, which produces something like this: https://res.cloudinary.com/demo/image/fetch/w_300,f_png,q_100/https://upload.wikimedia.org/wikipedia/commons/6/60/Thrift_Store_Express_Jeans.jpg
JesusGod-Pope666.Info
2025-05-12 02:22:19
Not sure I need downscaling as it is for now.
Chroma subsampling can reduce raw image data to half with minimal loss (on natural images at least), before the actual AVIF encoding is done. And sharpyuv performs significantly better chroma subsampling. Thing is, AV1 is primarily optimized for 4:2:0 chroma subsampling, so lossy 4:4:4 encoding is often less efficient, although tune iq mitigates a lot of that.
2025-05-12 02:22:58
chroma subsampling is what is used by standard and what I am using at the moment?
damian101
JesusGod-Pope666.Info chroma subsampling is what is used by standard and what I am using at the moment?
2025-05-12 02:28:40
Since you specified `-y 444`, there is no chroma subsampling. Which is great for some types of images, or near-transparent target quality, but for your usecase, `-y 420 --sharpyuv` (4:2:0 subsampling means half resolution on the chroma planes) will probably perform slightly better overall, with the benefit of better decoding speed.
2025-05-12 02:29:10
Not sure what the default is with avifenc.
RaveSteel
2025-05-12 02:31:03
``` -y,--yuv FORMAT : Output format, one of 'auto' (default), 444, 422, 420 or 400. Ignored for y4m or stdin (y4m format is retained) For JPEG, auto honors the JPEG's internal format, if possible. For grayscale PNG, auto defaults to 400. For all other cases, auto defaults to 444 ```
JesusGod-Pope666.Info
Since you specified `-y 444`, there is no chroma subsampling. Which is great for some types of images, or near-transparent target quality, but for your usecase, `-y 420 --sharpyuv` (4:2:0 subsampling means half resolution on the chroma planes) will probably perform slightly better overall, with the benefit of better decoding speed.
2025-05-12 02:33:08
Going to make a test folder run. going to take some hours on my computer. but it is producing something at the moment.
damian101
_wb_ this is what my method does with it: https://res.cloudinary.com/jon/image/fetch/w_300,f_png,q_100/https://upload.wikimedia.org/wikipedia/commons/6/60/Thrift_Store_Express_Jeans.jpg
2025-05-12 04:12:22
here's mine:
2025-05-12 04:29:33
I really liked this one for testing downscaling
2025-05-12 04:44:31
half-resolution version
AccessViolation_
_wb_ this is what my method does with it: https://res.cloudinary.com/jon/image/fetch/w_300,f_png,q_100/https://upload.wikimedia.org/wikipedia/commons/6/60/Thrift_Store_Express_Jeans.jpg
2025-05-12 05:42:55
ooo, is that at all similar to this? I was thinking about this earlier https://discord.com/channels/794206087879852103/794206087879852106/1370349223173951518
2025-05-12 05:43:24
the goal, for context https://cdn.discordapp.com/attachments/794206087879852106/1370338905995608114/image.png?ex=6823178e&is=6821c60e&hm=e2408b1cdbe29795e14f30f7ef9f983390a1e83e521bed335bad79d1611e1986&
_wb_
2025-05-12 06:15:20
My method basically attempts to preserve not just the average pixel value of each region that gets downscaled into a single pixel, but also the local stdev. Or at least it goes in that direction. So noise doesn't get smoothed out but gets preserved, kind of.
damian101
2025-05-12 07:02:46
My method is more fidelity-targeted. Butteraugli tends to like it more than anything else I know of. Also very sharp while staying pretty much artifact-free... <:Perfect:991312615194234981>
2025-05-12 07:03:58
The process involves a lot of Gaussian blurs and the nyquist theorem.
AccessViolation_
My method is more fidelity-targeted. Butteraugli tends to like it more than anything else I know of. Also very sharp while staying pretty much artifact-free... <:Perfect:991312615194234981>
2025-05-12 07:13:10
how do you benchmark this using butteraugli? I assume it doens't have a mode to test specifically this. how do you generate the downscaled ground truth reference?
2025-05-12 07:13:21
or am I misunderstanding how butteraugli works
damian101
AccessViolation_ how do you benchmark this using butteraugli? I assume it doens't have a mode to test specifically this. how do you generate the downscaled ground truth reference?
2025-05-12 07:13:48
Point upscale to original resolution. Of course only works properly with 1/n scale factors.
2025-05-12 07:16:07
For other scale factors I guess you could do Point upscale to a common multiple of both resolutions for comparison. 😅
2025-05-12 07:20:13
Other upscaling methods would also work, of course, but it would warp things in ways that doesn't reflect the actual viewing experience anymore, so Butteraugli score might not be representative there.
AccessViolation_
2025-05-12 07:21:40
interesting!
2025-05-12 07:23:15
thinking about it, this is sort of the opposite of what AMD FSR (the non-ai one) tries to do. take an image and upscale it using some contrast and...something else, not entirely sure how it works
2025-05-12 07:24:42
I wonder if FSR is simple enough that it can use used as an upsampling mode in JXL. or maybe a simplified version of it?
A homosapien
_wb_ this is what my method does with it: https://res.cloudinary.com/jon/image/fetch/w_300,f_png,q_100/https://upload.wikimedia.org/wikipedia/commons/6/60/Thrift_Store_Express_Jeans.jpg
2025-05-12 08:18:33
Looks like the "pop" filter in google photos
2025-05-12 08:18:48
Looks quite visually appealing not gonna lie
juliobbv
_wb_ this is what my method does with it: https://res.cloudinary.com/jon/image/fetch/w_300,f_png,q_100/https://upload.wikimedia.org/wikipedia/commons/6/60/Thrift_Store_Express_Jeans.jpg
2025-05-12 08:25:55
interesting! have you tried downscaling stills with film grain? does it make the film grain bigger to preserve variance?
2025-05-12 08:26:30
I see that the denim texture features become "coarser" after downscale
Mine18
AccessViolation_ I wonder if FSR is simple enough that it can use used as an upsampling mode in JXL. or maybe a simplified version of it?
2025-05-12 08:40:31
FSR 1 is a tuned Lanczos, why not use Lanczos?
_wb_
juliobbv interesting! have you tried downscaling stills with film grain? does it make the film grain bigger to preserve variance?
2025-05-12 08:43:10
It preserves local variance so something like a sky with photon noise will downscale to something that still looks like a sky with photon noise, instead of a smoothed out version of the sky. Whether that is a good thing or a bad thing of course depends on your needs/expectations.
juliobbv
_wb_ It preserves local variance so something like a sky with photon noise will downscale to something that still looks like a sky with photon noise, instead of a smoothed out version of the sky. Whether that is a good thing or a bad thing of course depends on your needs/expectations.
2025-05-12 08:47:37
this makes sense, thanks
_wb_
2025-05-12 08:49:54
It's of course physically incorrect in a way, since it is equivalent to making the size photon noise a lot larger in terms of original image dimension pixel area. But then again it often does work to better convey the real texture
juliobbv
2025-05-12 08:50:42
indeed, there's a tradeoff between feature size and energy preservation
2025-05-12 08:51:17
the reason this caught my attention is because surprisingly, a similar phenomenon happens in video encoding with film grain retention
_wb_
2025-05-12 08:51:46
It's a bit like how NN resampling can look sharper than better downsampling methods — except with NN you will often get aliasing issues and you're just throwing away lots of data. My method avoids aliasing better and does use all data.
juliobbv
2025-05-12 08:51:49
it's overall better to make the film grain appear "bigger" as you approach the lower bitrate end in order to preserve overall energy, instead of fully collapsing it into flat blocks due to too harsh quantization into the high frequency coeff area
_wb_
2025-05-12 08:58:40
It's the trade-off between pretending you keep the camera where it is and the resulting photo as it is and just increase the viewing distance (that's what usual downscaling does), and pretending the camera is further away so the photo is different and the region of interest becomes smaller so you crop it — then things like film grain and photon noise (and maybe also some of the texture of the actual scene) will be different than in the case of just going further away from the image.
2025-05-12 08:59:09
I think
juliobbv
2025-05-12 09:00:51
yeah, I can follow the train of thought here
lonjil
2025-05-12 09:01:47
I hope you can open source your fancier detail preserving downscaler at some point!
juliobbv
2025-05-12 09:02:25
that said, for more extreme downscaling (>2x), I can see value on ramping down the strength on variance preservation
2025-05-12 09:02:45
otherwise, the resulting textures could end up being too far removed from the original
_wb_
2025-05-12 10:27:16
Yes, there's a balance there. Best is to mix both approaches a bit.
Jyrki Alakuijala
_wb_ My method basically attempts to preserve not just the average pixel value of each region that gets downscaled into a single pixel, but also the local stdev. Or at least it goes in that direction. So noise doesn't get smoothed out but gets preserved, kind of.
2025-05-13 10:43:43
if it lifts the noise from very high frequency to a lower frequency it can have semantic interpretability difference such as the thickness of thread in the cotton, or roughness for touch interpretation differences -- if I had an estore I'd just benchmark what works best (and monitoring both sales and returns)
Fab
2025-05-13 10:52:24
Let's ironize my autism
2025-05-13 10:52:26
https://www.tuttobiciweb.it/article/2025/05/13/1747124327/ciclismo-dipendenza-bradley-wiggins-tour-de-france
_wb_
Jyrki Alakuijala if it lifts the noise from very high frequency to a lower frequency it can have semantic interpretability difference such as the thickness of thread in the cotton, or roughness for touch interpretation differences -- if I had an estore I'd just benchmark what works best (and monitoring both sales and returns)
2025-05-13 11:23:09
The main thing it is trying to do is avoid the smoothing you usually get when downscaling, where any texture just becomes flat. There's no way to get around the problem that there just aren't enough pixels to preserve the original image, but some of the 'feel' can be preserved better by preserving local variance. The goal is to convey already in the product gallery page with all the thumbnails some of the texture of the full resolution image (that is on the product page you get if you click on one of the thumbnails).
2025-05-13 11:30:15
E.g. it's not unusual for some fabrics to have some texture or print pattern that is high-contrast high-frequency, and a normal downscale (say a 10x downscale that reduces a 10 Mpx image to a 0.1 Mpx thumbnail) would just completely remove that and replace it with some average color (where the average can be quite wrong if you don't do it in linear space, but that's another issue). Keeping some of that variance is 'wrong' (and can introduce problems like Moiré) but it can semantically feel more right than the usual smooth downscale.
Fab
2025-05-13 12:06:26
I prefer vp9 and av1. Jxl stuff I don't like why sorry you think I abolish the SW but is not that intention
2025-05-13 12:41:40
Unfortunately Krisna Rapana and my cousin started new activity both 5 6 yrers ago
2025-05-13 12:42:04
So YouTube is having a confusion
2025-05-13 12:42:33
Luckily me and other ocd people developed the best subliminals ever
2025-05-13 12:43:03
And libjxl now looks amazing
pekaro
2025-05-13 06:52:05
Hi! I have a question regarding jpegxl lossless mode: in modular transform the used wavelet is (a+b)/2 for the low pass with ceil/floor depending whether a or b is larger. What about high pass coeff and how you would decode this wavelet backwards? I can't reason this out because I'm trying a high pass filter bank with formula of (a-b) however I cannot reproduce the tree this way
2025-05-13 06:54:22
I'm ignoring the tendency term for now
_wb_
2025-05-13 07:45:32
high pass is just a-b (- tendency term)
2025-05-13 07:48:55
reconstruction is just a = (a+b)/2 + (a-b)/2, b = a - (a-b)
pekaro
2025-05-13 08:17:52
Tendency term is a form of lifting scheme for the wavelet right? It will lower the entropy of encoded wavelet tree comparing to a tree without it
_wb_
2025-05-13 08:28:59
The reconstruction is lossless even though there are two integer divisions by two going on there. - if a+b is even, then a-b is also even so the divisions are exact so there is no issue. - if a+b is odd, then a-b is also odd. If a>b then the rounding up of the (a+b)/2 term compensates for the rounding down of the (a-b)/2 term. Otherwise a<b (they cannot be equal or a+b would be even), and then (a-b) is negative so (a-b)/2 rounds up while (a+b)/2 is rounded down,
2025-05-13 08:32:24
And yes, the tendency is basically applying a linear interpolation prediction to the (a-b) residuals, made nonlinear by conditioning it on local monotonicity. This helps to lower the entropy in the lossless case, but most of all it makes it possible to use it in a lossy way by quantizing the highest frequencies. Without the tendency term you would get a blocky mess if you simply quantize...
2025-05-13 08:34:35
2025-05-13 08:34:45
Crop of an image compressed to 0.4 bpp using the Squeeze transform with quantization of the residuals. From left to right: 1) no tendency term at all, 2) an unconditional linear interpolation tendency term, 3) the nonlinear tendency term used in JPEG XL, 4) original image, for reference.
2025-05-13 08:38:18
no tendency term produces obvious blocking/pixelation. tendency term that is just simple linear interpolation produces obvious ringing. tendency term as it is in Squeeze better balances the artifacts: the condition helps to avoid ringing, the interpolation helps to avoid blocking.
pekaro
2025-05-13 08:40:34
thanks for the explanation! this clears a lot
2025-05-13 09:12:40
also by any chance, are there any measurements for lossless encoding bpp with and without tendency term?
_wb_
2025-05-13 09:42:16
Haven't tried that in many years; in general lossless bpp is usually lowest when not doing squeeze at all and encoding non-progressively. Should be easy enough to try it out though, just hack a libjxl where the function computing the tendency term returns 0 instead...
gb82
_wb_ this is what my method does with it: https://res.cloudinary.com/jon/image/fetch/w_300,f_png,q_100/https://upload.wikimedia.org/wikipedia/commons/6/60/Thrift_Store_Express_Jeans.jpg
2025-05-13 11:19:01
very interesting, this indeed looks like a good test image
Meow
2025-05-14 03:17:52
Yeah this `https://res.cloudinary.com/jon/image/fetch/w_300,f_png,q_100/` is a universal converter for any link!
2025-05-14 03:21:13
Pitiful that JPEG 2000 and JPEG XR aren't available but BMP (losing Alpha however) is available
2025-05-14 03:25:00
||https://res.cloudinary.com/jon/image/fetch/w_300,f_png,q_100/https://upload.wikimedia.org/wikipedia/commons/3/3f/GPT_Test_Plugsuit_High-Exposure_Type.png||
AccessViolation_
2025-05-16 12:39:36
good use for photon noise synthesis. these noise patterns come as large PNGs. if they were JXL they could've been really small
RaveSteel
2025-05-16 12:40:53
To be fair, they only weigh in at around 10kb
2025-05-16 12:42:21
The rust foundation SVG is actually much larger than the PNG noise files lmao
AccessViolation_
2025-05-16 12:42:56
It's not a lot but it adds up. depending on how many requests they serve
RaveSteel
2025-05-16 12:43:25
True, but the SVG is actually 20 times larger than the noise PNG
2025-05-16 12:43:35
crazy
AccessViolation_
2025-05-16 12:44:30
that's surprising
RaveSteel
2025-05-16 12:45:01
Actually massive
username
2025-05-16 12:59:10
the SVGs are sent to browsers as Brotli compressed although even with the size reduction from that the SVG logo still ends up being larger then the noise PNGs lol
2025-05-16 12:59:48
actually wtf the noise "PNGs" are being sent over to my browser as WebP 🤷
2025-05-16 01:00:21
they aren't even PNG files
CrushedAsian255
username they aren't even PNG files
2025-05-16 01:03:38
Probably cdn behaviour
2025-05-16 01:03:46
Try spoofing your accept header
damian101
2025-05-17 08:16:02
I need to know something: Why is center-position 1/2-factor scaling not the same for Bilinear and Box? I never understood that.
2025-05-17 08:19:02
Like, shouldn't Bilinear simply deliver the average of the four neighbouring values in this case? Just like Box?
2025-05-17 08:28:42
When downscaling a 4x4 checkerboard image ``` 1.0 0.0 1.0 0.0 0.0 1.0 0.0 1.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 1.0 ``` with Bilinear I would expect output values to be ``` 0.5 0.5 0.5 0.5 ``` But that is not the case for some reason. Top-left and bottom-right were of a visibly different shade than the other two. And the output was even visibly different between bilinear implementations (imagemagick, zimg). This all makes no sense to me.
_wb_
2025-05-17 02:10:26
Implementation details tend to be different for these things, especially in how they deal with the edges. Duplicating vs mirroring vs zeroing the edges makes a big difference, for example.
damian101
_wb_ Implementation details tend to be different for these things, especially in how they deal with the edges. Duplicating vs mirroring vs zeroing the edges makes a big difference, for example.
2025-05-17 08:19:48
Yes, I also thought of edges. But, I don't see how edges are relevant in this specific case with bilinear. Isn't every new value here the result of only four original values?
_wb_
2025-05-17 08:23:50
I would think so, but I am not sure how exactly ImageMagick etc implement it.
2025-05-17 08:25:51
What do you get when downscaling a larger checkerboard?
2025-05-17 08:32:58
I bet it has something to do with edges. If you duplicate at the edges you get ``` 1 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0 1 1 1 1 0 1 0 0 0 0 1 0 1 1 0 0 1 0 1 1 ``` which could result in the downscaled image getting higher values in the top left/bottom right pixels than in the two other pixels...
damian101
2025-05-17 08:38:28
Hmm, but I don't see why those extra values would influence anything with bilinear...
2025-05-17 08:42:42
ok, looks like I cannot reproduce with a larger checkerboard image, huh
_wb_
Hmm, but I don't see why those extra values would influence anything with bilinear...
2025-05-17 08:43:15
They shouldn't, but I wouldn't be surprised if they somehow do, if there is no special case for exactly 2x downscaling but it's all a general code path for arbitrary factors
damian101
2025-05-17 08:44:36
Either way, I still don't understand how Box downscaling looks so much better than bilinear downscaling for 1/2 scaling. The way I understand both scaling methods, output should be identical.
2025-05-17 08:45:23
https://usage.imagemagick.org/filter/#box
2025-05-17 08:53:20
Box and Triangle/Bilinear are the mathematically simplest of all scaling methods after nearest neighbour, so I want to understand at least those properly 💀
_wb_
2025-05-17 08:56:45
Yeah it's a good question. Maybe it can boil down to different conceptions of pixels: do their values correspond to the center of a small square, or to uniformly spaced sampling positions on a grid where the top left pixel is at the top left corner and the bottom right pixel is at the bottom right corner?
2025-05-17 08:57:51
The first interpretation makes the most sense to me and is how all image editors etc present images, but I think the second interpretation is also used
damian101
2025-05-17 09:05:17
Yes, I always assumed the first case.
2025-05-17 09:08:51
But, how I understand it, both box and bilinear should produce a simple average for every 2x2 pixels when doing 1/2 resolution downscaling... Assuming target sample position is in the center, which it normally is for scaling.
2025-05-17 09:09:40
However, in practice, bilinear and box look very different for this scenario.
2025-05-17 09:09:58
Box is the sharper one
2025-05-17 09:10:02
scaled in linear light
2025-05-17 09:11:01
`-colorspace RGB -filter Triangle -resize 50% -colorspace sRGB -dither FloydSteinberg -depth 8` `-colorspace RGB -filter Box -resize 50% -colorspace sRGB -dither FloydSteinberg -depth 8`
2025-05-17 09:11:11
imagemagick
2025-05-17 09:21:57
I'm starting to think it can only be the sample position...
`-colorspace RGB -filter Triangle -resize 50% -colorspace sRGB -dither FloydSteinberg -depth 8` `-colorspace RGB -filter Box -resize 50% -colorspace sRGB -dither FloydSteinberg -depth 8`
2025-05-17 09:26:40
`-distort Resize 50%` performs better than `-resize 50%` <:Thinkies:987903667388710962>
2025-05-17 09:31:31
I think I have enough of imagemagick for now...
spider-mario
2025-05-17 09:34:15
oh, yes, the documentation seems to touch on this
2025-05-17 09:34:25
> If you look along the bottom edge of the rose, you will see that the Distort Operator actually produced a better cleaner result than the Resize Operator. […] However remember that Distort is much slower than Resize, as it uses a more direct but much more complex Area Resampling technique, without the 2-pass speed optimizations that resize uses.
2025-05-17 09:34:43
https://usage.imagemagick.org/resize/#distort_resize
2025-05-17 09:34:56
TIL
2025-05-17 09:35:16
brb I’m going to reprocess all the images I’ve ever applied `-resize` on
damian101
I'm starting to think it can only be the sample position...
2025-05-17 09:40:57
No, that is definitely always center, I just tried non-center, and everything was visibly shifted.
spider-mario
2025-05-17 09:49:10
for downsizing, I’m not actually sure `Distort` is better
2025-05-17 09:49:16
the result of `resize` seems sharper
damian101
2025-05-18 06:47:43
well, it's a very small difference anyway, and I only tested with bilinear
2025-05-18 07:41:00
Looks like almost all the bilinear scaling out there has little to do with bilinear interpolation, first step appears to be triangle-shape convolution over +- 2 px distance.
2025-05-18 07:41:22
Which explains the blurriness, of course...
Looks like almost all the bilinear scaling out there has little to do with bilinear interpolation, first step appears to be triangle-shape convolution over +- 2 px distance.
2025-05-18 07:53:09
So, something like 2 - |(x - x0)| * 2 - |(y - y0)| to get all the relative weights for the neighboring 4x4 pixels.
_wb_
2025-05-18 07:55:11
I think anything where the kernel weight computation only involves linear stuff could be called "bilinear", just like "bicubic" can mean a huge amount of different things that only share the use of ^3
2025-05-18 07:58:04
https://www.cs.utexas.edu/~fussell/courses/cs384g-fall2013/lectures/mitchell/Mitchell.pdf
2025-05-18 07:58:50
damian101
2025-05-18 07:59:38
Right, bilinear is fine as a term, actually... Not sure about bilinear interpolation, though... Because that's not really what happens.
2025-05-18 08:00:00
Bilinear filtering?
_wb_ https://www.cs.utexas.edu/~fussell/courses/cs384g-fall2013/lectures/mitchell/Mitchell.pdf
2025-05-18 08:01:18
dang, that's old <:woag:1070464147805970432>
_wb_
2025-05-18 08:01:35
I guess often it's seen from the perspective of upsampling, where it's interpolation. When downsampling, "decimation" is sometimes used which kind of makes sense
dang, that's old <:woag:1070464147805970432>
2025-05-18 08:02:31
SIGGRAPH'88, lol
DZgas Ж
2025-05-18 08:05:20
It's good that I live in 2050, because they're discussing interpolation using algorithms from 50 years ago again. box (fant) is really better for downscale, but for video I use spline36. there are fewer artifacts than lanzcos and fewer blures than bicubic. for 1080p -> 720, this is ideal. but box is better with pictures, there are zero artifacts, only problems of subjective perception, which makes the picture seem not so clear. but its perfect, though.
2025-05-18 08:12:48
The main issue is that the image viewing will not occur at the same size, pixel by pixel, making the selection of algorithms extremely useless and meaningless. The image will still be rescaled using some bilinear method, after which the artifacts from Lanczos will be much more noticeable, and the blur from bicubic will be quite apparent. The second problem is compression... Even effectively using Lanczos when sending content that is not art to a place with high compression, such as Telegram. Despite being able to use a perfect 1280x1280 canvas and guarantee quality, smooth, perfect box pieces will simply compress more. Although with Lanczos, due to artifacts, there will be more information at the edges of objects...
2025-05-18 08:15:22
box is better for stickers because webp does it better. and for jpeg, lanzcos or bicubic is better, in order to provoke the encoder to give out more information on the current quality parameter.
2025-05-18 08:18:27
i also use Hanning interpolation for downscale
2025-05-18 08:21:19
but there are still no solutions. if it is possible not to interpolate, don't do it. or make sure that the size is reduced at least 2 times. then it has a profit. and it definitely doesn't have blure because of the concentration of information. Then it's just a matter of what type of artifacts are acceptable to you personally.
Mine18 FSR 1 is a tuned Lanczos, why not use Lanczos?
2025-05-18 08:23:57
lanczos is a tuned bicubic...... the difference in the shape of the window
spider-mario
2025-05-18 08:26:27
Lanczos is based on sinc, not bicubic
damian101
2025-05-18 08:28:35
yeah...
2025-05-18 08:28:46
only 2-tap Lanczos is Cubic-like.
2025-05-18 08:29:12
Should be pretty close to Catmull-Rom I think...
DZgas Ж It's good that I live in 2050, because they're discussing interpolation using algorithms from 50 years ago again. box (fant) is really better for downscale, but for video I use spline36. there are fewer artifacts than lanzcos and fewer blures than bicubic. for 1080p -> 720, this is ideal. but box is better with pictures, there are zero artifacts, only problems of subjective perception, which makes the picture seem not so clear. but its perfect, though.
2025-05-18 08:30:48
I mostly see horrible compression artifacts in the second pic...
DZgas Ж
spider-mario Lanczos is based on sinc, not bicubic
2025-05-18 08:40:58
Yes, that's right, true, you caught me—this is exactly where I went wrong.
2025-05-18 08:45:14
When FSR was released, I thought, "Finally, they've made madVR NGU available for everyone." But no, that's not the case... madVR NGU Sharp still remains an interpolation performed using arcane tricks that have been around for 10 years, and no one has even come close to matching it.
damian101
2025-05-18 08:52:18
What is this madVR thing, actually?
DZgas Ж
2025-05-18 08:53:52
algorithms that were created a long time ago, but still can work even better than neural networks. This is just —Spline-S —Ngu sharp their whole problem is commerce, they sell the first one, and you can only see his work by stealing. and the second one is closed, although it is free, it is written on DirectX shaders.
What is this madVR thing, actually?
2025-05-18 08:55:22
mpc-hc addon
damian101
2025-05-18 08:56:01
I use ewa_ginseng for upscaling...
DZgas Ж
I use ewa_ginseng for upscaling...
2025-05-18 08:56:32
What?
damian101
DZgas Ж What?
2025-05-18 09:10:47
in mpv
DZgas Ж
in mpv
2025-05-18 09:41:09
in mpv I also use FSR
spider-mario
well, it's a very small difference anyway, and I only tested with bilinear
2025-05-18 10:21:59
in my testing so far (for 800% upscaling), I think my preference goes to `-filter Jinc -define filter:support 8 -distort Resize 800%x800%`
2025-05-18 10:22:56
(but not for downscaling – I haven’t determined which one I prefer for that yet, but that’s likely not it)
spider-mario in my testing so far (for 800% upscaling), I think my preference goes to `-filter Jinc -define filter:support 8 -distort Resize 800%x800%`
2025-05-18 04:38:38
on second thought, maybe `-resize` instead of `-distort Resize` – tends to be less artifacty
gb82
2025-05-20 06:09:48
<@794205442175402004> im back with my cloudinary question of the week, hah libjxl uses highway so I guess this is less relevant, but do you know if all the server hardware you use for encoding is AVX-512?
2025-05-20 06:10:01
or AVX2 at least, maybe?
_wb_
2025-05-20 06:14:32
Yeah it's avx-512 but we are compiling libjxl without it because we suspect there might be bugs specifically triggered by avx-512 (since the well-tested simd variants are all less wide). The speed difference between avx2 and avx-512 doesn't justify such risks right now.
gb82
_wb_ Yeah it's avx-512 but we are compiling libjxl without it because we suspect there might be bugs specifically triggered by avx-512 (since the well-tested simd variants are all less wide). The speed difference between avx2 and avx-512 doesn't justify such risks right now.
2025-05-20 06:18:38
would this be a libjxl issue or a highway issue? iirc the highway SIMD intrinsics are platform/extension agnostic?
_wb_
2025-05-20 06:32:33
No idea, could be there is no issue at all in libjxl but we did see some bad behavior in jpegli and the HDR tone mapping tools that come with libjxl when compiling with avx512. Could be a question of insufficient padding or something like that (some accidental assumption that 8x32 bits of padding is enough), or some bug in highway or in clang, I dunno. We haven't bothered yet to investigate.
gb82
2025-05-20 06:45:39
Interesting
AccessViolation_
2025-05-23 05:42:48
this is a really cool video https://www.youtube.com/watch?v=xDLxFGXuPEc
2025-05-23 05:44:14
it's about blurring, and de-blurring by dividing the image by the blur kernel instead of multiplying it
2025-05-23 05:44:52
it makes sense that it's possible in hindsight but I never would have thought this was possible before, I thought blurring was a strictly destructive process
jonnyawsom3
2025-05-23 05:56:30
We watched it together in the Voice Channel this morning "Hey I know this part!"
AccessViolation_
2025-05-23 06:01:39
oh nice :D
_wb_
2025-05-23 09:56:46
Sharpening is just the opposite of blurring, but information does still get lost and you cannot sharpen back detail in regions that are smoothed to oblivion...
juliobbv
AccessViolation_ this is a really cool video https://www.youtube.com/watch?v=xDLxFGXuPEc
2025-05-23 10:12:31
I see that Technology Connections guy has a new channel 🤔
jonnyawsom3
2025-05-23 10:14:55
Huh, never noticed that before
AccessViolation_
_wb_ Sharpening is just the opposite of blurring, but information does still get lost and you cannot sharpen back detail in regions that are smoothed to oblivion...
2025-05-23 10:51:56
I suspect the reason that if you blur too hard you won't be able to recover detail eventually, is because of quantization?
2025-05-23 10:53:52
e.g. if your data theoretically is real numbers without precision limits it doesn't matter how strong the blur is, and you'll always be able to recover it
2025-05-23 10:54:50
actually, no, because a very strong blur over the whole image could turn every pixel the same...
2025-05-23 10:57:32
or could it? maybe it depends on the blur implementation too. it's hard for me to reason about, I can't see at which point the blurring is too much and data becomes unrecoverable
Lumen
AccessViolation_ actually, no, because a very strong blur over the whole image could turn every pixel the same...
2025-05-23 11:08:56
not possible
2025-05-23 11:08:58
this is infinite sigma
2025-05-23 11:09:21
a gaussian blur is by its nature invertible (without precision issue)
2025-05-23 11:09:25
to visualize it
2025-05-23 11:09:35
you can see the FFT effect of a gaussian blur
2025-05-23 11:09:47
basically multiplying by a gaussian kernel the FFT
2025-05-23 11:09:53
you can completely revert these factors
2025-05-23 11:10:14
and well, infinite sigma is different since you cannot divide by 0
AccessViolation_
2025-05-23 11:10:14
ahh I understand. neat
_wb_
2025-05-24 08:10:31
In practice though, you use a convolution kernel that is small and a precision that is finite.
spider-mario
Lumen not possible
2025-05-24 09:32:11
well, not possible if you want to call it a gaussian blur, but definitely possible to blur an image in that way
Jyrki Alakuijala
Lumen a gaussian blur is by its nature invertible (without precision issue)
2025-05-24 10:03:45
Math yes, in engineering no
Lumen
2025-05-24 10:04:23
I was answering a theoritical question indeed ^^
damian101
AccessViolation_ it makes sense that it's possible in hindsight but I never would have thought this was possible before, I thought blurring was a strictly destructive process
2025-05-24 06:50:41
It is in practice due to precision loss.
AccessViolation_
2025-05-24 09:55:08
yep yep
2025-05-24 09:57:02
I think averaging all pixels is my preferred way of blurring sensitive information. second is black bar, but can look too out of place
2025-05-24 09:58:05
I wonder how Signal's face blurring feature works. If it's reversible then maybe I should create an issue ^^
spider-mario
2025-05-24 10:38:38
I tend to use GIMP’s “Pixelize” filter
2025-05-24 10:38:55
adjusting the block size until it looks “right but not leaking too much”
AccessViolation_
2025-05-24 11:28:45
there are machine learning models (one from Google I believe) that can reconstruct faces from non-scrambling pixelating filters, and there are also tools for recovering the original text from pixelated segments in screenshots. you can possibly also recover the text from a small segment where all pixels are averaged, though thankfully there are only 256 shades of gray in most screenshots so while I wouldn't hide someone's name that way - the length of the name alone might even be a good enough giveaway if the font isn't monospaced - it's probably fine for longer snippets of text
lonjil
AccessViolation_ there are machine learning models (one from Google I believe) that can reconstruct faces from non-scrambling pixelating filters, and there are also tools for recovering the original text from pixelated segments in screenshots. you can possibly also recover the text from a small segment where all pixels are averaged, though thankfully there are only 256 shades of gray in most screenshots so while I wouldn't hide someone's name that way - the length of the name alone might even be a good enough giveaway if the font isn't monospaced - it's probably fine for longer snippets of text
2025-05-27 06:55:58
Are they better than this?
Meow
2025-05-28 02:20:19
R-c-st learning
damian101
2025-05-28 04:51:47
Why can't I decode this file with JxrDecApp? https://cdn.discordapp.com/attachments/615105639567589376/1376816652687118336/Screenshot_2025-05-26_00-24-30_058.jxr
2025-05-28 04:54:39
I always get an ``` *** ERROR: Unsupported format in JPEG XR *** ```
2025-05-28 04:55:11
even with the exact example command
jonnyawsom3
Why can't I decode this file with JxrDecApp? https://cdn.discordapp.com/attachments/615105639567589376/1376816652687118336/Screenshot_2025-05-26_00-24-30_058.jxr
2025-05-28 05:07:07
How did you get the file?
damian101
How did you get the file?
2025-05-28 05:07:24
someone on the AV1 discord posted it
jonnyawsom3
2025-05-28 05:13:36
I vaguely recall NVIDIA software creating JXRs that were either unreadable, or only via Windows and not the reference library. Can't remember any details though
damian101
I vaguely recall NVIDIA software creating JXRs that were either unreadable, or only via Windows and not the reference library. Can't remember any details though
2025-05-28 05:24:35
that would make a lot of sense...
2025-05-28 05:25:23
Windows Photo viewer can show them
2025-05-28 05:27:46
it appears to be a screenshot
2025-05-28 05:27:57
so that fits
RaveSteel
2025-05-28 05:50:42
The JxrDecApp does not always automatically choose the correct pixel format. You can try specifying manually
2025-05-28 05:54:03
But some JXRs cannot be decoded at all by JxrDecApp
_wb_
2025-05-28 08:00:04
Those jxr cli tools are extremely brittle and annoying to use
2025-05-28 08:01:52
I think they were made just because they needed some reference implementation when they were rubberstamping wdp into a jpeg standard, so they quickly made something that somewhat worked and then abandoned it completely.
Quackdoc
2025-05-29 01:26:06
I just use magick lol
Meow
2025-05-29 05:50:42
jxrlib even can't read PNG
Quackdoc
2025-05-29 06:15:38
tiff and BMP are all a man needs
novomesk
Why can't I decode this file with JxrDecApp? https://cdn.discordapp.com/attachments/615105639567589376/1376816652687118336/Screenshot_2025-05-26_00-24-30_058.jxr
2025-05-30 07:40:12
converted via nomacs on Windows.
jonnyawsom3
2025-05-30 07:42:32
Huh, interesting image... Also massively blown out as the AVIF
2025-05-30 07:43:17
Mine18
novomesk converted via nomacs on Windows.
2025-05-30 01:19:42
hey, could you show me how to get the file conversion preview for nomacs? like the one demonstrated here? https://github.com/nomacs/nomacs/issues/292#issuecomment-644237409
Quackdoc
Huh, interesting image... Also massively blown out as the AVIF
2025-05-30 01:47:46
the source image is a scRGB image
2025-05-30 01:47:51
so that is to be expected to some extent
Why can't I decode this file with JxrDecApp? https://cdn.discordapp.com/attachments/615105639567589376/1376816652687118336/Screenshot_2025-05-26_00-24-30_058.jxr
2025-05-30 01:51:12
wait, how *did* you try to decode it?
novomesk
Mine18 hey, could you show me how to get the file conversion preview for nomacs? like the one demonstrated here? https://github.com/nomacs/nomacs/issues/292#issuecomment-644237409
2025-05-30 01:51:47
Use "Save As" from File menu and the preview appears after typing filename and selecting type. Note: not all formats have the preview dialog.
Quackdoc
2025-05-30 02:03:26
interesting, magick identify reads it as a srgb image ``` Channel statistics: Pixels: 8294400 Red: min: -60.0928 (-0.000916958) max: 822259 (12.5469) mean: 9546.61 (0.145672) median: 59.6866 (0.000910759) standard deviation: 55674.1 (0.849533) kurtosis: 85.2372 skewness: 8.71022 entropy: 0.704312 Green: min: 0.964829 (1.47223e-05) max: 822259 (12.5469) mean: 12271.4 (0.187249) median: 266.246 (0.00406265) standard deviation: 67066.8 (1.02337) kurtosis: 70.0362 skewness: 8.07073 entropy: 0.838601 Blue: min: -218.872 (-0.00333977) max: 821236 (12.5313) mean: 12432 (0.1897) median: 422.994 (0.00645447) standard deviation: 67501.9 (1.03001) kurtosis: 67.7693 skewness: 7.95335 entropy: 0.867897 Alpha: min: 65535 (1) max: 65535 (1) mean: 65535 (1) median: 65535 (1) standard deviation: 0 (0) kurtosis: 0 skewness: 0 entropy: 0 Image statistics: Overall: min: -218.872 (-0.00333977) max: 822259 (12.5469) mean: 24946.2 (0.380655) median: 16571 (0.252857) standard deviation: 47560.7 (0.72573) kurtosis: 55.7607 skewness: 6.18358 entropy: 0.602702 ```
2025-05-30 02:03:38
` Gamma: 0.454545`
damian101
Quackdoc wait, how *did* you try to decode it?
2025-05-30 02:15:23
First like this: ``` JxrDecApp -i '/home/damian101/Downloads/Screenshot 2025-05-26 00-24-30_058.jxr' -o '/home/damian101/Downloads/Screenshot 2025-05-26 00-24-30_058.jxr.tif' -c 10 ``` then like this: ``` JxrDecApp -i '/home/damian101/Downloads/Screenshot 2025-05-26 00-24-30_058.jxr' -o '/home/damian101/Downloads/Screenshot 2025-05-26 00-24-30_058.jxr.bmp' -c 0 ```
Quackdoc
2025-05-30 02:16:06
why are you specifying `-c` ?
First like this: ``` JxrDecApp -i '/home/damian101/Downloads/Screenshot 2025-05-26 00-24-30_058.jxr' -o '/home/damian101/Downloads/Screenshot 2025-05-26 00-24-30_058.jxr.tif' -c 10 ``` then like this: ``` JxrDecApp -i '/home/damian101/Downloads/Screenshot 2025-05-26 00-24-30_058.jxr' -o '/home/damian101/Downloads/Screenshot 2025-05-26 00-24-30_058.jxr.bmp' -c 0 ```
2025-05-30 02:17:41
yeah just don't specifc -c
damian101
Quackdoc why are you specifying `-c` ?
2025-05-30 02:17:56
bmp requires -c 0
Quackdoc yeah just don't specifc -c
2025-05-30 02:18:09
makes no difference
Quackdoc
2025-05-30 02:18:22
don't use bmp, use tiff
damian101
2025-05-30 02:18:23
tif should support anything anyway
2025-05-30 02:18:26
I did
Quackdoc
2025-05-30 02:18:43
and you get that error not specifying anything?
damian101
Quackdoc and you get that error not specifying anything?
2025-05-30 02:20:15
oh
2025-05-30 02:20:45
yeah, tif with nothing specified works...
Quackdoc
2025-05-30 02:22:24
btw, the valid outputs for this image are {2,3,22,25,28}
damian101
2025-05-30 02:24:04
oh, because it's planar?
2025-05-30 02:24:27
no...
2025-05-30 02:24:28
why
Quackdoc
2025-05-30 02:24:30
no because jxrdec is dumb
2025-05-30 02:24:34
lmao
2025-05-30 02:25:26
but yeah, in the future if you want to know what outputs are valid just do `for i in {0..34}; do JxrDecApp -i Screenshot_2025-05-26_00-24-30_058.jxr -o out-$i.tiff -c $i; done`
2025-05-30 02:25:30
[av1_kekw](https://cdn.discordapp.com/emojis/758892021191934033.webp?size=48&name=av1_kekw)
_wb_
2025-05-30 08:54:41
That tool should be given a 'Command line interface of the year' award
2025-05-30 08:55:19
Some ignoble prize version of such an award, that is
A homosapien
2025-05-30 09:33:14
The Golden Raspberry Awards for CLI programs
jonnyawsom3
_wb_ That tool should be given a 'Command line interface of the year' award
2025-05-30 09:54:40
That goes to the Adobe DNG Converter for me. Case sensitive, order dependant, unlisted parameters, unless you find the example PDF on the website which also doesn't explain the ordering, with no user feedback at all
Quackdoc
2025-05-31 01:24:41
it's a shame because jxr is an... ok image format all things considered for what it sets out to accomplish, for sure a bit outdated now.
2025-06-01 10:18:59
huh, djpegli is quite slow to decode? ```ps Benchmark 1: taskset --cpu 1 djpegli woag.jxl.jpg --disable_output Time (mean ± σ): 1.217 s ± 0.004 s [User: 1.168 s, System: 0.037 s] Range (min … max): 1.213 s … 1.224 s 5 runs Benchmark 2: taskset --cpu 1 djpeg woag.jxl.jpg > /dev/null Time (mean ± σ): 824.2 ms ± 123.2 ms [User: 790.0 ms, System: 24.5 ms] Range (min … max): 750.7 ms … 1042.0 ms 5 runs Benchmark 3: taskset --cpu 1 jpegtopnm woag.jxl.jpg > /dev/null Time (mean ± σ): 847.1 ms ± 7.2 ms [User: 810.5 ms, System: 25.9 ms] Range (min … max): 839.4 ms … 857.3 ms 5 runs Summary taskset --cpu 1 djpeg woag.jxl.jpg > /dev/null ran 1.03 ± 0.15 times faster than taskset --cpu 1 jpegtopnm woag.jxl.jpg > /dev/null 1.48 ± 0.22 times faster than taskset --cpu 1 djpegli woag.jxl.jpg --disable_output ```
Tirr
2025-06-01 10:44:37
djpegli decodes in f32 while libjpeg-turbo does it in integers I guess
CrushedAsian255
2025-06-01 10:46:39
also djpegli is optimised more for quality where libjpeg-turbo, as given in the name is specifically optimised to be really fast
2025-06-01 10:46:45
(probably explains why they use int instead of float)
damian101
Quackdoc huh, djpegli is quite slow to decode? ```ps Benchmark 1: taskset --cpu 1 djpegli woag.jxl.jpg --disable_output Time (mean ± σ): 1.217 s ± 0.004 s [User: 1.168 s, System: 0.037 s] Range (min … max): 1.213 s … 1.224 s 5 runs Benchmark 2: taskset --cpu 1 djpeg woag.jxl.jpg > /dev/null Time (mean ± σ): 824.2 ms ± 123.2 ms [User: 790.0 ms, System: 24.5 ms] Range (min … max): 750.7 ms … 1042.0 ms 5 runs Benchmark 3: taskset --cpu 1 jpegtopnm woag.jxl.jpg > /dev/null Time (mean ± σ): 847.1 ms ± 7.2 ms [User: 810.5 ms, System: 25.9 ms] Range (min … max): 839.4 ms … 857.3 ms 5 runs Summary taskset --cpu 1 djpeg woag.jxl.jpg > /dev/null ran 1.03 ± 0.15 times faster than taskset --cpu 1 jpegtopnm woag.jxl.jpg > /dev/null 1.48 ± 0.22 times faster than taskset --cpu 1 djpegli woag.jxl.jpg --disable_output ```
2025-06-01 11:30:08
expected it to be slower, actually
2025-06-01 11:30:29
but seems about right
Quackdoc
2025-06-01 11:59:25
this is quite a bit slower
damian101
2025-06-01 12:32:00
1/2 more time, 1/3 slower
2025-06-01 12:32:15
yes
2025-06-01 12:32:19
quite alright imo
RaveSteel
2025-06-01 04:58:53
<@&807636211489177661>
jonnyawsom3
2025-06-01 05:19:01
Oh you beat me to it
Cacodemon345
2025-06-01 05:38:52
2 scams/malicious ads in a row.
spider-mario
2025-06-02 09:53:07
https://github.com/microsoft/edit/blob/6fc049713b2f6421c5000443edd1e645a57b8e1f/src/oklab.rs
2025-06-02 09:53:19
why does a command-line text editor contain an Oklab implementation
Quackdoc
2025-06-03 12:41:59
probably something dumb like color accurate emoji renderinf
Nova Aurora
2025-06-03 02:28:49
It feels like they remade notepad but in the terminal
_wb_
2025-06-03 02:13:00
Dear experts on image coding quality, one of the ongoing JPEG activities is JPEG AIC which targets the assessment of image coding quality. This activity aims to develop methods for subjective and objective image quality assessment with the goal to support developing image coding standards and implementations. For subjective assessment, the AIC-3 methodology is in the final stages of standardization and will be published as ISO/IEC 29170-3. For objective assessment, the JPEG Committee is considering initiating a new Part, AIC-4, of the JPEG AIC project. The Final Call for Proposals (CfP) on Objective Image Quality Assessment was issued as an outcome of the 107th JPEG meeting in April 2025. Expressions of interest and registration may be submitted until June 15, 2025 (not obligatory). Submissions to the Call for Proposals are planned to be due September 29, 2025. At https://jpeg.org/aic/documentation.html please find the relevant documents and related information - ISO/IEC JTC 1/SC29/WG1 N101211, REQ "AIC-4 Proposal Submission Template" - ISO/IEC JTC 1/SC29/WG1 N101157, REQ "Final Call for Proposals on Objective Image Quality Assessment (AIC-4)" - ISO/IEC JTC 1/SC29/WG1 N101056, ICQ "Common Test Conditions on Objective Quality Assessment“ Also, the following blog post summarizes the concepts for the corresponding subjective quality assessment that is to by predicted by the metrics to be submitted for the above Call for Proposals: https://cloudinary.com/labs/aic-3-and-hdr In case of any questions please write. We hope that you may find this call for proposals interesting and consider a submission that later might be integrated in the forthcoming ISO/IEC AIC-4 standard. You are also welcome to share this information with other interested parties, of course. Kind regards, Dietmar Saupe / Jon Sneyers Co-Chairs JPEG AIC Ad hoc Group -- Dietmar Saupe dietmar.saupe@uni-konstanz.de Jon Sneyers jon@cloudinary.com
CrushedAsian255
_wb_ Dear experts on image coding quality, one of the ongoing JPEG activities is JPEG AIC which targets the assessment of image coding quality. This activity aims to develop methods for subjective and objective image quality assessment with the goal to support developing image coding standards and implementations. For subjective assessment, the AIC-3 methodology is in the final stages of standardization and will be published as ISO/IEC 29170-3. For objective assessment, the JPEG Committee is considering initiating a new Part, AIC-4, of the JPEG AIC project. The Final Call for Proposals (CfP) on Objective Image Quality Assessment was issued as an outcome of the 107th JPEG meeting in April 2025. Expressions of interest and registration may be submitted until June 15, 2025 (not obligatory). Submissions to the Call for Proposals are planned to be due September 29, 2025. At https://jpeg.org/aic/documentation.html please find the relevant documents and related information - ISO/IEC JTC 1/SC29/WG1 N101211, REQ "AIC-4 Proposal Submission Template" - ISO/IEC JTC 1/SC29/WG1 N101157, REQ "Final Call for Proposals on Objective Image Quality Assessment (AIC-4)" - ISO/IEC JTC 1/SC29/WG1 N101056, ICQ "Common Test Conditions on Objective Quality Assessment“ Also, the following blog post summarizes the concepts for the corresponding subjective quality assessment that is to by predicted by the metrics to be submitted for the above Call for Proposals: https://cloudinary.com/labs/aic-3-and-hdr In case of any questions please write. We hope that you may find this call for proposals interesting and consider a submission that later might be integrated in the forthcoming ISO/IEC AIC-4 standard. You are also welcome to share this information with other interested parties, of course. Kind regards, Dietmar Saupe / Jon Sneyers Co-Chairs JPEG AIC Ad hoc Group -- Dietmar Saupe dietmar.saupe@uni-konstanz.de Jon Sneyers jon@cloudinary.com
2025-06-04 01:06:20
can I propose mean square error 😄
Demiurge
2025-06-04 11:54:24
So is Jon pronounced like "yawn" or is it more like Hebrew "Elyon" (most high) and "Yonatan" (Jonathan) or Yiddish "Gut Yontif" (good holiday)
_wb_
2025-06-04 12:03:59
I don't speak Hebrew/Yiddish and I don't know how those are pronounced, but my name is pronounced "yonn" (the J is like the J in German/Dutch "Jan", not like the J in English "John")
CrushedAsian255 can I propose mean square error 😄
2025-06-04 12:05:35
There's a list of "anchor metrics" that will be used as a baseline to compare against, MSE is one of them (or rather PSNR, but that's basically the same thing)
Cacodemon345
2025-06-04 12:07:04
I will never understand the relationship in pronunciation between 'y' and 'j' across Latin-script languages.
Demiurge
2025-06-04 06:31:33
But is it an "oh" or an "ah" vowel sound?
spider-mario
2025-06-04 07:18:11
Gemini says /ɔ/ (open o)
2025-06-04 07:18:42
https://en.wikipedia.org/wiki/Open-mid_back_rounded_vowel
2025-06-04 07:19:20
(check out the audio sample)
2025-06-04 07:21:46
whether that’s “yawn” depends on the accent https://en.wiktionary.org/wiki/yawn#Pronunciation
Demiurge
2025-06-05 12:37:55
Hmm
2025-06-05 12:38:43
So like "over yonder"
spider-mario
2025-06-05 07:49:24
yonder seems more open https://en.wiktionary.org/wiki/yonder
_wb_
Demiurge But is it an "oh" or an "ah" vowel sound?
2025-06-05 08:01:25
oh
juliobbv
2025-06-05 08:05:37
I've always said it like "yon" (in Spanish)
2025-06-05 08:05:43
please forgive me for my sins
_wb_
2025-06-05 08:29:17
How does "yon" sound in Spanish?
2025-06-05 08:40:08
In the International Phonetic Alphabet, my name is just <jon>. The "j" is this one: https://en.wikipedia.org/wiki/Voiced_palatal_approximant The "o" is this one: https://en.wikipedia.org/wiki/Close-mid_back_rounded_vowel (but the short version, the audio sample on that page is the long version, <oː>) The "n" is this one: https://en.wikipedia.org/wiki/Voiced_dental,_alveolar_and_postalveolar_nasals
2025-06-05 08:40:35
I hope that clarifies it 🙂
juliobbv
_wb_ How does "yon" sound in Spanish?
2025-06-05 08:53:25
like [jo̞n]
2025-06-05 08:53:43
so actually very close to ground truth
2025-06-05 08:54:32
https://en.wikipedia.org/wiki/Mid_back_rounded_vowel
Meow
2025-06-05 12:52:03
Sounds like this https://en.wikipedia.org/wiki/Jiong
2025-06-05 12:52:43
If that j isn't [j]
spider-mario
juliobbv https://en.wikipedia.org/wiki/Mid_back_rounded_vowel
2025-06-05 07:16:04
“mid back rounded vowel, you touch my tralala” “voiced bilabial nasal, my ding ding dong”
_wb_ In the International Phonetic Alphabet, my name is just <jon>. The "j" is this one: https://en.wikipedia.org/wiki/Voiced_palatal_approximant The "o" is this one: https://en.wikipedia.org/wiki/Close-mid_back_rounded_vowel (but the short version, the audio sample on that page is the long version, <oː>) The "n" is this one: https://en.wikipedia.org/wiki/Voiced_dental,_alveolar_and_postalveolar_nasals
2025-06-05 07:16:21
oops, sorry for spreading misinformation about the degree of openness then
Meow
2025-06-06 02:50:08
An online converter that lets you choose jpg and jpeg
2025-06-06 02:51:58
Wow the jpg and jpeg file sizes are identical 🤨
CrushedAsian255
2025-06-06 04:46:05
like its not even a jpeg / jfif thing
2025-06-06 04:46:12
its literally byte identical?
Meow
2025-06-06 10:23:38
https://meee.com.tw/changetype
CrushedAsian255
Meow https://meee.com.tw/changetype
2025-06-06 10:51:42
他说404
Meow
2025-06-06 12:49:25
Walled
CrushedAsian255
Meow Walled
2025-06-06 01:15:21
我需要台湾的IP吗?
Meow
2025-06-06 01:16:41
Uh the website breaks now
2025-06-06 01:17:25
The traffic may be too high now as Imgur blocks uploading from Taiwan
DZgas Ж
Meow An online converter that lets you choose jpg and jpeg
2025-06-06 01:27:34
<:megapog:816773962884972565> png --> jpeg jpg jfif jpegli guetzli jpeg mozjpeg turbojpeg baseline jpeg true jpeg 1992
monad
2025-06-06 02:00:51
forgot jpg_large
juliobbv
2025-06-06 02:10:43
420_jpeg 444_jpeg
CrushedAsian255
2025-06-06 02:46:48
what about png -> reconstructed jpeg (png -> jpeg -> jxl -> jpeg)
Demiurge
Meow The traffic may be too high now as Imgur blocks uploading from Taiwan
2025-06-06 06:05:26
What? Why?