|
spider-mario
|
2021-02-22 05:14:13
|
these days, my opinion is that subpixel rendering is more trouble than it’s worth
|
|
2021-02-22 05:14:29
|
full-pixel (grayscale) antialiasing is good enough, especially as displays get denser and denser
|
|
2021-02-22 05:15:05
|
this increase in density also allows us to abandon hinting
|
|
2021-02-22 05:15:52
|
for me, after using a high-dpi screen, there was no going back
|
|
|
lonjil
|
2021-02-22 05:17:59
|
Even on a normal dpi screen, I can't stand subpixel rendering. Actually, if your dpi is low enough, the subpixel discoloration can be visible at normal viewing distances...
|
|
|
spider-mario
|
2021-02-22 05:20:51
|
filtering is supposed to help with that (https://nikramakrishnan.github.io/freetype-web-jekyll/docs/text-rendering-general.html#the-default-lcd-filter-for-subpixel-rendering-has-been-changed), but in turn, it sacrifices some of the resolution gain
|
|
2021-02-22 05:21:12
|
so the question is what trade-off of color artifacts vs. resolution is acceptable to you
|
|
2021-02-22 05:21:44
|
and it seems that for us two, the answer is “no color artifacts please”
|
|
2021-02-22 05:23:59
|
actually, another factor for me was that subpixel rendering would end up in my screenshots
|
|
2021-02-22 05:24:16
|
which makes those screenshots non-portable and less scalable
|
|
|
_wb_
|
2021-02-22 05:32:16
|
Subpixel rendering is not compatible with screenshot sharing
|
|
2021-02-22 05:33:12
|
Once you want to share an image, it has to work on all kinds of screens in all orientations
|
|
|
Nova Aurora
|
2021-02-22 05:36:05
|
Do modern operating systems turn it off on hidpi screens?
|
|
|
spider-mario
|
2021-02-22 05:37:03
|
I don’t think Windows does
|
|
2021-02-22 05:37:13
|
macOS dropped it at some point, which caused some backlash at the time
|
|
|
Nova Aurora
|
2021-02-22 05:38:29
|
I get it for lower resolution screens, but if you have all those pixels why use it?
|
|
|
spider-mario
|
2021-02-22 05:38:46
|
https://twitter.com/tapbot_paul/status/1004361530018852864
|
|
|
|
paperboyo
|
|
spider-mario
I don’t think Windows does
|
|
2021-02-22 05:46:36
|
https://en.wikipedia.org/wiki/ClearType#ClearType_in_DirectWrite
|
|
|
spider-mario
|
2021-02-22 05:47:37
|
right, but apps have to use newer APIs for that
|
|
2021-02-22 05:47:42
|
there are plenty that don’t
|
|
2021-02-22 05:48:25
|
it’s surprisingly difficult to get them to do grayscale antialiasing
|
|
2021-02-22 05:48:30
|
I installed https://github.com/snowie2000/mactype for that
|
|
|
Orum
|
2021-02-22 05:49:58
|
It's nice on low-DPI displays, but not necessary on high DPI and downright undesirable when sharing images with text.
|
|
|
Scope
|
2021-02-23 11:21:26
|
For the sake of interest I also tested additionally `-s 8 -P 5 -C 1 -I 0` on all sets (-P 5 is slightly better on overall result than -P 4), that maybe it could be also somewhere better or the same as `-s 3`, but as before it is better only on Pixel Art
And as already mentioned some faster optimized version `-s 4 -P 5` with fixed predictor, tree, etc. would also make sense for `-s 3`, and for example the current `-s 3` could be renamed to `-s 2`
On the other hand current `-s 3` since it is well optimized and fast for photo and noticeably worse only on pixel art, then it is possible to just add detection and enable lz77 or some other fast compression variants on it
|
|
|
|
veluca
|
2021-02-23 01:09:57
|
current -s 3 uses a photo-specific predictor that is not going ever to work well on nonphoto 😄 a fixed-predictor/tree version should potentially be a lot faster than the current -s 3
|
|
|
|
Deleted User
|
2021-02-24 03:28:16
|
Here you've got another screenshots for patch heuristic testing. I no longer play those games, however good memories (and, of course, screenshots) remained...
|
|
2021-02-24 03:32:38
|
The trick is: those patches are only *partially* pixel-perfect. At the edges there is some variance of grass, which has to be accounted for somehow, e.g. taking together all the samples that encoder considers not perfectly the same, but just close enough, take an average / median / mode out of all those matches and if the difference is small enough, the result will be encoded.
|
|
2021-02-24 03:37:50
|
In those two cases that I've just uploaded the average needs to be encoded as a patch, because here the vast majority of the patch is pixel-perfect, only the grass on the edges changes, but those can be coded as residuals.
|
|
2021-02-24 04:08:05
|
This GIF should explain it. Those are all same 40x40 px patches (after 4x NN upscaling for better visibility) in 100 ms intervals. They're pixel-perfect matches everywhere but the edges. Look closely, here there are different parts of the grass texture! The encoder should know that the part that doesn't change is a patch and all those pixels that are changing aren't and should be either averaged out (and the remainder encoded normally) or excluded from the patch with alpha channel.
|
|
|
Scope
|
2021-02-24 05:11:20
|
Some (12) anime art lossy comparisons from low (0.15) to medium bpp (0.5-1.8), mainly because of noticeable artifacts on the lines in JXL, many site owners with such content consider AVIF (it loses some details, but for preview or thumbnail images is good enough)
Same image sizes, latest builds of JXL (-s 8) and libavif (-c aom -s 1 -aq-mode=1), most likely Aurora1 will have even better results for AVIF:
**<https://slow.pics/c/NvJvg7o9>**
|
|
2021-02-24 05:16:26
|
-
One example (also some noticeable color changes by JXL) <@!532010383041363969>
Source:
|
|
2021-02-24 05:16:49
|
AVIF
|
|
2021-02-24 05:17:03
|
JXL
|
|
|
BlueSwordM
|
|
Scope
JXL
|
|
2021-02-24 05:18:57
|
Could you give your settings for this comparison, or targets for file size/bpp?
|
|
2021-02-24 05:19:04
|
I'd be interested to try it out myself.
|
|
|
Scope
|
2021-02-24 05:19:41
|
`avifenc --min x --max x -a aq-mode=1 -s 1`
`cjxl -s 8 --target_size=x`
|
|
2021-02-24 05:19:45
|
|
|
|
BlueSwordM
|
2021-02-24 05:19:59
|
Thank you.
|
|
2021-02-24 05:20:45
|
Is it normal that I can't load the JXL copy? <:SadCat:805389277247701002>
|
|
|
Scope
|
|
BlueSwordM
|
2021-02-24 05:40:19
|
Anyway, it looks like I was able to do a decent with modular.
`cjxl -s 8 -m -Q 40`
|
|
2021-02-24 05:49:54
|
Oh.
|
|
2021-02-24 05:50:07
|
It looks like I can't decode anything with progressive on for some reason.
|
|
2021-02-24 05:50:13
|
That's not normal behavior.
|
|
|
_wb_
|
2021-02-24 06:46:34
|
No it is not
|
|
|
Master Of Zen
|
2021-02-24 12:10:09
|
This is my benchmark
|
|
2021-02-24 12:10:16
|
|
|
|
Scope
|
|
Scope
Some (12) anime art lossy comparisons from low (0.15) to medium bpp (0.5-1.8), mainly because of noticeable artifacts on the lines in JXL, many site owners with such content consider AVIF (it loses some details, but for preview or thumbnail images is good enough)
Same image sizes, latest builds of JXL (-s 8) and libavif (-c aom -s 1 -aq-mode=1), most likely Aurora1 will have even better results for AVIF:
**<https://slow.pics/c/NvJvg7o9>**
|
|
2021-02-24 02:46:01
|
AVIF - JXL
|
|
2021-02-24 02:46:51
|
|
|
2021-02-24 02:48:35
|
|
|
|
Crixis
|
2021-02-24 02:50:04
|
avif is so better then VarDCT on this, modular?
|
|
|
Scope
|
|
Scope
-
One example (also some noticeable color changes by JXL) <@!532010383041363969>
Source:
|
|
2021-02-24 02:50:28
|
|
|
2021-02-24 02:55:42
|
Modular is sometimes better, but it also has noticeable jagged lines, from which I once mentioned some techniques like LCEVC, where lines and edges are saved in full resolution and with less compression (lossless?) and overlaid later on a more compressed resized video (DCT compression is usually very noticeable on sharp lines)
|
|
|
|
Deleted User
|
|
Scope
Some (12) anime art lossy comparisons from low (0.15) to medium bpp (0.5-1.8), mainly because of noticeable artifacts on the lines in JXL, many site owners with such content consider AVIF (it loses some details, but for preview or thumbnail images is good enough)
Same image sizes, latest builds of JXL (-s 8) and libavif (-c aom -s 1 -aq-mode=1), most likely Aurora1 will have even better results for AVIF:
**<https://slow.pics/c/NvJvg7o9>**
|
|
2021-02-24 02:58:00
|
Which quality setting did you use? I'm fiddling with `unknown_1hxwd.png` (the first one from slow.pics)
|
|
|
Scope
|
2021-02-24 03:01:08
|
I don't remember exactly for each image, something between (--min 0 --max 20/--min 0 --max 47)
|
|
|
|
Deleted User
|
|
Scope
I don't remember exactly for each image, something between (--min 0 --max 20/--min 0 --max 47)
|
|
2021-02-24 03:02:22
|
I'm talking about JXL
|
|
|
Scope
|
2021-02-24 03:02:26
|
Just `-s 8 --target_size=x`
Also WP2 as it is now tuned to save more details, can not keep as sharp lines as AVIF, perhaps in the future it will be useful to have something like presets for such content
|
|
|
|
Deleted User
|
2021-02-24 03:07:16
|
Ok, thanks
|
|
|
_wb_
|
2021-02-24 03:19:09
|
to get nice looking low-fidelity encoding for such images in jxl, I think we'll need different encoder tricks. For images like this, AVIF's many directional prediction modes (+ chroma from luma) is very good, especially because on images like this, you don't notice that directions get rounded to the nearest available angle
|
|
2021-02-24 03:21:48
|
I think near-lossless techniques (delta palette) could be good here, to avoid any dct artifacts while avoiding the typical issues you'd get with PNG8 (banding or requiring dithering)
|
|
2021-02-24 03:23:38
|
for that we need something like pngquant to make a good palette as a starting point, and then use delta palette to fill the slow gradients
|
|
2021-02-24 03:24:06
|
it's a matter of making an encoder that does that
|
|
|
Scope
|
2021-02-24 03:49:07
|
Yep, I think further development of near-lossless technique ideas is good for such images
And this kind of strong lossy compression is not just for my experiments, it is a real use, because usually various reduced resolutions from the large original image are very compressed, for faster loading and previewing of a huge number of images (where very much details are not needed, but maximum size reduction is important, until artifacts become noticeable and annoying), and for good quality there is a full size image (which can be in lossless, since quality becomes more important)
|
|
2021-02-24 06:15:47
|
Btw, from the 4chan thread, one image, unknown CPU, number of threads and other things, but still...
|
|
|
lithium
|
2021-02-24 06:42:33
|
Hello <@!111445179587624960> ,
For anime content you can try high quantizer like this.
use --nclx 1/13/0 on png rgb file.
// near jxl -d 0.5
// qp
avifenc.exe --min 7 --max 8 --minalpha 0 --minalpha 0 --codec aom --nclx 1/13/0 -s 3 -j 12
// q
avifenc.exe --min 7 --max 8 --minalpha 0 --minalpha 0 --codec aom --nclx 1/13/0 -s 3 -j 12 -a end-usage=q
|
|
|
Scope
|
2021-02-24 06:53:00
|
My comparison above was mainly for heavy compression and low bpp
|
|
|
lithium
|
2021-02-24 07:01:06
|
ok, and use default aq-mode and --nclx 1/13/0(on rgb file) probably can get better result
|
|
2021-02-24 07:02:49
|
jxl rgb => xyb, avif rgb => ycbcr or ycocg
|
|
|
Scope
|
2021-02-24 07:36:34
|
For low bpp `--nclx 1/13/0` gives worse results
|
|
|
fab
|
2021-02-24 07:36:53
|
what is nclx
|
|
|
Scope
|
2021-02-24 07:36:57
|
Default:
|
|
2021-02-24 07:37:15
|
`--nclx 1/13/0` (same size)
|
|
|
_wb_
|
2021-02-24 07:40:49
|
For low bpp, maybe also try 2x or 4x downsampling in cjxl...
|
|
|
Scope
|
2021-02-24 07:43:33
|
Yep, sometimes it helps, but then blurring becomes quite noticeable
|
|
2021-02-24 07:53:49
|
That's why I was thinking about LCEVC, where lines and edges are saved in full resolution, and everything else is downsampled
|
|
|
fab
|
2021-02-24 08:00:24
|
what is the settings of the vardct optimized scope
|
|
2021-02-24 08:00:42
|
ziemek showed a GIMP photo
|
|
|
Scope
|
2021-02-24 08:04:55
|
I don't know, for VarDCT I mostly just use quality and speed (rarely when I can noticeably improve anything)
|
|
|
fab
|
2021-02-24 08:24:55
|
how to use
|
|
2021-02-24 08:24:56
|
--nclx 1/13/0
|
|
2021-02-24 08:25:06
|
i want it at q 75
|
|
2021-02-24 08:25:09
|
how to do
|
|
|
|
Deleted User
|
|
fab
what is the settings of the vardct optimized scope
|
|
2021-02-24 08:25:44
|
Scope used `-s 8 --target_size=XXXXX` (where `XXXXX` is the AVIF filesize, because doing it other way around, which is: to generate JXL and then match the filesize with AVIF, is much harder)
|
|
|
fab
ziemek showed a GIMP photo
|
|
2021-02-24 08:26:45
|
I used `-s 9 --target_size=XXXXX -c 0 --noise=0 --dots=0 --patches=0 --epf=3 --gaborish=1`
|
|
|
fab
|
2021-02-24 08:26:58
|
what is c 0
|
|
|
Scope
|
2021-02-24 08:27:38
|
`--nclx 1/13/0` is for Avifenc
```--cicp,--nclx P/T/M : Set CICP values (nclx colr box) (3 raw numbers, use -r to set range flag)
P = color primaries
T = transfer characteristics
M = matrix coefficients```
|
|
|
|
Deleted User
|
|
fab
what is c 0
|
|
2021-02-24 08:27:46
|
``` -c 0..2, --colortransform=0..2
0=XYB, 1=None, 2=YCbCr```
|
|
2021-02-24 08:28:03
|
I simply wanted to make sure that XYB will be used
|
|
|
fab
|
2021-02-24 08:28:23
|
and what it means
|
|
2021-02-24 08:28:29
|
why this / / /
|
|
|
|
Deleted User
|
2021-02-24 08:33:25
|
<@!416586441058025472> next time just use `cjxl -h -v -v -v`, it'll show you all the options 😉
I can't understand some options or how would they impact compression, so I don't use them (leave them on default settings).
|
|
|
_wb_
|
2021-02-24 08:34:58
|
varDCT always uses XYB
|
|
2021-02-24 08:35:09
|
we didn't even implement forward YCbCr
|
|
|
|
Deleted User
|
2021-02-24 08:36:17
|
OK, guess I'll simply omit `-c 0` in my further VarDCT commands in order to simplify them
|
|
|
Jyrki Alakuijala
|
|
Crixis
avif is so better then VarDCT on this, modular?
|
|
2021-02-25 08:11:26
|
AVIF does better on these images. I consider it is mostly an encoder level thing, and I believe I can get within 5 % of AVIF quality at low quality when I'm complete with the low bpp optimizations. (within 20 % for an image that benefits a lot from directional prediction -- having a lot of directional obligue features without information across those features)
|
|
2021-02-25 08:12:47
|
Also AVIF encoders are developing, me and Luca are helping them to take the best methods of JPEG XL to improve on the photography compression
|
|
2021-02-25 08:14:34
|
In JPEG XL our code for choosing integral transforms is weaker (and faster) than similar code in AVIF -- this relates a lot to the low quality images
|
|
2021-02-25 08:15:07
|
the formats are much closer to each other in image quality performance than what we can observe today
|
|
2021-02-25 08:18:22
|
I consider that the end state is going to be something like JPEG XL is 5-20 % more efficient in high end photography, AVIF in the low end or smooth graphics -- JPEG XL will decode faster on software for HDR and YUV444 and have progression
|
|
2021-02-25 08:19:25
|
AVIF can model the XYB colorspace at least partially if they add a 700 byte ICC profile in it
|
|
2021-02-25 08:20:59
|
JPEG XL also otherwise has a smaller overhead for small images (if one aims at < 1000 bytes size, it doesn't really work competitively with AVIF particularly if there is alpha channel in the image)
|
|
|
I simply wanted to make sure that XYB will be used
|
|
2021-02-25 08:22:03
|
What is your experience of XYB vs other colorspaces?
|
|
|
|
Deleted User
|
|
Jyrki Alakuijala
What is your experience of XYB vs other colorspaces?
|
|
2021-02-25 09:35:51
|
You mean in general? I haven't tried other ones than XYB, to be honest (IIRC). Again, I just wanted to be 100% sure that XYB will be used.
|
|
|
Jyrki Alakuijala
|
|
Scope
Some (12) anime art lossy comparisons from low (0.15) to medium bpp (0.5-1.8), mainly because of noticeable artifacts on the lines in JXL, many site owners with such content consider AVIF (it loses some details, but for preview or thumbnail images is good enough)
Same image sizes, latest builds of JXL (-s 8) and libavif (-c aom -s 1 -aq-mode=1), most likely Aurora1 will have even better results for AVIF:
**<https://slow.pics/c/NvJvg7o9>**
|
|
2021-02-25 03:37:23
|
I'm working on exactly this, trying to tame those obligue lines. I have made some improvement from 0.3 to 0.3.2, but not yet enough.
|
|
|
Scope
|
2021-02-25 03:48:28
|
<@!532010383041363969> Also about the noticeably different colors (on the faces), I checked on a higher quality and they are fine, in this image it happens only with heavy compression
https://discord.com/channels/794206087879852103/803645746661425173/814002782776328242
|
|
2021-02-25 03:51:56
|
<https://slow.pics/c/fGLgux2b>
|
|
|
Crixis
|
|
Scope
<https://slow.pics/c/fGLgux2b>
|
|
2021-02-25 03:55:01
|
oh, so much more yellow
|
|
|
Scope
|
2021-02-25 03:55:45
|
Yep, also banding
AVIF - JXL
|
|
|
|
Deleted User
|
2021-02-25 03:58:15
|
<@!532010383041363969> here's my comparison: https://slow.pics/c/A7HJkgFe
You're doing good job on improving low-bpp quality. There's more ringing, but lines look more faithful to the original and more pleasant to look at (in Scope's JXL the lines are jagged, only lossy Modular gives more jagging).
|
|
|
Crixis
|
|
<@!532010383041363969> here's my comparison: https://slow.pics/c/A7HJkgFe
You're doing good job on improving low-bpp quality. There's more ringing, but lines look more faithful to the original and more pleasant to look at (in Scope's JXL the lines are jagged, only lossy Modular gives more jagging).
|
|
2021-02-25 04:30:23
|
this is a lot better but avif is f*** good
|
|
2021-02-25 04:37:14
|
how much bpp?
|
|
|
|
Deleted User
|
|
Crixis
this is a lot better but avif is f*** good
|
|
2021-02-25 04:45:59
|
> but avif is f*** good
Unfortunately yes. It can be even better though, I'm on AV1 Discord and talking with BlueSwordM about encoding it with rav1e.
|
|
|
Crixis
|
|
> but avif is f*** good
Unfortunately yes. It can be even better though, I'm on AV1 Discord and talking with BlueSwordM about encoding it with rav1e.
|
|
2021-02-25 04:49:51
|
Also I have noted that rav1e is better in still image, less smoting
|
|
|
|
Deleted User
|
|
Crixis
Also I have noted that rav1e is better in still image, less smoting
|
|
2021-02-25 04:52:02
|
That's what BlueSwordM said to me 😉
|
|
|
spider-mario
|
2021-02-25 05:39:06
|
I added very basic avif support to benchmark_xl and in my brief testing, aom seemed better than rav1e according to butteraugli
|
|
2021-02-25 05:39:14
|
but I must admit that I haven’t really looked at the images
|
|
|
Scope
|
2021-02-25 05:43:07
|
Rav1e is sometimes visually better on art images (better AQ tuning?)
|
|
|
_wb_
|
2021-02-25 05:46:22
|
<@604964375924834314> what encoder speed did you look at?
|
|
|
BlueSwordM
|
|
That's what BlueSwordM said to me 😉
|
|
2021-02-25 05:47:25
|
I didn't use the slowest rav1e speed here(since there's not much difference in terms of speed yet between s1 and s4, as the presets in cavif-rs haven't been properly tuned yet) but it points what each encoder's strength is.
The image comparison is rather interesting as you can see. It seems to try a different approach than aom as expected. It manages to preserve more detail as expected, but it doesn't have as good filtering(that is being worked on, and will improve with time), so it looks worse in this scenario
However, the devil is in the details. rav1e does better than aom in my experience at higher bpp, which is particularly interesting in the case of the video comparison that I showed you in the AV1 discord server.
https://slow.pics/c/nagJiHIk
|
|
|
_wb_
|
2021-02-25 05:48:39
|
When I tested, rav1e was often worse than webp at its fastest setting, but at slower speeds it is quite good
|
|
2021-02-25 05:49:26
|
SVT had the best speed/quality trade-off for our use cases at Cloudinary
|
|
2021-02-25 05:49:42
|
Until we licensed Aurora that is
|
|
|
spider-mario
|
|
_wb_
<@604964375924834314> what encoder speed did you look at?
|
|
2021-02-25 05:49:55
|
mainly the default speed iirc, so 8
|
|
|
_wb_
|
2021-02-25 05:50:07
|
But SVT is limited to 4:2:0 so for 4:4:4 we did fallback to rav1e
|
|
2021-02-25 05:50:14
|
Default rav1e speed is crap
|
|
|
BlueSwordM
|
2021-02-25 05:50:28
|
Isn't default rav1e speed 6 though?
|
|
|
spider-mario
|
2021-02-25 05:50:40
|
rav1e’s might be, but libavif’s isn’t apparently
|
|
|
_wb_
|
2021-02-25 05:50:42
|
Depends on who sets the default, I guess
|
|
|
Scope
|
2021-02-25 05:50:58
|
I also tested rav1e mostly at slow speeds
|
|
|
_wb_
|
2021-02-25 05:51:21
|
Slow speeds are not feasible for on the fly encoding though
|
|
2021-02-25 05:51:45
|
We cannot have latencies that large, first requests will time out and stuff
|
|
2021-02-25 05:52:14
|
We used svt speed 7 iirc
|
|
2021-02-25 05:52:27
|
And even that was too slow
|
|
2021-02-25 05:53:04
|
With Aurora it's about twice as fast as that, for a slightly better quality/density curve
|
|
|
Scope
|
2021-02-25 05:53:11
|
Yep, but I tested with an eye to future optimizations and the overall quality capabilities of the encoder
|
|
|
_wb_
|
2021-02-25 05:53:26
|
Sure, that makes perfect sense
|
|
2021-02-25 05:53:35
|
For testing
|
|
2021-02-25 05:53:49
|
Not for production 😅
|
|
|
BlueSwordM
|
2021-02-25 05:58:53
|
Anyway, I'm not too worried for rav1e vs libaom.
|
|
2021-02-25 05:59:09
|
rav1e should be receiving a nice large speed boost both inter and intra soon™️
|
|
2021-02-25 05:59:43
|
As wb has said, keep JXL for images, and use AV1 for video. 😛
|
|
|
Scope
|
2021-02-25 06:01:45
|
And for previews and thumbnails, for now (If there is extra CPU power available <:AV1:805851461774475316>)
|
|
|
_wb_
|
2021-02-25 06:34:10
|
for thumbnails, I think WebP is atm the best choice. For some reason, for small images, AVIF doesn't really shine. It might be the combination of relatively large header overhead and not being able to use bigger blocks.
|
|
2021-02-25 06:34:46
|
300 pixels wide is roughly the point where AVIF starts to beat WebP, smaller than that often WebP is better
|
|
|
Crixis
|
2021-02-25 06:38:38
|
jxl can be good for 300px image in the future?
|
|
|
_wb_
|
|
Scope
|
2021-02-25 07:03:09
|
Yes, I didn't mean very small images, but also:
Source:
|
|
2021-02-25 07:03:29
|
AVIF
|
|
2021-02-25 07:03:38
|
JXL
|
|
2021-02-25 07:03:46
|
WebP
|
|
2021-02-25 07:05:45
|
For such images and heavy compression, AVIF is also still good
For more complex or photo images, JXL is already good for small resolutions (unless adding more options for Alpha)
|
|
2021-02-25 07:13:11
|
<https://slow.pics/c/tFGNKwvB>
|
|
|
_wb_
|
2021-02-25 07:29:11
|
Yes, avif is quite great at illustrations in such a drawing style with clear, hard lines. This is what many directional prediction modes is great for.
|
|
2021-02-25 07:31:48
|
But for typical low-fidelity photographic thumbnails like e.g. in a product gallery, WebP and AVIF are close to one another.
|
|
|
lithium
|
2021-02-25 07:42:19
|
original: Mika Pikazo, www.pixiv.net/users/1039353
https://www.pixiv.net/artworks/78511602
|
|
|
Jyrki Alakuijala
|
|
_wb_
Yes, avif is quite great at illustrations in such a drawing style with clear, hard lines. This is what many directional prediction modes is great for.
|
|
2021-02-26 10:37:38
|
is this speculation or knowledge -- could we try it without any directional stuff in AVIF?
|
|
|
_wb_
|
2021-02-26 10:42:47
|
speculation
|
|
2021-02-26 11:42:14
|
It would be interesting to see what is actually giving AVIF an edge in these images (no pun intended)
|
|
2021-02-26 11:43:04
|
Could be directional prediction, could be directional deringing filter, could be palette mode blocks, could be chroma from luma, ...
|
|
2021-02-26 11:44:34
|
<@321486891079696385> <@111445179587624960> do you know how to run avif encoders with particular coding tools disabled?
|
|
2021-02-26 11:53:58
|
<@532010383041363969> are we exploiting clamping behavior to reduce chroma entropy? For images like these, it could be worthwhile to e.g. pretend that all the hair area is purple in chroma, instead of letting chroma go to zero for the white and for the black parts. If luma is zero, the pixels will be black anyway, and if luma is high, they will be white anyway, whatever the chroma components say.
|
|
|
Scope
|
|
_wb_
<@321486891079696385> <@111445179587624960> do you know how to run avif encoders with particular coding tools disabled?
|
|
2021-02-26 02:24:42
|
No, I'm mostly comparing encoders in the way most people will use them
|
|
|
_wb_
Could be directional prediction, could be directional deringing filter, could be palette mode blocks, could be chroma from luma, ...
|
|
2021-02-26 02:25:49
|
Yes, I think directional deringing also affects https://youtu.be/VHm5Ql33JYw?list=LL&t=602
|
|
|
_wb_
|
2021-02-26 02:55:18
|
I remember seeing a tool that visualizes av1 block type selection. It would be interesting to compare choices made by av1 encoders with those made by cjxl, especially for images where avif is doing better
|
|
2021-02-26 02:55:42
|
Does anyone know how to get those visualizations?
|
|
|
Master Of Zen
|
|
_wb_
I remember seeing a tool that visualizes av1 block type selection. It would be interesting to compare choices made by av1 encoders with those made by cjxl, especially for images where avif is doing better
|
|
2021-02-26 03:14:17
|
https://github.com/xiph/aomanalyzer
|
|
|
Scope
|
2021-02-26 03:26:02
|
Yes, I've seen some browser-based analyzers like the one described here <https://medium.com/hackernoon/av1-bitstream-analyzer-d25f1c27072b>, but, the most convenient and detailed analyzers are paid
And also some tools can be enabled/disabled just through aomenc options (but I have not tried to disable anything more)
|
|
|
Jyrki Alakuijala
|
|
_wb_
speculation
|
|
2021-02-26 06:05:28
|
Let's get more data on what is causing this significant difference between AVIF and JPEG XL.
|
|
2021-02-26 06:08:57
|
it can be ac strategy, integral transforms, filtering, prediction, palette modeling, yuv420, .xyb vs yuv, cfl dfferences, and many others
|
|
2021-02-26 06:09:42
|
Just yesterday I fixed a bug in ac strategy in jpeg xl, who knows how many more are lurking in there 🙂
|
|
2021-02-26 06:10:15
|
there can be 77 bugs or inaccuracies each worth 0.23 %
|
|
2021-02-26 06:10:50
|
I consider we need an ablation study on both ends
|
|
2021-02-26 06:11:10
|
turn off features until the two codecs converge into the same result
|
|
2021-02-26 06:11:30
|
the codecs are not inherently different, both are mostly dct based
|
|
2021-02-26 06:12:02
|
I have learned that often the combination of things is stronger than just pure reasoning
|
|
2021-02-26 06:13:38
|
I believe all main codecs (webp2, avif, heif) other than jpeg xl perform well on this anime data
|
|
2021-02-26 06:14:04
|
I believe we will be able to fix it soon after we understand fully what is happening
|
|
|
Scope
|
2021-02-26 06:16:07
|
<@!532010383041363969> <@!794205442175402004> Another comparison, but when JXL quality is between -d 3.5 and -d 4.5 (in the past it was up to -d 8) <https://slow.pics/c/Ri6dHVlu>
|
|
2021-02-26 06:16:14
|
|
|
|
Jyrki Alakuijala
|
2021-02-26 06:22:36
|
did you try the delta palette option of jpeg xl?
|
|
2021-02-26 06:27:20
|
it seems to me that avif is getting gains by small local palettes and from triangular/other weird block splits
|
|
2021-02-26 06:27:48
|
weird block splits forming the block from two colors, usually white and another color
|
|
2021-02-26 06:28:10
|
we don't have local palettes in jpeg xl
|
|
2021-02-26 06:28:33
|
but we have something that is more powerful in the high-mid category and might work here, too
|
|
2021-02-26 06:28:39
|
(the delta palettes)
|
|
2021-02-26 06:28:59
|
they work with the modular mode and the lz77
|
|
2021-02-26 06:29:41
|
the context modeling that system has is roughy equally powerful to local palettes, but allows less hard degradation than forcing a locality to 8 colors
|
|
|
Scope
|
2021-02-26 06:29:51
|
Delta palette in modular mode? I've tried, but these sizes are usually much larger than the ones I'm testing.
Without very heavy compression, all better and mostly noticeable ringing artifacts and jagged lines, but in this image the differences are not just artifacts <https://slow.pics/c/F1KDUnQe>
|
|
|
BlueSwordM
|
2021-02-26 06:29:55
|
The benefit with AVIF encoders might be that they are using chroma from luma in intra only encoding and others filters.
|
|
|
Scope
|
2021-02-26 06:32:01
|
I think it's mostly from a combination of directional prediction, directional deringing and palette mode blocks (like Jon said)
|
|
|
Jyrki Alakuijala
|
|
Scope
Delta palette in modular mode? I've tried, but these sizes are usually much larger than the ones I'm testing.
Without very heavy compression, all better and mostly noticeable ringing artifacts and jagged lines, but in this image the differences are not just artifacts <https://slow.pics/c/F1KDUnQe>
|
|
2021-02-26 06:35:10
|
one problem in delta palette is that it doesn't add custom colors yet -- so if there is a color in the image that is not in the stock palette, it is dithered
|
|
2021-02-26 06:35:22
|
dithering is more bits than a constant color
|
|
|
BlueSwordM
The benefit with AVIF encoders might be that they are using chroma from luma in intra only encoding and others filters.
|
|
2021-02-26 06:35:58
|
there is a chroma from luma approach in jpeg xl, too
|
|
|
Scope
I think it's mostly from a combination of directional prediction, directional deringing and palette mode blocks (like Jon said)
|
|
2021-02-26 06:36:55
|
is there a way to try this same image in avif without directional prediction and directional deringing
|
|
|
Scope
|
2021-02-26 06:40:56
|
I have not tried at the moment, maybe need some changes in the source code (as not everything can be disabled through the options)
And as I said, the further development of delta palette is very interesting and I think will be needed for art images (I am personally more interested in it), but there is also a need for even higher or more predictable compression
|
|
2021-02-26 06:41:53
|
Perhaps CDEF has some effect as well (it can be disabled)
|
|
|
Jyrki Alakuijala
|
2021-02-26 06:43:56
|
the delta palette in jpeg xl is pretty amazing creature, but I tuned it only at one fixed quality
|
|
2021-02-26 06:44:11
|
at around 2.3 bpp photography
|
|
2021-02-26 06:44:26
|
most likely for this kind of images we'd need other approaches
|
|
2021-02-26 06:44:51
|
custom colors, less dithering, more lz77, locality for context modeling ++++
|
|
2021-02-26 06:45:19
|
how many bpp do you get with delta palette for these images and what is your target bpp?
|
|
2021-02-26 06:45:38
|
(sorry for the many questions)
|
|
|
Scope
|
2021-02-26 06:46:16
|
<:Thonk:805904896879493180> aomenc
```--enable-paeth-intra=<arg> Enable Paeth intra prediction mode (0: false, 1: true (default))
--enable-cfl-intra=<arg> Enable chroma from luma intra prediction mode (0: false, 1: true (default))
--enable-palette=<arg> Enable palette prediction mode (0: false, 1: true (default))
--enable-cdef=<arg> Enable the constrained directional enhancement filter (0: false, 1: true (default))```
|
|
2021-02-26 06:47:39
|
I have tested delta palette on past images (I will have to check again on these)
|
|
2021-02-26 06:48:06
|
Perhaps some additional options are needed?
|
|
2021-02-26 06:48:52
|
Or that's enough: `--lossy-palette --palette=0` + speed?
|
|
|
_wb_
|
2021-02-26 06:50:10
|
That's enough, maybe should add -P 0 too
|
|
|
BlueSwordM
|
2021-02-26 06:50:54
|
`--enable-restoration=0` would also be good for AVIF aomenc-av1.
|
|
|
Scope
|
2021-02-26 06:58:42
|
Lossy-palette:
```1hxwd.png.lps9.jxl 212 447
1hxwd.png.lps9P0.jxl 209 883
1kak1.png.lps9.jxl 217 250
1kak1.png.lps9P0.jxl 215 841
1lr9k.png.lps9.jxl 169 481
1lr9k.png.lps9P0.jxl 166 577
2rzpm.png.lps9.jxl 807 738
2rzpm.png.lps9P0.jxl 785 886
UH1ppCM.png.lps9.jxl 248 116
UH1ppCM.png.lps9P0.jxl 245 235```
Lossy:
```1hxwd.avif 59 356
1kak1.avif 80 596
1lr9k.avif 46 104
2rzpm.avif 321 617
UH1ppCM.avif 88 249
1hxwd.jxl 59 491
1kak1.jxl 80 691
1lr9k.jxl 46 169
2rzpm.jxl 322 077
UH1ppCM.jxl 88 217```
It's not that much of a difference (given that these are near-lossless sizes), but a lot more compression is often needed and this was a test with higher quality (AVIF can look good with much denser compression)
|
|
|
_wb_
|
2021-02-26 07:03:59
|
It would be useful to make an encoder for delta-palette that has adjustable target quality and that detects large surfaces of constant color and puts them in the palette (or just any color that occurs frequently enough)
|
|
2021-02-26 07:05:16
|
Maybe Kornel would be interested in that. He made pngquant a lot better than it was, for example.
|
|
|
Scope
|
2021-02-26 07:05:59
|
Yep, it would be nice to have a delta-palette mode with even more compression, where other lossy techniques are additionally used
|
|
|
_wb_
|
2021-02-26 07:18:34
|
The delta palette encoder can choose how much deviation to allow and where to allow it. It could theoretically produce anything between (probably very inefficient) lossless and very lossy (e.g. if it just very often says "predicted value is good enough, use delta 0,0,0")
|
|
2021-02-26 07:22:47
|
Currently it only uses the default palette (the implicit absolute colors that are at indices higher than the palette size, and delta colors that are at negative indices), and iirc it just picks whatever implicit value gives a color nearest to the correct color, with a simple 1,2,1 weighing of R,G,B.
|
|
|
Scope
|
2021-02-26 10:12:16
|
Hmm, maybe I should try encoding content with mostly lines and black and white colors, like manga 🤔
|
|
|
|
Deleted User
|
|
Scope
<@!532010383041363969> <@!794205442175402004> Another comparison, but when JXL quality is between -d 3.5 and -d 4.5 (in the past it was up to -d 8) <https://slow.pics/c/Ri6dHVlu>
|
|
2021-02-26 10:13:31
|
Oh, another comparison? Ok, here's the first image, just like before with `-s 9 --noise=0 --dots=0 --patches=0 --epf=3 --gaborish=1` and targeted size.
|
|
|
Jyrki Alakuijala
|
|
_wb_
Currently it only uses the default palette (the implicit absolute colors that are at indices higher than the palette size, and delta colors that are at negative indices), and iirc it just picks whatever implicit value gives a color nearest to the correct color, with a simple 1,2,1 weighing of R,G,B.
|
|
2021-02-26 11:16:17
|
no, I have a complex rgb metric there -- actually I'm quite proud of it, could be worth to port to many other projects using rgb diffs
|
|
2021-02-26 11:16:54
|
it even models primitively the rgb compression in lms directions
|
|
2021-02-26 11:17:05
|
getting it right is iirc about 5 % better butteraugli scores
|
|
2021-02-26 11:17:14
|
here some low bpp improvements:
|
|
2021-02-26 11:17:28
|
vardct -d 11
|
|
2021-02-26 11:17:50
|
before
|
|
2021-02-26 11:18:05
|
after
|
|
2021-02-26 11:18:35
|
trying to clean that up and get it submitted ... but I'm proud of this 😄
|
|
2021-02-26 11:18:42
|
it is also deleting code rather than adding 😛
|
|
|
BlueSwordM
|
2021-02-26 11:18:45
|
Wow, that is an impressive difference.
|
|
2021-02-26 11:18:57
|
Not only is the PNG filesize smaller(indicating less artifacting), but I can also tell how much cleaner it looks at 1st glance.
|
|
|
_wb_
|
|
Jyrki Alakuijala
no, I have a complex rgb metric there -- actually I'm quite proud of it, could be worth to port to many other projects using rgb diffs
|
|
2021-02-26 11:19:27
|
Ah I hadn't seen that yet (https://gitlab.com/wg1/jpeg-xl/-/blob/master/lib/jxl/modular/transform/palette.h#L124) — older versions did something simpler there.
|
|
|
Jyrki Alakuijala
|
|
_wb_
Ah I hadn't seen that yet (https://gitlab.com/wg1/jpeg-xl/-/blob/master/lib/jxl/modular/transform/palette.h#L124) — older versions did something simpler there.
|
|
2021-02-26 11:21:39
|
I really consider it one of my 'masterpieces' because it is rgb diff tuned to my xyb creation, and it makes sense, but it is definitely not obvious and I doubt that anyone else has ever come up with anything like it
|
|
2021-02-26 11:23:45
|
if (c == 2 && ((a[2] + b[2]) < 1.22 * ave3)) {
weight -= 0.5;
}
|
|
2021-02-26 11:24:00
|
this is brilliant for palette use
|
|
2021-02-26 11:24:04
|
😛
|
|
2021-02-26 11:24:32
|
unfortunately it looks like a confused schoolboy had coded it
|
|
|
Scope
|
2021-02-26 11:25:05
|
<@!532010383041363969> <@!794205442175402004> Comparison on black and white manga, with medium-low and lower bpp [image size] <https://slow.pics/c/RaX7RJA5>
|
|
2021-02-26 11:26:53
|
|
|
2021-02-26 11:27:16
|
|
|
|
|
Deleted User
|
2021-02-26 11:27:59
|
I'll post my version soon
|
|
2021-02-26 11:28:15
|
<@!111445179587624960> are you using the latest commit?
|
|
|
Jyrki Alakuijala
|
2021-02-26 11:28:18
|
it is clear that we need to improve on these
|
|
2021-02-26 11:28:26
|
I also doubt that Scope is using 0.3.0
|
|
2021-02-26 11:28:33
|
or earlier
|
|
2021-02-26 11:28:44
|
because I feel that in 0.3.2 I have fixed some of those things
|
|
|
Scope
|
|
Jyrki Alakuijala
|
2021-02-26 11:28:59
|
(can be that I'm overly hopeful)
|
|
|
_wb_
|
|
Jyrki Alakuijala
if (c == 2 && ((a[2] + b[2]) < 1.22 * ave3)) {
weight -= 0.5;
}
|
|
2021-02-26 11:29:54
|
Shouldn't that be `if (c == 2 && ((a[2] + b[2]) * 1.22f < ave3)) {` there? I.e. blue is even less important if there's less B than average of R,G?
|
|
|
Jyrki Alakuijala
|
2021-02-26 11:30:27
|
I'm doing something wrong for having details in gray backgrounds -- it shouldn't be a big diff to having white background
|
|
|
Scope
|
2021-02-26 11:30:34
|
I always use the latest builds of all encoders when comparing (if there are no critical bugs)
|
|
|
Jyrki Alakuijala
|
2021-02-26 11:30:53
|
Thank you for confirming my deepest fears Scope!
|
|
|
_wb_
Shouldn't that be `if (c == 2 && ((a[2] + b[2]) * 1.22f < ave3)) {` there? I.e. blue is even less important if there's less B than average of R,G?
|
|
2021-02-26 11:31:29
|
I used simplex search to find the 1.22f, I didn't want to think
|
|
2021-02-26 11:32:13
|
it is just the level where that rule kicks in because of L and M receptors are already saturated not to be receptive for blue
|
|
|
Scope
|
2021-02-26 11:33:05
|
This is also avifenc encoding without tune and other options, only speed and quality
|
|
|
Jyrki Alakuijala
|
2021-02-26 11:33:22
|
when there are crazy constants in my code and they are not 0.7777777f they are often found by simplex search against a somewhat relevant optimization corpus
|
|
2021-02-26 11:33:38
|
when things fail, it means that I need to add stuff into the optimization corpus
|
|
|
Scope
<@!532010383041363969> <@!794205442175402004> Comparison on black and white manga, with medium-low and lower bpp [image size] <https://slow.pics/c/RaX7RJA5>
|
|
2021-02-26 11:34:07
|
looks like I have a lot of work
|
|
|
|
Deleted User
|
|
Jyrki Alakuijala
because I feel that in 0.3.2 I have fixed some of those things
|
|
2021-02-26 11:34:09
|
I've seen your low-bpp improvements on Air Force chapel and the lines got blurrier, but more accurate. Scope's encodes behave like the old version, they're sharper, but a bit jagged. Scope confirmed using the latest compile, so it must be something else. I'm using `-s 9`, but it didn't differ *that* much compared to `-s 8`. Main differences are `--epf=3` and `gaborish=1` in my command line (just in case gaborish isn't default). I'm also disabling noise, dots and patches (IMHO they're not helpful with that kind of imagery and they'd probably slow down encoding a bit, correct me if I'm wrong).
|
|
|
Jyrki Alakuijala
|
|
I've seen your low-bpp improvements on Air Force chapel and the lines got blurrier, but more accurate. Scope's encodes behave like the old version, they're sharper, but a bit jagged. Scope confirmed using the latest compile, so it must be something else. I'm using `-s 9`, but it didn't differ *that* much compared to `-s 8`. Main differences are `--epf=3` and `gaborish=1` in my command line (just in case gaborish isn't default). I'm also disabling noise, dots and patches (IMHO they're not helpful with that kind of imagery and they'd probably slow down encoding a bit, correct me if I'm wrong).
|
|
2021-02-26 11:35:13
|
that is what I have been aiming for -- I consider the effort 33 % complete
|
|
|
I've seen your low-bpp improvements on Air Force chapel and the lines got blurrier, but more accurate. Scope's encodes behave like the old version, they're sharper, but a bit jagged. Scope confirmed using the latest compile, so it must be something else. I'm using `-s 9`, but it didn't differ *that* much compared to `-s 8`. Main differences are `--epf=3` and `gaborish=1` in my command line (just in case gaborish isn't default). I'm also disabling noise, dots and patches (IMHO they're not helpful with that kind of imagery and they'd probably slow down encoding a bit, correct me if I'm wrong).
|
|
2021-02-26 11:36:30
|
my first iteration slowed down the encoding 25 % at default settings -- then we launched 0.3.2 -- then I slowed it down another 30 % with a promise to recover and recovered -- now I have new possible slowdowns
|
|
2021-02-26 11:36:37
|
but I have plans on how to recover the speed
|
|
2021-02-26 11:36:50
|
currently we try dct64x64 first and start splitting from there
|
|
2021-02-26 11:37:15
|
I believe that if I reverse that to try the 8x8 transforms first and merge, I can make things a lot faster
|
|
2021-02-26 11:37:42
|
but I'm scared of big quality changes, so I proceed step-by-step to keep things working while providing some improvements
|
|
2021-02-26 11:38:47
|
I am mostly using the codec without -s setting in all the optimization work I do
|
|
2021-02-26 11:39:06
|
I anticipate that that will be the normal way to use it
|
|
2021-02-26 11:39:39
|
I'm secretly hoping that people would also use it without -d and we would get internet filled with -d 1 images with near-perfect quality
|
|
|
Scope
|
2021-02-26 11:39:52
|
My main idea was to test the default settings on the encoders, also `--epf=3` and `gaborish=1` although somewhat help lines quality, but it gets worse in other areas
|
|
|
Jyrki Alakuijala
|
2021-02-26 11:40:23
|
those filters improve quality and comfort, but they slow down decoding, too
|
|
|
|
Deleted User
|
|
Scope
My main idea was to test the default settings on the encoders, also `--epf=3` and `gaborish=1` although somewhat help lines quality, but it gets worse in other areas
|
|
2021-02-26 11:40:24
|
Yep, I also noticed that
|
|
|
Jyrki Alakuijala
|
2021-02-26 11:40:56
|
one of the worse weaknesses of our solution right now is the decoding speed on old arm cpus and all this filtering is contributing
|
|
2021-02-26 11:41:25
|
I'm hoping to change the dct quantization in clever ways to get some fraction (20-30 %) of filtering benefits without actually using filtering
|
|
2021-02-26 11:41:37
|
but I'm not yet working on that
|
|
|
|
Deleted User
|
2021-02-26 11:41:49
|
I don't know what exactly makes Scope's lines sharper and more jagged, so I'm going to do some additional test encodes in order to determine what influences those lines the most:
- `-s 9` only (with gaborish and EPF off),
- gaborish off and EPF 3,
- gaborish on and EPF 0,
- and finally gaborish on and EPF 3 (my current command).
|
|
|
Jyrki Alakuijala
|
2021-02-26 11:42:07
|
another clever idea that I had that we used in brunsli is that 2d dct has a weird property...
|
|
2021-02-26 11:42:46
|
if you compute sums and alternating sums of dct coefficients across columns and rows, you end up having an extrapolated 1d dct of the edges of the 2d block
|
|
2021-02-26 11:43:03
|
we use that for context modeling in brunsli and for smoothing in knusperli
|
|
2021-02-26 11:43:20
|
we can also use that for quantization in jpeg xl to have less block-to-block disagreement
|
|
2021-02-26 11:43:56
|
if less border artefacts overall, there is less need for smoothing
|
|
2021-02-26 11:45:34
|
computing sums and alternating sums is a lot faster and simpler than doing pretty much anything else with the dct
|
|
2021-02-26 11:46:02
|
usually a lot of head scratching and butterfly computations are involved, but this is just delightfully simple and fast stuff
|
|
2021-02-26 11:57:30
|
ziemek.z and Scope -- if you are able to recompile, try with a lower and a higher kDcQuant value
|
|
2021-02-26 11:57:59
|
perhaps we are putting all bits in the dc value and not enough is left for ac
|
|
|
Scope
Lossy-palette:
```1hxwd.png.lps9.jxl 212 447
1hxwd.png.lps9P0.jxl 209 883
1kak1.png.lps9.jxl 217 250
1kak1.png.lps9P0.jxl 215 841
1lr9k.png.lps9.jxl 169 481
1lr9k.png.lps9P0.jxl 166 577
2rzpm.png.lps9.jxl 807 738
2rzpm.png.lps9P0.jxl 785 886
UH1ppCM.png.lps9.jxl 248 116
UH1ppCM.png.lps9P0.jxl 245 235```
Lossy:
```1hxwd.avif 59 356
1kak1.avif 80 596
1lr9k.avif 46 104
2rzpm.avif 321 617
UH1ppCM.avif 88 249
1hxwd.jxl 59 491
1kak1.jxl 80 691
1lr9k.jxl 46 169
2rzpm.jxl 322 077
UH1ppCM.jxl 88 217```
It's not that much of a difference (given that these are near-lossless sizes), but a lot more compression is often needed and this was a test with higher quality (AVIF can look good with much denser compression)
|
|
2021-02-26 11:58:57
|
Thank you!
|
|
|
Scope
Yep, it would be nice to have a delta-palette mode with even more compression, where other lossy techniques are additionally used
|
|
2021-02-27 12:01:09
|
we could turn off dithering at first -- that is often a -40 % in file size in other methods (didn't try it in this use)
|
|
|
Scope
|
2021-02-27 12:03:06
|
Okay, I'll try it, does this value need to be changed in one place?
Also surprisingly on content where there are only lines, AVIF reproduces them very accurately (they are not thinner, disappear, bend in other ways) and that is why people with this kind of content are so interested in AVIF (from storage to various services)
This is also why I try to show and test on the weak points of Jpeg XL first
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:03:30
|
enc_adaptive_quantization.cc
|
|
2021-02-27 12:03:42
|
increase it by 20 % and decrease it by 20 %
|
|
2021-02-27 12:03:52
|
I don't remember what direction saves bits
|
|
2021-02-27 12:03:58
|
probably increasing
|
|
2021-02-27 12:04:45
|
I believe AVIF goes into 'screen capture' mode for those lines -- but don't know for sure
|
|
2021-02-27 12:05:15
|
all integral transforms are panicking when they see simple oblique lines are create a lot of mess
|
|
|
Scope
|
2021-02-27 12:06:23
|
However, JXL is better on the background (AVIF has noticeable squares and banding)
|
|
2021-02-27 12:06:56
|
On the second image and low bpp
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:10:02
|
people don't look at the background -- only butteraugli cares about it 😄
|
|
2021-02-27 12:10:30
|
when you put the kDcQuant high enough you will get banding with JXL, too
|
|
2021-02-27 12:10:47
|
--progressive_dc will come to rescue at some stage
|
|
2021-02-27 12:10:56
|
but even that is not magic
|
|
2021-02-27 12:11:24
|
having major dc artefacts is usually a much worse failure mode than having some amount of ac artefacts
|
|
|
Scope
|
2021-02-27 12:13:57
|
Also, yes, -d 1 by default will hopefully save the web from a lot of overcompressed images (and adjusting quality by metric in general)
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:19:55
|
many nice technology efforts were used to give worse quality to users -- like the 1st gen digital tv
|
|
2021-02-27 12:20:14
|
I certainly hope that that will not happen with JPEG XL
|
|
2021-02-27 12:21:03
|
-d 1 compresses to about current average bit rates, even slightly below
|
|
2021-02-27 12:21:51
|
if some part of the quality improvement will be used for bit rate and some part for density, we may end up with -d 1.5 or so as the new 'internet quality'
|
|
|
Scope
|
2021-02-27 12:22:56
|
With AVIF however, I notice that people compress images very heavily (even when it is not needed), precisely because the artifacts are very well masked (and the loss of detail is not so noticeable)
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:23:53
|
that is a bit scary for me
|
|
2021-02-27 12:24:17
|
if it looks ok, but is possibly semantically changed, it can have interesting effects
|
|
2021-02-27 12:24:52
|
like people can today use their old vacation photos from the beach to track the growth of a mole on their skin
|
|
2021-02-27 12:25:28
|
if we occasionally leave it out but otherwise create a nice looking photo, people can become worried
|
|
2021-02-27 12:26:08
|
there could be a crack on the engine block, but compression removes the crack
|
|
2021-02-27 12:26:11
|
etc.
|
|
|
|
Deleted User
|
2021-02-27 12:26:26
|
Another example, this comparison: https://slow.pics/c/CGOCjUbz
|
|
|
Scope
|
2021-02-27 12:26:30
|
Some people even re-compress highly compressed Jpegs to remove ringing artifacts
|
|
|
Jyrki Alakuijala
|
|
|
Deleted User
|
2021-02-27 12:26:44
|
Look at the heart in this comparison and see what happens with the marked line in every codec.
|
|
2021-02-27 12:28:14
|
In AVIF it gets cut off partially, in WebP2 it vanishes almost completely (!!!), and JXL is the ONLY codec that preserves that line, although blurry because of compression.
|
|
2021-02-27 12:29:35
|
Yet another proof that JPEG XL cares about being faithful to the original 😃
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:30:31
|
reds are very difficult for color modeling
|
|
2021-02-27 12:30:46
|
if AVIF is done in the XYB colorspace it likely gets that right
|
|
|
|
Deleted User
|
|
Jyrki Alakuijala
if AVIF is done in the XYB colorspace it likely gets that right
|
|
2021-02-27 12:31:10
|
Can it be done? It'd be awesome to see! Interesting at least.
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:31:22
|
it is nearly possible
|
|
2021-02-27 12:31:39
|
ICC profile is pretty expressive
|
|
2021-02-27 12:32:00
|
Luca and Sami have created an XYB ICC profile
|
|
2021-02-27 12:32:12
|
or nearly the same thing
|
|
2021-02-27 12:32:43
|
we don't know if it works any better, but in my thinking it should solve that problem and the problem of white clouds vs. blue sky
|
|
2021-02-27 12:35:11
|
usually simplistic color modeling (YUV/RGB) thinks that white clouds can be merged with the bright blue sky, or at least it is not a big thing
|
|
2021-02-27 12:35:45
|
it is because blue details usually just doesn't matter at all
|
|
2021-02-27 12:36:03
|
but when blue is poking out from r and g, then it becomes a stronger visual element
|
|
2021-02-27 12:36:24
|
that kind of non-linearity is not possible to model in yuv
|
|
2021-02-27 12:37:17
|
L and M receptors can receive blue light, they are just usually saturated with R and G
|
|
|
|
Deleted User
|
2021-02-27 12:37:26
|
Sorry to interrupt, but Jon created X-B plots with constant Y. If they're supposed to be the same perceivable brightness, why is there so much blue in darker Y's?
https://cdn.discordapp.com/attachments/794206170445119489/811627202097315840/xyb.png
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:38:05
|
XYB is made for high frequency colors
|
|
2021-02-27 12:38:38
|
if you have one pixel row of a color delta and the next pixel row of the opposing delta
|
|
2021-02-27 12:38:46
|
repeat 4 times
|
|
2021-02-27 12:38:52
|
i.e., ac colors
|
|
2021-02-27 12:39:04
|
XYB doesn't work well for smooth colors
|
|
2021-02-27 12:39:18
|
or -- it is ok for smooth colors but not the best
|
|
2021-02-27 12:39:29
|
CIE1930 solved smooth colors very well
|
|
|
|
Deleted User
|
2021-02-27 12:39:36
|
You know about Oklab, another perceptual color space
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:39:50
|
yes, it is based on CIE
|
|
2021-02-27 12:40:00
|
I anticipate that it is better for smooth colors
|
|
|
|
Deleted User
|
2021-02-27 12:40:09
|
Here's a hue plot with constant luma and chroma:
|
|
2021-02-27 12:40:09
|
https://bottosson.github.io/img/oklab/hue_oklab.png
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:40:17
|
also, it differs from butteraugli xyb by not having a bias
|
|
2021-02-27 12:40:28
|
oklab gives beautiful smooth colors
|
|
|
|
Deleted User
|
2021-02-27 12:40:32
|
It's as constant luma as it can be
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:40:43
|
yes, perfect
|
|
|
|
Deleted User
|
2021-02-27 12:40:47
|
Same plot as above, but in HSV:
|
|
2021-02-27 12:40:48
|
https://bottosson.github.io/img/oklab/hue_hsv.png
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:41:00
|
disgusting
|
|
|
|
Deleted User
|
2021-02-27 12:41:16
|
You can probably see that blue in the middle is darker
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:41:20
|
oklab has many same ideas with xyb
|
|
2021-02-27 12:41:33
|
xyb has a linear ramp for dark colors -- much much better for compression
|
|
2021-02-27 12:42:00
|
xyb is for HF colors, oklab for LF colors -- if image has information in texture, xyb is better
|
|
|
|
Deleted User
|
|
You can probably see that blue in the middle is darker
|
|
2021-02-27 12:42:05
|
And Oklab actually "sees" this darker blue, here's HSV's luma seen by Oklab plotted here:
|
|
2021-02-27 12:42:06
|
https://bottosson.github.io/img/oklab/hue_hsv_lightness.png
|
|
2021-02-27 12:42:50
|
Not only compression, I'm also interested in image processing, denoising in particular
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:43:08
|
https://observablehq.com/@raphlinus/perceptually-smooth-multi-color-linear-gradients
|
|
2021-02-27 12:43:17
|
here you can compare xyb vs oklab in javascript
|
|
2021-02-27 12:43:24
|
there are two different xybs
|
|
2021-02-27 12:43:27
|
one in jpeg xl
|
|
2021-02-27 12:43:32
|
and one in butteraugli
|
|
2021-02-27 12:43:35
|
...
|
|
2021-02-27 12:43:53
|
one in butteraugli is a biased log and weird spectra for xyb
|
|
2021-02-27 12:44:20
|
one in jpeg xl is a biased cube root with easier to understand spectra for xyb
|
|
2021-02-27 12:44:36
|
same basic ideas
|
|
2021-02-27 12:45:02
|
we don't want to compute three logs/exps for each pixel in jpeg xl 🙂
|
|
2021-02-27 12:45:22
|
six muls is much more attractive per pixel than three exps
|
|
|
|
Deleted User
|
2021-02-27 12:46:31
|
For image compression XYB will probably be better than Oklab, but I've got a question about image processing.
|
|
|
bonnibel
|
2021-02-27 12:49:05
|
werent cam16-ucs & jzazbz the most perceptually uniform colour spaces atm? _trying to half-remember some papers she read on a wikipedia binge_
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:49:11
|
I would not make a lot of conclusions based on Jon's XYB plots vs the oklab plot
|
|
2021-02-27 12:49:17
|
they are different things
|
|
2021-02-27 12:49:36
|
bonnibel -- depends on perception of what
|
|
2021-02-27 12:49:58
|
highest frequency vision is bichromatic, low frequency vision is trichromatic
|
|
2021-02-27 12:50:04
|
no S receptors in the fovea
|
|
2021-02-27 12:50:31
|
if your color discs are 10 degrees or 2 degrees, they are solidly in the trichromatic space
|
|
2021-02-27 12:50:47
|
if they are 0.03 degrees, they approach the bichromatic space
|
|
2021-02-27 12:51:23
|
pretty much every 'truth' about human perception is a coarse approximation
|
|
2021-02-27 12:51:29
|
for both vision and hearing
|
|
|
|
Deleted User
|
2021-02-27 12:51:44
|
Chroma denoising in various programs, even commercial ones, is probably done in Lab, ITU YCbCr or some other not really perceptual color spaces (I know that because I put an image into GIMP, subsampled chroma and put back components, results were similar to excessive chroma denoising). You probably know how excessive chroma denoising destroys color information.
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:52:09
|
they just recently (like 20 years ago) found out that some middle cells in retina can also receive light and modulate their behaviour based on light reception
|
|
|
|
Deleted User
|
2021-02-27 12:52:18
|
<@!532010383041363969> so here's a big question: which color space would be better for better chroma denoising, Oklab or XYB?
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:53:11
|
XYB and denoising B is safer than Oklab and denoising U
|
|
2021-02-27 12:53:27
|
denoising X is usually not safe
|
|
2021-02-27 12:53:39
|
X will have 4x more noise than Y, so something can be done
|
|
2021-02-27 12:53:59
|
the eye is also about 4x less sensitive for X noise then Y noise
|
|
2021-02-27 12:54:24
|
but the detectable noise level depends on background color
|
|
2021-02-27 12:54:45
|
depends why you want to denoise, too
|
|
|
|
Deleted User
|
2021-02-27 12:54:46
|
For example I've been fiddling recently with Topaz DeNoise AI. While luma denoising is state-of-the-art, chroma denoising is as mediocre as everywhere else and loses details.
|
|
2021-02-27 12:55:11
|
That denoiser is truly addictive...
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:55:21
|
it is highly non-linear and the X/B direction rotates in RGB space with the background color
|
|
2021-02-27 12:55:37
|
I'd recommend trying that out in XYB
|
|
2021-02-27 12:55:42
|
the denoising
|
|
2021-02-27 12:56:30
|
oklab denoising wouldn't work for dark areas
|
|
2021-02-27 12:56:44
|
because no biasing/no linear ramp (like in sRGB)
|
|
|
|
Deleted User
|
2021-02-27 12:57:22
|
I can't really convince Topaz Labs' R&D Team to implement Oklab or XYB in DeNoise AI in order for some random from the interwebs to try out lol
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:57:25
|
also the S receptor response adds to the CIE color space luma, but doesn't add to the XYB's luma
|
|
2021-02-27 12:57:34
|
haha
|
|
|
|
Deleted User
|
|
Jyrki Alakuijala
oklab denoising wouldn't work for dark areas
|
|
2021-02-27 12:58:30
|
Ok, that's a bad thing, especially because dark areas are quite common in photos. Why does it happen in Oklab, worse accuracy in darks?
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:58:49
|
oklab compression function is pure cubic root
|
|
2021-02-27 12:59:03
|
cube is scale invariant
|
|
|
|
Deleted User
|
2021-02-27 12:59:06
|
So worse accuracy in darks?
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:59:08
|
this is beautiful for maths
|
|
2021-02-27 12:59:28
|
but it has too much accuracy close to zero
|
|
2021-02-27 12:59:50
|
when you try smoothing there with too much accuracy, no smoothing will actually happen/be observable
|
|
|
|
Deleted User
|
2021-02-27 01:01:04
|
Maybe properly trained ML denoising model (because that's what Topaz is using) would account for that? ML models can learn some properties no human could've ever noticed.
|
|
|
BlueSwordM
|
2021-02-27 01:08:41
|
Nah, just let aomenc denoise.
|
|
2021-02-27 01:08:46
|
It does quite well by itself. <:kekw:808717074305122316>
|
|
|
|
Deleted User
|
2021-02-27 01:09:15
|
<:MonkaChrist:654081051513061388>
|
|
2021-02-27 01:10:20
|
So if the model notices dark areas in the photo, I'm wondering if it could be trained to know that it should denoise those areas stronger in Oklab because otherwise it wouldn't be visible at all after converting it back to sRGB...
|
|
|
Jyrki Alakuijala
|
2021-02-27 01:10:57
|
yes, in oklab it should smooth stronger there
|
|
2021-02-27 01:11:14
|
but having to do such tweaks defeats the purpose of a colorspace
|
|
2021-02-27 01:11:22
|
when all things are right, you just do the simple thing
|
|
|
|
Deleted User
|
|
Jyrki Alakuijala
but having to do such tweaks defeats the purpose of a colorspace
|
|
2021-02-27 01:14:27
|
Though it's probably one of the easiest properties that ML model has to learn on its own...
|
|
2021-02-27 01:15:10
|
But you're right about colorspaces, they should Just Work™️
|
|
2021-02-27 01:23:44
|
Honestly I'd just re-train the models with exact same learning data, but in both XYB and Oklab and compare the results.
|
|
2021-02-27 01:37:29
|
<@!532010383041363969> oh, and another crazy idea before I go. I'm also interested in audio and obviously know about Fletcher-Munson curves (equal-loudness curves). I'm wondering if it's possible to make equal-color 3D LUT by interviewing people, showing them random colors and asking them if they differ in brightness and if they do, then which one is brighter. Because that's essentially how Fletcher and Munson made their curves. That'd probably make perfect luma separation possible...
|
|
|
Jyrki Alakuijala
|
2021-02-27 02:00:58
|
funny that you like audio -- I'm working on that, too
|
|
2021-02-27 02:01:32
|
do you know http://www.machinehearing.org/
|
|
2021-02-27 02:01:56
|
I have heard very good things about this book
|
|
|
|
Deleted User
|
|
Jyrki Alakuijala
funny that you like audio -- I'm working on that, too
|
|
2021-02-27 02:03:03
|
https://tenor.com/view/culture-man-of-culture-cultured-gif-10903367
|
|
|
Jyrki Alakuijala
|
2021-02-27 02:03:14
|
another interesting thing in hearing is the CARFAC model
|
|
|
|
Deleted User
|
|
Jyrki Alakuijala
do you know http://www.machinehearing.org/
|
|
2021-02-27 02:03:22
|
Haven't heard of that one, unfortunately
|
|
|
Jyrki Alakuijala
|
2021-02-27 02:03:51
|
the author is guiding the project that I setup in that domain
|
|
|
|
Deleted User
|
2021-02-27 02:04:00
|
I was mainly sitting on HydrogenAudio and testing Opus Codec, been there since opusenc 1.2
|
|
|
Jyrki Alakuijala
|
2021-02-27 02:04:02
|
currently we are looking into partial loudness models
|
|
2021-02-27 02:04:24
|
I hope to eventually bring some new ideas into audio compression from that work
|
|
|
|
Deleted User
|
2021-02-27 02:04:27
|
Now since the audio compression tech matured, I moved my interest to images
|
|
|
Jyrki Alakuijala
|
2021-02-27 02:04:37
|
now it is still in deep research
|
|
2021-02-27 02:05:06
|
nothing in tech is mature 😄
|
|
2021-02-27 02:05:12
|
it will take another 500 years
|
|
2021-02-27 02:05:59
|
We are at times like 50 years after Gutenberg invented press -- there is still room for improvement 🙂
|
|
|
|
Deleted User
|
2021-02-27 02:06:36
|
Ok, in another words: general use, "classic" audio compression technology is mature
|
|
|
Jyrki Alakuijala
|
2021-02-27 02:07:25
|
this is very interesting, but let's chat more another time, I need to go into bed...
|
|
|
|
Deleted User
|
|
Ok, in another words: general use, "classic" audio compression technology is mature
|
|
2021-02-27 02:07:51
|
Because there's still some research on narrow use-case compression (e.g. codec2) or AI-based compression (but this one will revolutionise every field, not only sound, images too)
|
|
|
Jyrki Alakuijala
this is very interesting, but let's chat more another time, I need to go into bed...
|
|
2021-02-27 02:08:02
|
I also think that's enough **for now** 😉
|
|
|
BlueSwordM
|
|
Jyrki Alakuijala
funny that you like audio -- I'm working on that, too
|
|
2021-02-27 02:12:52
|
Opus 1.4? 😛
Anyway, sorry for bothering you. Good night. 🛏️
|
|
2021-02-27 02:19:40
|
I'm still waiting on rnnoise integration into Opus' Silk for even higher quality(less random noise=better compression) VLB speech.
|
|
|
|
Deleted User
|
|
BlueSwordM
Opus 1.4? 😛
Anyway, sorry for bothering you. Good night. 🛏️
|
|
2021-02-27 02:22:57
|
> Opus 1.4
God I wish... Opus 1.3.1 is already good, but can it be made even better? Opus development unfortunately stagnated, it's been half a year from 1.3 to 1.3.1, now we've got barely any news (if any at all) since Apr 12, 2019 (1.3.1 release date).
|
|
|
BlueSwordM
|
2021-02-27 02:23:40
|
Yes. It can be even better I bet, especially at lower bitrates for speech.
|
|
|
|
Deleted User
|
|
BlueSwordM
I'm still waiting on rnnoise integration into Opus' Silk for even higher quality(less random noise=better compression) VLB speech.
|
|
2021-02-27 02:25:24
|
Amateur. I'm denoising my mic before the sound reaches any app 😉
|
|
|
BlueSwordM
|
2021-02-27 02:25:52
|
Same here. I've got Cadmus running, which runs the audio through rnnoise, detecting whether or not I'm actually speaking.
|
|
|
|
Deleted User
|
2021-02-27 02:26:13
|
For me it's Equalizer APO + Werman's RNNoise DLL, because I'm on Windows.
|
|
2021-02-27 02:26:18
|
Are you on Linux? ...ok, I've just searched for Cadmus and it's for Linux.
|
|
|
Scope
|
2021-02-27 02:38:40
|
|
|
2021-02-27 03:17:44
|
Low BPP
D20 `kDcQuant = 0.89`
I20 `kDcQuant = 1.34`
<https://slow.pics/c/tApsL00L>
|
|
2021-02-27 03:20:27
|
Visually different, but it didn't help much
|
|
|
Jyrki Alakuijala
ziemek.z and Scope -- if you are able to recompile, try with a lower and a higher kDcQuant value
|
|
2021-02-27 03:24:16
|
<:This:805404376658739230>
|
|
|
|
Deleted User
|
|
Scope
<:This:805404376658739230>
|
|
2021-02-27 03:53:09
|
For me unfortunately it's PITA to recompile this thing, that stuff takes lots of RAM and now I'm low on memory, *again*. Fortunately you took care of compiling this thing 🙂
|
|
|
Scope
|
2021-02-27 03:56:40
|
Yep, but, it did not help much, perhaps in some areas `kDcQuant = 1.34` is better, but in others its worse
|
|
|
|
Deleted User
|
2021-02-27 04:14:49
|
Same thing for me, it's neither better nor worse, it's just different.
|
|
|
_wb_
|
|
Sorry to interrupt, but Jon created X-B plots with constant Y. If they're supposed to be the same perceivable brightness, why is there so much blue in darker Y's?
https://cdn.discordapp.com/attachments/794206170445119489/811627202097315840/xyb.png
|
|
2021-02-27 07:18:08
|
Those plots were made in a lazy way: I just let X and B vary while keeping Y constant per subimage. That means that at the edges, the plots have "impossible" color combinations that would never happen when you start from RGB and convert it to XYB. For example, in the darkest one, the blue at the bottom is where Y is very low but B is very high — but that does not actually happen: there is no RGB combination that will map to that XYB combination. The inverse XYB transform maps it to some RGB values, and that's what you see there. But a more accurate way of making such plots would only show the part of XYB that is possible, and then you would see that the shape is not a square, and at the darks and at the brights, the area of X,B values is much smaller than at the mid-values of Y.
|
|
2021-02-27 07:20:30
|
|
|
2021-02-27 07:21:09
|
The current XYB space might be slightly different, I made this visualization a while ago
|
|
2021-02-27 07:22:02
|
That's XYB on the left, YCbCr in the middle, YCoCg on the right
|
|
2021-02-27 07:25:40
|
(there are some holes in the XYB slices because populating them with all 8-bit sRGB colors does not reach all pixels of the plot, but you get the idea)
|
|
|
Jyrki Alakuijala
|
2021-02-27 12:40:44
|
this looks smart and nice https://www.youtube.com/watch?v=eNOGqNCbcV8
|
|
2021-02-27 01:04:39
|
I like how they consider the original spectrum of captured light instead of trying to juggle it when it is already too late
|
|
2021-02-27 01:04:56
|
that is very similar to the thinking I had when creating XYB
|
|
2021-02-27 01:05:50
|
trying to give it a 1st principles systemization approach instead of loads of glue, cargo cult and inherited rules of thumb carried over from the analog computer era 😛
|
|
2021-02-27 01:07:37
|
basic physics (at my level of knowledge) indicate that photos don't compress -- they just superposition, gamma compression can only happen once they are no longer photons
|
|
2021-02-27 01:08:40
|
the process that converts them into chemistry can be modeled as a differential equation, but that process absorbs wide spectra of light
|
|
2021-02-27 01:09:31
|
the compession process (mostly in the receptor itself I believe) cannot know which wavelength the photon had before being converted into chemistry
|
|
2021-02-27 01:10:02
|
because of it we need a 3x3 matrix that models the conversion of linear light into the received light in the LMS receptors
|
|
2021-02-27 01:11:20
|
and hey, while at it, let's make it 4x4 homogeneous transform so that we can add the spontaneous triggering of that process (which also biases the dynamics)
|
|
2021-02-27 01:12:17
|
after that matrix we gamma compress, like the opsin dynamics process in LMS cells
|
|
2021-02-27 01:13:13
|
at that stage we have what is close to LMS, and we do X = M-L, Y = M + L and B=S (or B=S-Y, to decorrelate a bit more)
|
|
2021-02-27 01:14:57
|
after that we find Y->B and Y->X decorrelation factor (spatially varying images), similar to chroma-from-luma in other systems
|
|
2021-02-27 01:15:20
|
doing this right allows for two interesting things:
|
|
2021-02-27 01:15:44
|
we can store the B channel with less spatial accuracy
|
|
2021-02-27 01:17:13
|
we can do higher (dead-zone) quantiation for the X channel, and use the bits for the Y channel -- the perception of XY is highly elliptical and our formalism knows the direction of that ellipse for a given background color, other systems can do it wrong -- especially for deep reds
|
|
|
Because there's still some research on narrow use-case compression (e.g. codec2) or AI-based compression (but this one will revolutionise every field, not only sound, images too)
|
|
2021-02-27 01:19:47
|
my thinking is that it is premature to go into AI before we understand the human perception of sound
|
|
2021-02-27 01:20:13
|
the HiFi enthusiasts talk about transparency and spatiality of sound
|
|
2021-02-27 01:20:43
|
the psychoacoustic modeling people cannot trace three audio sources in space while humans can trace 17
|
|
|
Scope
|
2021-02-27 03:33:11
|
AVIF (cdef on)
|
|
2021-02-27 03:33:34
|
AVIF (cdef off)
|
|
2021-02-27 03:34:49
|
CDEF smoothes a little, but does not affect the quality much (so it's something else)
|
|
|
Jyrki Alakuijala
|
2021-02-27 03:37:53
|
Thank you Scope!!
|
|
2021-02-27 03:38:09
|
This matches with my experience about CDEF, that it is usually only a small improvement
|
|
2021-02-27 03:38:28
|
I think we do something awfully wrong in JPEG XL in integral transform selection
|
|
2021-02-27 03:42:39
|
(we tried a version of CDEF in JPEG XL and it was not impressive to us)
|
|
2021-02-27 03:43:24
|
we made the gaborish directional at a time (and tried it with an approximate reverse transform at encoding time)
|
|
2021-02-27 03:43:47
|
it was not much better or worse but much more complicated
|
|
2021-02-27 03:43:50
|
----
|
|
2021-02-27 03:44:05
|
ok, that is for CDEF -- I wonder if there is a way to disable directional predictors
|
|
|
Scope
|
2021-02-27 04:00:29
|
Yep, I have not found how to disable it through the options
|
|
2021-02-27 04:59:17
|
On a lower bpp
AVIF (default)
|
|
2021-02-27 04:59:39
|
--use-dct-only `Use DCT tx onlyq`
|
|
|
Crixis
|
2021-02-27 05:42:13
|
The best case is that is a bug of the encoder
|
|
|
Jyrki Alakuijala
|
2021-02-27 05:45:09
|
I found two minor bugs in the encoder earlier this week but they were something like 0.008 % and 0.33 % improvements
|
|
2021-02-27 05:45:28
|
it can be a thousand minor problems kind of problem too
|
|
2021-02-27 07:07:50
|
the dct looks similar to JPEG XL?
|
|
2021-02-27 07:08:13
|
I believe the quantization matrices of JPEG XL are more sloaping and in AVIF flatter
|
|
2021-02-27 07:09:02
|
if AVIF's DCT looks better than JPEG XL's basic reconstruction then it could be the quantization matrices
|
|
|
Scope
|
2021-02-27 07:11:06
|
No, it's still better, but only with this option I saw some artifacts, AVIF has very powerful techniques to save lines even with very heavy compression
|
|
2021-02-27 07:15:53
|
For example, the image size is 15,500 bytes (AVIF)
|
|
2021-02-27 07:17:19
|
JXL (33 558)
|
|
|
Crixis
|
2021-02-27 08:11:55
|
To me jxl AC choice seem pretty bad on this case, i don't know if only a good filtering from avif but:
|
|
2021-02-27 08:13:03
|
to me this nose line is so bad
|
|
2021-02-27 08:13:09
|
|
|
|
Jyrki Alakuijala
|
2021-02-27 08:13:39
|
JXL has too small integral transforms at low bitrates
|
|
2021-02-27 08:13:54
|
when it see black and white, it drops down to 8x8 dcts
|
|
2021-02-27 08:14:08
|
we know that they don't work at low bit rates
|
|