Kategorier
Kultur Teknik

Bästa bildformat?

Webben består mestadels av bilder i formatet JPEG, och så har det varit sedan begynnelsen, det vill säga sedan början av 1990-talet. Det har en utmärkt algoritm, som är snabb och typiskt ger en destruktiv kompression 10:1 mot originalet. Det betyder att en 24-bitars bild om en megapixel (1000 x 1000) reduceras från 3 MB till runt 300 kB utan förlust i perception.

Det är ändå en tung fil, varför man vanligen tummar något på kvaliteten för att åstadkomma lättare filer med en kompressionsgrad 100:1 eller mer. Ju högre kompression, desto mer distortion av olika slag framträder, som bandning av ytor eller brus av olika slag.

Formatet är även begränsat till just åtta bitar per kanal, och saknar dessutom en alfakanal för transparens. Av det skälet förekommer även formatet PNG (samt dess fattiga föregångare GIF), med stöd för alfatransparens. Å andra sidan är kompressionen ickedestruktiv, vilket ger tyngre filer, och stöd finns inte heller för andra färgmodeller än RGB. PNG är därför inte lämpligt för fotografier, utan nyttjas mest för ikoner och annan grafik.

Försök att konsolidera de båda formaten saknas inte, och JPEG-2000 med varianter är särskilt känt. Formatet har stöd för såväl ickedestruktiv komprimering som transparens, och kan hantera upp till 38 bitar per kanal. Det nyttjas flitigt i andra sammanhang, men just inte på webben, då de flesta webbläsare saknar stöd.

Orsaker härför torde vara att JPEG-2000 inte är bakåtkompatibelt, att formatet bara ger smärre vinster för mindre bilder, att det är betydligt mer processorkrävande, samt kanske även de sedvanliga patenttvisterna. Det är annars fullständigt överlägset jämfört med föregångaren.

En annan utveckling råder på på videosidan, där AVC/H.264 allt mer har kommit att ersättas med efterföljaren HEVC/H.265 (och nu även VVC/H.266). Men för video finns uppenbara vinster att göra med effektivare komprimering, varför man snabbare anammar nyare format.

Men videoformaten kan även användas för stillbild, och just HEVC har en sådan komponent i HEIC, som används på Apples plattformar. Det är ett modernt format med bättre kompression än JPEG-2000, men även här finns patenttvister och andra hinder för en bredare implementation. Inte ens Apple stödjer formatet i den egna webbläsaren.

Konkurrens är en annan faktor, och bland andra Google är involverat i att utveckla egna format för såväl video som bild. VP9 är här en motsvarighet till HEVC, om än inte med samma utbredning. VP9 har i sin tur gett upphov till AOM:s AV1, som har till syfte att kringgå patentproblemen med HEVC och därmed göra formatet mer tillgängligt.

Även AV1 har en stillbildskomponent i AVIF, ett format som likt HEIC distribueras i metafilformatet HEIF. AVIF är publikt tillgängligt utan avgifter, och har därmed en uppenbar fördel i att snabbt ha anammats av företag och utvecklare. Formatet stöds därför numera av alla större webbläsare (Chrome, Firefox, Webkit/Safari), men har ännu liten spridning.

AVIF är något mer begränsat än JPEG-2000 i termer av bitdjup (8–12 bitar), färgmodeller och andra avseenden, men har moderna algoritmer som ger en helt överlägsen kompressionsgrad och avservärt mindre distortion.

Ytterligare en pretendent i genren är WebP, ett stillbildsformat baserat på Googles videoalgoritm VP8. WebP har numera brett stöd på webben, och används allt mer flitigt – inte minst på denna blogg. WebP är avgjort mer effektivt än JPEG, med transparens och effektivare komprimering, även ickedestruktiv sådan. Däremot har det bara stöd för åtta bitar.

Vän av ordning vill här kanske inflika att de flesta skärmar ändå bara kan visa åtta bitar per kanal, men högre dynamiskt omfång ger alltså mjukare övergångar och motverkar att kraftig bandning uppstår. Det är inte heller säkert att fler bitar ger större filtyngd, eftersom algoritmerna är vågbaserade och därmed drar nytta av den större graden av kontinuitet.

Gradient 2000 px x 1000 px (AVIF, 12 bitar)

För att i någon mån utröna vilket av dessa format – WebP, AVIF, HEIC, JPEG, JPEG-2000 – som är «bäst» i någon lämplig mening, ska vi här studera hur en 16-bitars gradient med en skarp avgränsning i text renderas i de olika formaten. Det är givetvis ett högst begränsat test, som inte tar hänsyn till en rad olika situationer, och som inte heller varierar parametrar för kvalitet – vi sätter här 80 % generellt (vad det nu kan betyda). Men jag vågar ändå påstå att vi med denna information kan få klarhet i formatens för- och nackdelar.

Originalet är 2000 x 1000 i 16 bitar per kanal, vilket motsvarar 12 MB i filtyngd. Export till JPEG ger som förväntat tydliga bandlinjer istället för en steglös gradient, vilket förfular intrycket. Vid förstoring ser man även tydligt smuts kring texten, men å andra sidan är filstorleken reducerad till 95 kB, eller 1/126.

Bandning i åtta bitars AVIF (samt JPEG, WebP, HEIC)
Kontinuerlig ton i tio bitars AVIF (samt JPEG-2000)

Faktum är att samtliga format ger bandning när export sker i åtta bitar, men med bättre kompression. HEIC ger här 37 kB (1/324), WebP 33 kB (1/363) och AVIF 31 kB (1/387), det vill säga ganska likvärdiga resultat. Distortionen försvinner först vid närmast ickedestruktiv kompression, vilket för WebP motsvarar 667 kB eller blott 18:1. Det är ändå bättre än JPEG-2000, som ger 869 kB (14:1) i åtta bitar, men det duger inte för webben.

Distortion vid 8 bitars JPEG

Alla format ger även distortion kring texten vid åtta bitars export, med undantag för AVIF, som ger en helt ren rendering. Vid sexton bitar ger även JPEG-2000 ett gott resultat, men till priset av alldeles för tung filstorlek.

AVIF ger ingen distortion vid vare sig 8 eller 12 bitar

Ohotad vinnare är här AVIF i tolv bitar per kanal, med en filstorlek om blott 29 kB (1/414), och utan vare sig bandning eller distortion av annat slag – första bilden ovan. Nackdelen är emellertid att kodningen är oerhört processorintensiv, vilket är ett hinder för bredare implementering på webben, då de flesta bilder genereras på server.

WebP dras med en smutsig kantremsa

WebP intar en mellanställning i att vara avsevärt mer effektivt än JPEG, men inte lika processorintensivt som AVIF, och därmed har formatet kommit att etablera sig på webben. Man kan förstås räkna med att mer effektiva algoritmer utarbetas vad det lider, och att man därmed kan reducera belastningen. Behov finns för AVIF och framtida efterföljare, och de kommer därför småningom att få bredare fäste.

Även HEIC har grå nyans insprängd i kantremsan

I praktiken behöver man inte nyttja 80 % i kvalitet, utan det räcker vanligen med 30 % för både WebP och AVIF, varvid vinsten blir än större. Undantaget är natthimmel och liknande gryniga ytor, som kan kräva betydligt högre kvalitet.

JPEG-2000 har istället mer utspridd distortion, i likhet med föregångaren JPEG

Här kanske någon invänder att det inte spelar någon roll om en bild är 30 kB eller 100 kB, eftersom det är småpotatis i sammanhanget. Men å ena sidan är bandbredd faktiskt inte gratis, och å den andra finns ett faktiskt behov av såväl större bildformat som att nyttja de tio eller tolv bitar som kamerabilder typiskt renderas i. 50 Mpx i 12 bitar motsvarar 200 MB per bild, vilket med AVIF skulle kunna tas ned till mindre än en halv megabyte.

Gradienten i 8 bitars WebP, med tydlig bandning