Förlustfri JPEG - Lossless JPEG

Lossless JPEG är ett tillägg till JPEG- standarden från 1993 av Joint Photographic Experts Group för att möjliggöra förlustfri komprimering . Men termen kan också användas för att hänvisa till alla förlustfria komprimeringsscheman som utvecklats av gruppen, inklusive JPEG 2000 och JPEG-LS.

Lossless JPEG utvecklades som ett sent tillskott till JPEG 1993, med en helt annan teknik än den förlorade JPEG-standarden. Den använder ett prediktivt schema baserat på de tre närmaste (kausala) grannarna (övre, vänstra och övre vänstra), och entropikodning används på förutsägelsefelet. Standardoberoende JPEG-gruppbibliotek kan inte koda eller avkoda det, men Ken Murchison från Oceana Matrix Ltd. skrev en patch som utökar IJG-biblioteket för att hantera förlustfri JPEG. Förlustfri JPEG har en viss popularitet inom medicinsk bildbehandling och används i DNG och vissa digitalkameror för att komprimera råa bilder, men annars antogs aldrig allmänt. Adobe 's DNG SDK tillhandahåller en programvara bibliotek för kodning och avkodning av förlustfri JPEG med upp till 16 bitar per sampel.

ISO / IEC Joint Photography Experts Group upprätthåller en referensprogramvaruimplementering som kan koda både bas JPEG (ISO / IEC 10918-1 och 18477-1) och JPEG XT- tillägg (ISO / IEC 18477 del 2 och 6-9), samt JPEG-LS (ISO / IEC 14495).

Förlustfritt driftläge

Figur 1: DPCM -kodare modell
Figur 2: Förenklade blockscheman för förlustfritt läge
Figur 3: Tre angränsande prover runt provet som ska förutses

Lossless JPEG är faktiskt ett driftsätt för JPEG. Detta läge existerar eftersom den diskreta cosinustransformeringsbaserade formen (DCT) inte kan garantera att kodarinmatningen exakt skulle matcha avkodarens utgång. Till skillnad från det lossy-läge som är baserat på DCT använder den förlustfria kodningsprocessen en enkel prediktiv kodningsmodell som kallas differentiell puls- kodmodulation (DPCM). Detta är en modell där förutsägelser av provvärdena uppskattas från de angränsande proverna som redan är kodade i bilden. De flesta prediktorer tar genomsnittet av proverna omedelbart ovanför och till vänster om målprovet. DPCM kodar skillnaderna mellan de förutsagda proverna istället för att koda varje prov oberoende. Skillnaderna från ett prov till ett annat är vanligtvis nära noll. En typisk DPCM-kodare visas i figur 1. Blocket i figuren fungerar som en lagring av det aktuella samplet som senare kommer att vara ett tidigare sampel.

De viktigaste stegen i förlustfritt driftläge visas i figur 2. I processen kombinerar prediktorn upp till tre angränsande sampel vid A, B och C som visas i figur 3 för att producera en förutsägelse av samplingsvärdet vid den position som är märkt av X. De tre angränsande samplen måste redan vara kodade . Vilken som helst av prediktorerna som visas i tabellen nedan kan användas för att uppskatta provet som ligger vid X. Vilken som helst av de åtta prediktorer som anges i tabellen kan användas. Observera att val 1, 2 och 3 är endimensionella prediktorer och val 4, 5, 6 och 7 är tvådimensionella prediktorer. Det första valvärdet i tabellen, noll, används endast för differentiell kodning i det hierarkiska driftsättet. När alla proverna är förutsagda kan skillnaderna mellan proverna erhållas och entropikodas på ett förlustfritt sätt med Huffman-kodning eller aritmetisk kodning .

Urvalsvärde Förutsägelse
0 Ingen förutsägelse
1 A
2 B
3 C
4 A + B - C
5 A + (B - C) / 2
6 B + (A - C) / 2
7 (A + B) / 2

Vanligtvis kan komprimeringar med förlustfritt driftläge uppnå cirka 2: 1 komprimeringsförhållande för färgbilder. Detta läge är ganska populärt inom det medicinska avbildningsområdet och definieras som ett alternativ i DNG-standard, men annars används det inte särskilt mycket på grund av komplexiteten i att göra aritmetik på 10, 12 eller 14bpp-värden på typiska inbäddade 32-bitarsprocessorer och en liten resulterande vinst i rymden.

JPEG-LS

Allmän beskrivning

JPEG-LS är en kompressionsstandard för förlustfri / nästan förlustfri för bilder med kontinuerlig ton. Dess officiella beteckning är ISO-14495-1 / ITU-T.87. Det är en enkel och effektiv baslinealgoritm som består av två oberoende och distinkta steg som kallas modellering och kodning. JPEG-LS utvecklades i syfte att tillhandahålla en förlustfri och nästan förlustfri bildkomprimeringsstandard med låg komplexitet som kan erbjuda bättre komprimeringseffektivitet än förlustfri JPEG. Den utvecklades för att Huffman-kodningsbaserade JPEG-förlustfria standard och andra standarder vid den tiden var begränsade i komprimeringsprestanda. Total avkorrelation kan inte uppnås genom första ordens entropi av förutsägelseresterna som används av dessa sämre standarder. JPEG-LS kan å andra sidan uppnå god avkorrelation. Del 1 av denna standard slutfördes 1999. Del 2, släppt 2003, introducerade tillägg som aritmetisk kodning . Kärnan i JPEG-LS är baserad på LOCO-I-algoritmen, som bygger på förutsägelse, kvarvarande modellering och kontextbaserad kodning av restprodukterna. Det mesta av den låga komplexiteten hos denna teknik kommer från antagandet att prediktionsrester följer en dubbelsidig geometrisk fördelning (även kallad en diskret Laplace-fördelning ) och från användningen av Golomb- liknande koder, som är kända för att vara ungefär optimala för geometriska fördelningar. . Förutom förlustfri komprimering ger JPEG-LS också ett förlustfritt läge ("nästan förlustfritt") där det maximala absoluta felet kan styras av kodaren.

Prestanda

  • Komprimering för JPEG-LS är i allmänhet mycket snabbare än JPEG 2000 och mycket bättre än den ursprungliga förlustfria JPEG-standarden.
  • Komprimering för JPEG-LS är i allmänhet något sämre än JPEG 2000, men detta beror mycket på bildinnehållet.
  • Dekompression för JPEG-LS är i allmänhet mycket snabbare än JPEG 2000, men detta beror på exakta programvaruavkodarimplementeringar.
    • Detta uttalande gäller för open source-implementeringar.

Applikationssupport

LOCO-I-algoritm

Innan kodningen finns det två viktiga steg att göra i modelleringsfasen: avkorrelation (förutsägelse) och felmodellering .

Dekorrelation / förutsägelse

I LOCO-I-algoritmen uppnås primitiv kantdetektering av horisontella eller vertikala kanter genom att undersöka de närliggande pixlarna för den aktuella pixeln X såsom illustreras i figur 3. Pixel märkt av B används i fallet med en vertikal kant medan pixeln placerad vid A används i fallet med en horisontell kant. Denna enkla prediktor kallas Median Edge Detection (MED) prediktor eller LOCO-I prediktor. Pixel X förutses av LOCO-I-prediktorn enligt följande gissningar:

De tre enkla prediktorerna väljs enligt följande villkor: (1) det tenderar att plocka B i fall där en vertikal kant existerar till vänster om X, (2) A i fall av en horisontell kant över X, eller (3) A + B - C om ingen kant detekteras.

Kontextmodellering

JPEG-LS-algoritmen uppskattar de villkorade förväntningarna på förutsägelsefelen med användning av motsvarande provmedel inom varje sammanhang Ctx . Syftet med kontextmodellering är att strukturer av högre ordning som texturmönster och lokal aktivitet i bilden kan utnyttjas genom kontextmodellering av förutsägelsefelet. Kontexter bestäms genom att erhålla skillnaderna för de angränsande proverna som representerar den lokala gradienten :

Den lokala lutningen återspeglar nivån på aktiviteter som jämnhet och kantighet hos angränsande prover. Observera att dessa skillnader är nära relaterade till det statistiska beteendet hos förutsägelsefel. Var och en av skillnaderna i ovanstående ekvation kvantifieras sedan till ungefär utrustningsbara och anslutna regioner. För JPEG-LS kvantifieras skillnaderna g1, g2 och g3 i 9 regioner och regionen indexeras från −4 till 4. Syftet med kvantiseringen är att maximera den ömsesidiga informationen mellan det aktuella samplingsvärdet och dess sammanhang så att beroenden av hög ordning kan fångas. Man kan få sammanhang baserat på antagandet att

Efter sammanfogning av sammanhang med både positiva och negativa tecken är det totala antalet sammanhang sammanhang. En bias-uppskattning kan erhållas genom att dela kumulativa prediktionsfel inom varje sammanhang med ett antal sammanhangshändelser. I LOCO-I-algoritmen modifieras och förbättras denna procedur så att antalet subtraktioner och tillägg minskas. Det delningsfria beräkningsförfarandet för förspänning visas i [2] . Förutsägelseförfining kan sedan göras genom att använda dessa uppskattningar i en återkopplingsmekanism som eliminerar prediktionsförspänningar i olika sammanhang.

Kodning korrigerade prediktionsrester

I det vanliga läget för JPEG-LS använder standarden Golomb-ris-koder som är ett sätt att koda icke-negativa körlängder. Dess specialfall med det optimala kodningsvärdet 2 k möjliggör enklare kodningsprocedurer.

Kör längdkodning i enhetliga områden

Eftersom Golomb-ris-koder är ganska ineffektiva för kodning av låga entropidistributioner eftersom kodningshastigheten är minst en bit per symbol, kan betydande redundans produceras eftersom de släta områdena i en bild kan kodas med mindre än 1 bit per symbol. För att undvika att ha överflödig kodlängd över entropin kan man använda alfabetisk förlängning som kodar symbolblock istället för att koda enskilda symboler. Detta sprider ut den överskjutande kodlängden över många symboler. Detta är "kör" -läget för JPEG-LS och det körs när en platt eller jämn kontextregion som kännetecknas av nollgradienter detekteras. En run of west-symbol "a" förväntas och slutet på run inträffar när en ny symbol inträffar eller slutet på raden nås. Den totala längden är kodad och kodaren skulle återgå till "vanligt" läge.

JPEG 2000

JPEG 2000 innehåller ett förlustfritt läge baserat på ett speciellt heltal wavelet- filter (biorthogonal 3/5). JPEG 2000: s förlustfria läge går långsammare och har ofta sämre kompressionsförhållanden än JPEG-LS på konstgjorda och sammansatta bilder men går bättre än UBC-implementeringen av JPEG-LS på digitalkamerabilder. JPEG 2000 är också skalbart, progressivt och mer implementerat.

JPEG XT

JPEG XT inkluderar ett förlustfritt heltal-till-heltal DCT-transformeringsläge baserat på wavelet-komprimering från JPEG 2000.

Referenser

externa länkar