JPEG -
JPEG

Från Wikipedia, den fria encyklopedin

JPEG -format logo.svg
Felis silvestris silvestris liten gradvis minskning av kvalitet. Png
Ett foto av en europeisk vildkatt med kvalitet som ökar, från vänster till höger
Filnamnstillägg .jpg, .jpeg, .jpe
.jif, .jfif,.jfi
Internetmedietyp
bild/jpeg
Skriv kod JPEG
Uniform Type Identifier (UTI) public.jpeg
Magiskt nummer ff d8 ff
Utvecklad av Joint Photographic Experts Group , IBM , Mitsubishi Electric , AT&T , Canon Inc. , ITU-T Study Group 16
Initial release 18 september 1992
; 29 år sedan
 (
1992-09-18
)
Typ av format Förstörande bildkomprimering format
Standard ITU-T T.81, ITU-T T.83, ITU-T T.84, ITU-T T.86, ISO/IEC 10918
Hemsida
Kontinuerligt varierad JPEG -komprimering (mellan Q = 100 och Q = 1) för en abdominal CT -skanning
, med flera miljarder JPEG -bilder som produceras varje dag från 2015.

Termen "JPEG" är en initialism/akronym för Joint Photographic Experts Group , som skapade standarden 1992. Grunden för JPEG är den diskreta cosinustransformen (DCT), en förlustfri bildkomprimeringsteknik som först föreslogs av Nasir Ahmed i 1972. JPEG var till stor del ansvarig för spridningen av digitala bilder och digitala foton över Internet, och senare sociala medier .

JPEG -komprimering används i ett antal bildfilformat . JPEG/ Exif är det vanligaste bildformatet som används av digitalkameror och andra fotografiska bildtagningsenheter; tillsammans med JPEG/ JFIF är det det vanligaste formatet för lagring och överföring av fotografiska bilderWorld Wide Web . Dessa formatvariationer skiljer sig ofta inte åt och kallas helt enkelt JPEG.

Den MIME mediatyp för JPEG är image / jpeg , utom i äldre Internet Explorer -versioner, vilket ger en MIME-typ av image / pjpeg när du laddar upp JPEG-bilder. JPEG -filer har vanligtvis ett filnamnstillägg.jpgeller .jpeg. JPEG/JFIF stöder en maximal bildstorlek på 65 535 × 65 535 pixlar, alltså upp till 4 gigapixlar. År 2000 introducerade JPEG -gruppen ett format avsett att bli en efterträdare, JPEG 2000 , men det gick inte att ersätta den ursprungliga JPEG som den dominerande bildstandarden.

Historia

Bakgrund

Den ursprungliga JPEG-specifikationen som publicerades 1992 implementerar processer från olika tidigare forskningsartiklar och patent som citeras av CCITT (nu ITU-T , via ITU-T Study Group 16 ) och Joint Photographic Experts Group. Den huvudsakliga grunden för JPEGs förlustkomprimeringsalgoritm är den diskreta cosinustransformen (DCT), som först föreslogs av Nasir Ahmed som en bildkomprimeringsteknik 1972. Ahmed utvecklade en praktisk DCT -algoritm med T. Natarajan från Kansas State University och KR Rao från det University of Texas i Arlington 1973. Deras nyskapande 1974 papper citeras i JPEG-specifikationen, tillsammans med flera senare forskningsrapporter som gjorde det fortsatta arbetet med DCT, bland annat en 1977 papper av Wen-Hsiung Chen, CH Smith och SC Fralick som beskrivs en snabb DCT -algoritm, samt ett papper från 1978 av NJ Narasinha och SC Fralick, och ett papper från 1984 av BG Lee. Specifikationen citerar också ett papper från Wen-Hsiung Chen och WK Pratt från 1984 som ett inflytande på dess kvantiseringsalgoritm , och David A. Huffmans papper från 1952 för dess Huffman-kodningsalgoritm .

JPEG -specifikationen citerar patent från flera företag. Följande patent utgjorde grunden för dess aritmetiska kodningsalgoritm .

  • IBM
    • februari 1986-Kottappuram MA Mohiuddin och Jorma J. Rissanen-Multipliceringsfri multi-alfabetisk aritmetisk kod
    • - 27 februari 1990 - G. Langdon, JL Mitchell, WB Pennebaker och Jorma J. Rissanen - Aritmetisk kodning och avkodare
    • - 19 juni 1990 - WB Pennebaker och JL Mitchell - Sannolikhetsanpassning för aritmetiska kodare
  • Mitsubishi Electric
    •  
      ( 1021672 ) - 21 januari 1989 - Toshihiro Kimura, Shigenori Kino, Fumitaka Ono, Masayuki Yoshida - Kodningssystem

JPEG -specifikationen citerar också tre andra patent från IBM. Andra företag som nämns som patentinnehavare inkluderar AT&T (två patent) och Canon Inc. Frånvarande från listan är

amerikanska patentet 4 698 672
, inlämnat av Compression Labs Wen-Hsiung Chen och Daniel J. Klenke i oktober 1986. Patentet beskriver ett DCT-baserat bildkomprimeringsalgoritm och skulle senare orsaka kontroverser 2002 (se patentkontrovers nedan). JPEG-specifikationen citerade dock två tidigare forskningsartiklar av Wen-Hsiung Chen, publicerade 1977 och 1984.

JPEG -standard

"JPEG" står för Joint Photographic Experts Group, namnet på kommittén som skapade JPEG -standarden och även andra stillbildskodningsstandarder. "Joint" stod för ISO TC97 WG8 och CCITT SGVIII. Gruppen grundades 1986 och utvecklade JPEG -standarden under slutet av 1980 -talet. Bland flera transformkodningstekniker som de undersökte valde de den diskreta cosinustransformen (DCT), eftersom det var den i särklass mest effektiva praktiska komprimeringstekniken. Gruppen publicerade JPEG -standarden 1992.

1987 blev ISO TC 97 ISO/IEC JTC1 och 1992 blev CCITT ITU-T. För närvarande på JTC1-sidan är JPEG en av två undergrupper av ISO / IEC Joint Technical Committee 1 , underkommitté 29, arbetsgrupp 1 ( ISO /IEC JTC 1 /SC 29 /WG 1)-benämnd som kodning av stillbilder . På ITU-T-sidan är ITU-T SG16 respektive organ. Den ursprungliga JPEG-gruppen organiserades 1986 och utfärdade den första JPEG-standarden 1992, som godkändes i september 1992 som ITU-T- rekommendation T.81 och 1994 som ISO/IEC 10918-1 .

JPEG -standarden anger codec , som definierar hur en bild komprimeras till en byteström och dekomprimeras tillbaka till en bild, men inte filformatet som används för att innehålla den strömmen. Exif- och JFIF-standarderna definierar de vanliga filformaten för utbyte av JPEG-komprimerade bilder.

JPEG-standarder kallas formellt för informationsteknik-Digital komprimering och kodning av stillbilder med kontinuerlig ton . ISO/IEC 10918 består av följande delar:

Digital komprimering och kodning av stillbilder med kontinuerlig ton-Delar
Del ISO/IEC -standard ITU-T Rek. Första publiceringsdatumet Senaste ändringen Titel Beskrivning
Del 1 ISO/IEC 10918-1: 1994 T.81 (09/92)
18 september 1992
Krav och riktlinjer
Del 2 ISO/IEC 10918-2: 1995 T.83 (11/94)
11 november 1994
Överensstämmelsestestning Regler och kontroller för programvarans överensstämmelse (till del 1).
Del 3 ISO/IEC 10918-3: 1997 T.84 (07/96)
3 juli 1996
1 april 1999
Tillägg Uppsättning av tillägg för att förbättra del 1, inklusive stillbildsutbytesfilformat (SPIFF).
Del 4 ISO/IEC 10918-4: 1999 T.86 (06/98)
18 juni 1998
29 juni 2012
Registrering av JPEG -profiler, SPIFF -profiler, SPIFF -taggar, SPIFF -färgutrymmen, APPn -markörer, SPIFF -komprimeringstyper och registreringsmyndigheter (REGAUT) metoder för att registrera några av de parametrar som används för att förlänga JPEG
Del 5 ISO/IEC 10918-5: 2013 T.871 (05/11)
14 maj 2011
JPEG -filutbytesformat (JFIF) Ett populärt format som har varit de facto filformat för bilder som är kodade av JPEG -standarden. Under 2009 bildade JPEG -kommittén formellt en Ad Hoc -grupp för att standardisera JFIF som JPEG del 5.
Del 6 ISO/IEC 10918-6: 2013 T.872 (06/12)
Juni 2012
Tillämpning på utskriftssystem Anger en delmängd av funktioner och applikationsverktyg för utbyte av bilder som kodas enligt ISO/IEC 10918-1 för utskrift.
Del 7 ISO/IEC 10918-7: 2019 T.873 (05/19)
Maj 2019
Digital komprimering och kodning av stillbilder med kontinuerlig ton Ger referensprogramvara för kodningstekniken som specificeras i rekommendation ITU-T T.81-ISO/IEC 10918-1. Medan referensimplementeringarna också tillhandahåller en kodare, ligger överensstämmelsestestning av deras kodningsprocess utanför denna specifikations omfattning.

Ecma International TR /98 anger JPEG File Interchange Format (JFIF); den första upplagan publicerades i juni 2009.

Patent kontrovers

År 2002 hävdade Forgent Networks att det ägde och skulle genomdriva patenträttigheter på JPEG-tekniken, som härrör från ett patent som hade inlämnats den 27 oktober 1986 och beviljades den 6 oktober 1987:

US Patent 4,698,672
av Compression Labs Wen- Hsiung Chen och Daniel J. Klenke. Medan Forgent inte ägde Compression Labs då, sålde Chen senare Compression Labs till Forgent, innan Chen började arbeta för Cisco . Detta ledde till att Forgent fick äganderätt till patentet. Forgents meddelande från 2002 skapade en furor som påminner om Unisys försök att hävda sina rättigheter över GIF -bildkomprimeringsstandarden.

JPEG -kommittén undersökte patentkraven 2002 och ansåg att de ogiltigförklarades av känd teknik , en uppfattning som delas av olika experter. Patentet beskriver en bildkomprimeringsalgoritm baserad på den diskreta cosinustransformen (DCT), en förlustfri bildkomprimeringsteknik som härstammar från ett papper från 1974 av Nasir Ahmed, T. Natarajan och KR Rao . Wen-Hsiung Chen vidareutvecklade sin DCT-teknik och beskrev en snabb DCT-algoritm i en artikel från 1977 med CH Smith och SC Fralick. JPEG -specifikationen från 1992 citerar både Ahmed -papper från 1974 och Chen -papper från 1977 för dess DCT -algoritm, liksom ett papper från 1984 av Chen och WK Pratt för dess kvantiseringsalgoritm . Compression Labs grundades av Chen och var det första företaget som kommersialiserade DCT -teknik. När Chen hade lämnat in sitt patent på en DCT-baserad bildkomprimeringsalgoritm med Klenke 1986 hade det mesta av det som senare skulle bli JPEG-standarden redan formulerats i tidigare litteratur. JPEG -representanten Richard Clark hävdade också att Chen själv satt i en av JPEG -kommittéerna, men Forgent förnekade detta påstående.

Mellan 2002 och 2004 kunde Forgent få cirka 105 miljoner dollar genom att licensiera sitt patent till ett 30 -tal företag. I april 2004 stämde Forgent 31 andra företag för att genomdriva ytterligare licensbetalningar. I juli samma år lämnade ett konsortium med 21 stora datorföretag en motsägelse, med målet att ogiltigförklara patentet. Dessutom inledde Microsoft en separat stämningsansökan mot Forgent i april 2005. I februari 2006 gick USA: s patent- och varumärkesbyrå med på att ompröva Forgents JPEG-patent på begäran av Public Patent Foundation . Den 26 maj 2006 fann USPTO patentet ogiltigt baserat på känd teknik. USPTO fann också att Forgent visste om teknikens ståndpunkt, men det avsiktligt undvek att berätta för patentverket. Detta gör att det är mycket osannolikt att någon vädjan om att återställa patentet kommer att lyckas.

Forgent har också ett liknande patent som beviljats ​​av Europeiska patentverket 1994, även om det är oklart hur verkställbart det är.

Från och med den 27 oktober 2006 tycks det amerikanska patentets 20-åriga löptid ha löpt ut, och i november 2006 gick Forgent med på att överge tillämpningen av patentkrav mot användning av JPEG-standarden.

JPEG -kommittén har som ett av sina uttryckliga mål att deras standarder (i synnerhet deras baslinjemetoder) är genomförbara utan betalning av licensavgifter, och de har säkrat lämpliga licensrättigheter för sin JPEG 2000 -standard från över 20 stora organisationer.

Från och med augusti 2007 hävdade ett annat företag, Global Patent Holdings, LLC att dess patent (

US 5,253,341
) utfärdat 1993, kränks genom nedladdning av JPEG-bilder antingen på en webbplats eller via e-post. Om det inte är ogiltigt kan detta patent gälla alla webbplatser som visar JPEG -bilder. Patentet undersöktes på nytt av US Patent and Trademark Office från 2000 till 2007; i juli 2007 återkallade patentverket alla de ursprungliga patentkraven men fann att ett ytterligare krav som föreslagits av Global Patent Holdings (krav 17) var giltigt. Global Patent Holdings lämnade sedan in ett antal stämningar baserade på krav 17 i dess patent.

I sina två första rättegångar efter omprövningen stämde båda i Chicago, Illinois, Global Patent Holdings mot Green Bay Packers , CDW , Motorola , Apple , Orbitz , Officemax , Caterpillar , Kraft och Peapod som tilltalade. En tredje stämning väcktes den 5 december 2007 i södra Florida mot ADT Security Services , AutoNation , Florida Crystals Corp., HearUSA, MovieTickets.com , Ocwen Financial Corp. och Tire Kingdom , och en fjärde stämning den 8 januari 2008, i södra Florida mot Boca Raton Resort & Club . En femte stämning lämnades mot Global Patent Holdings i Nevada. Den rättegången lämnades in av Zappos.com , Inc., som påstås hotas av Global Patent Holdings, och begärde en rättslig förklaring om att patentet 341 är ogiltigt och inte kränkt.

Global Patent Holdings hade också använt patentet 341 för att stämma eller hota frispråkiga kritiker av breda programvarupatent, inklusive Gregory Aharonian och den anonyma operatören av en webbplatsblogg som kallas " Patent Troll Tracker ". Den 21 december 2007 bad patentadvokaten Vernon Francissen från Chicago det amerikanska patent- och varumärkesbyrån att ompröva det enda kvarstående kravet på '341 -patentet på grundval av ny känd teknik.

Den 5 mars 2008 godkände US Patent and Trademark Office att ompröva patentet 341 och fann att den nya tekniken väckte väsentliga nya frågor om patentets giltighet. Mot bakgrund av omprövningen har de anklagade överträdarna i fyra av de fem pågående rättegångarna lämnat in motioner om att avbryta (stanna) sina ärenden tills US Patent and Trademark Office har granskat patentet 341. Den 23 april 2008 beviljade en domare som ledde de två stämningarna i Chicago, Illinois, motionerna i dessa fall. Den 22 juli 2008 utfärdade patentverket den första "Office Action" för den andra omprövningen och fann påståendet ogiltigt baserat på nitton separata grunder. Den 24 november 2009 utfärdades ett omexamineringscertifikat som avbröt alla krav.

Från och med 2011 och fortsatte från början av 2013 började en enhet som kallas Princeton Digital Image Corporation, baserad i östra Texas, stämma ett stort antal företag för påstådd överträdelse av

amerikanska patentet 4 813 056
. Princeton hävdar att JPEG -bildkomprimeringsstandarden bryter mot 056 -patentet och har stämt ett stort antal webbplatser, återförsäljare, kamera- och enhetstillverkare och återförsäljare. Patentet ägdes ursprungligen och tilldelades General Electric. Patentet gick ut i december 2007, men Princeton har stämt ett stort antal företag för "tidigare intrång" i detta patent. (Enligt amerikanska patentlagar kan en patentägare stämma för "tidigare intrång" upp till sex år innan talan väcks, så Princeton hade teoretiskt sett kunnat fortsätta stämma företag fram till december 2013.) Från och med mars 2013 hade Princeton stämningar i väntan på New York och Delaware mot mer än 55 företag. General Electrics inblandning i stämningen är okänd, även om domstolsregister tyder på att det överlämnade patentet till Princeton 2009 och behåller vissa rättigheter i patentet.

Typisk användning

JPEG -komprimeringsalgoritmen fungerar som bäst på fotografier och målningar med smidiga variationer i ton och färg. Den används bäst för stillbilder i färg och gråskala, men inte för binära bilder . För webbanvändning, där minskning av mängden data som används för en bild är viktigt för responsiv presentation, gör JPEG: s komprimeringsfördelar JPEG populärt. JPEG/Exif är också det vanligaste formatet som sparas med digitalkameror.

JPEG är dock inte väl lämpad för ritningar och annan text- eller ikonik, där de skarpa kontrasterna mellan intilliggande pixlar kan orsaka märkbara artefakter. Sådana bilder bättre sparas i en förlustfria grafikformat som TIFF , GIF eller PNG , och medan JPEG-standarden en förlustfri kodningsläget är läget inte stöds i många produkter på grund av underlägsenhet sin komprimeringssystem jämfört med andra förlustfri format. ISO har utvecklat ett eget filformat som heter JPEG-LS för detta ändamål.

Eftersom JPEG är en förlustfri komprimeringsmetod, vilket minskar bildtrohet, är det olämpligt för exakt återgivning av bilddata (till exempel vissa vetenskapliga och medicinska avbildningsapplikationer och visst tekniskt bildbehandlingsarbete ). JPEG -filer är inte heller väl lämpade för att genomgå flera redigeringar, eftersom viss bildkvalitet går förlorad varje gång bilden komprimeras igen - se digital generationsförlust för detaljer. För att förhindra förlust av bildinformation under sekventiell och repetitiv redigering kan den första redigeringen sparas i ett förlustfritt format, därefter redigeras i det formatet och sedan slutligen publiceras som JPEG för distribution.

JPEG -komprimering

JPEG använder en förlustform av komprimering baserad på den diskreta cosinustransformen (DCT). Denna matematiska operation omvandlar varje bildruta/fält i videokällan från den spatiala (2D) domänen till frekvensdomänen (aka transform domain). En perceptuell modell som är löst baserad på det mänskliga psykovisuella systemet slänger högfrekvent information, det vill säga skarpa övergångar i intensitet och färgton . I transformdomänen kallas processen för att minska information kvantisering. I enklare termer är kvantisering en metod för att optimalt minska en stor talskala (med olika förekomster av varje nummer) till en mindre, och transformdomänen är en bekväm representation av bilden eftersom högfrekvenskoefficienterna, som bidrar mindre till den övergripande bilden än andra koefficienter, är karakteristiskt små värden med hög komprimerbarhet. De kvantiserade koefficienterna sekvenseras sedan och förlustfritt packas i den utgående bitströmmen . Nästan alla mjukvaruimplementeringar av JPEG tillåter användarkontroll över komprimeringsförhållandet (liksom andra valfria parametrar), så att användaren kan byta ut bildkvaliteten för mindre filstorlek. I inbäddade applikationer (t.ex. miniDV, som använder ett liknande DCT-komprimeringsschema), är parametrarna förvalda och fixade för applikationen.

Komprimeringsmetoden är vanligtvis förlorande, vilket innebär att viss originalbildinformation går förlorad och inte kan återställas, vilket möjligen påverkar bildkvaliteten. Det finns ett valfritt förlustfritt läge definierat i JPEG -standarden. Men det här läget stöds inte allmänt i produkter.

Det finns också ett interlaced progressivt JPEG -format, där data komprimeras i flera pass med successivt högre detaljer. Detta är idealiskt för stora bilder som kommer att visas under nedladdning över en långsam anslutning, vilket ger en rimlig förhandsvisning efter att bara ha tagit emot en del av data. Stöd för progressiva JPEG -filer är dock inte universellt. När progressiva JPEG -filer tas emot av program som inte stöder dem (t.ex. versioner av Internet Explorer före Windows 7 ) visar programvaran bilden först efter att den har laddats ner helt.

Förlustfri redigering

Ett antal ändringar av en JPEG -bild kan utföras förlustfritt (det vill säga utan rekomprimering och tillhörande kvalitetsförlust) så länge bildstorleken är en multipel av 1 MCU -block (Minimum Coded Unit) (vanligtvis 16 pixlar i båda riktningarna, för 4: 2: 0 chroma -delprovtagning ). Verktyg som implementerar detta inkluderar:

  • jpegtran och dess GUI, Jpegcrop.
  • IrfanView med "JPG Lossless Crop (PlugIn)" och "JPG Lossless Rotation (PlugIn)", som kräver att JPG_TRANSFORM -plugin installeras.
  • FastStone Image Viewer med "Lossless Crop to File" och "JPEG Lossless Rotate".
  • XnViewMP med "JPEG lossless transformations".
  • ACDSee stöder lossless rotation (men inte lossless beskärning) med alternativet "Force lossless JPEG operations".

Blocken kan roteras i steg om 90 grader, vändas i de horisontella, vertikala och diagonala axlarna och flyttas runt i bilden. Alla block från den ursprungliga bilden behöver inte användas i den modifierade.

Den övre och vänstra kanten av en JPEG -bild måste ligga på en 8 × 8 pixel blockgräns, men den nedre och högra kanten behöver inte göra det. Detta begränsar möjliga förlustfria beskärningsoperationer och förhindrar också vändningar och rotationer av en bild vars nedre eller högra kant inte ligger på en blockgräns för alla kanaler (eftersom kanten skulle hamna ovanpå eller vänster, där - som nämnts - en blockgräns är obligatorisk).

Rotationer där bildbredden och höjden inte är en multipel av 8 eller 16 (beroende på chroma -delprovtagningen) är inte förlustfria. Om en sådan bild roteras får blocken att beräknas igen, vilket leder till kvalitetsförlust.

Om du använder förlustfri beskärning, om den nedre eller högra sidan av beskärningsområdet inte är på en blockgräns, kommer resten av data från de delvis använda blocken fortfarande att finnas i den beskurna filen och kan återställas. Det är också möjligt att transformera mellan baslinje- och progressiva format utan att kvaliteten försämras, eftersom den enda skillnaden är i vilken ordning koefficienterna placeras i filen.

Dessutom kan flera JPEG -bilder förenas utan förlust, så länge de sparades med samma kvalitet och kanterna sammanfaller med blockgränser.

JPEG -filer

Det filformat som kallas "JPEG Interchange Format" (JIF) anges i bilaga B till standard. Detta "rena" filformat används dock sällan, främst på grund av svårigheten att programmera kodare och avkodare som fullt ut implementerar alla aspekter av standarden och på grund av vissa brister i standarden:

  • Färgutrymme definition
  • Komponentundersökningsprovning

Flera ytterligare standarder har utvecklats för att hantera dessa frågor. Den första av dessa, som släpptes 1992, var JPEG File Interchange Format (eller JFIF), följt av de senaste åren av utbytbart bildfilformat (Exif) och ICC -färgprofiler . Båda dessa format använder den faktiska JIF -byte -layouten, som består av olika markörer , men använder dessutom en av JIF -standardens förlängningspunkter, nämligen applikationsmarkörerna : JFIF använder APP0, medan Exif använder APP1. Inom dessa segment av filen som lämnades för framtida användning i JIF -standarden och inte läses av den lägger dessa standarder till specifika metadata.

Således är JFIF på vissa sätt en nedskuren version av JIF-standarden genom att den specificerar vissa begränsningar (till exempel att inte tillåta alla olika kodningslägen), medan den på andra sätt är en förlängning av JIF på grund av den tillagda metadata. I dokumentationen för den ursprungliga JFIF -standarden står det:

JPEG File Interchange Format är ett minimalt filformat som gör det möjligt att utbyta JPEG -bitströmmar mellan en mängd olika plattformar och applikationer. Detta minimala format innehåller inte någon av de avancerade funktionerna som finns i TIFF JPEG -specifikationen eller något applikationsspecifikt filformat. Det bör inte heller, för det enda syftet med detta förenklade format är att tillåta utbyte av JPEG -komprimerade bilder.

Bildfiler som använder JPEG -komprimering kallas vanligtvis "JPEG -filer" och lagras i varianter av JIF -bildformatet. De flesta bildtagningsenheter (t.ex. digitalkameror) som matar ut JPEG skapar faktiskt filer i Exif -formatet, det format som kameraindustrin har standardiserat för metadatautbyte. Å andra sidan, eftersom Exif-standarden inte tillåter färgprofiler, lagrar de flesta bildredigeringsprogramvaran JPEG i JFIF-format, och inkluderar även APP1-segmentet från Exif-filen för att inkludera metadata på ett nästan kompatibelt sätt. JFIF -standarden tolkas något flexibelt.

Strängt taget är JFIF- och Exif -standarderna inkompatibla, eftersom var och en anger att dess markeringssegment (APP0 respektive APP1) visas först. I praktiken innehåller de flesta JPEG -filer ett JFIF -markersegment som föregår Exif -rubriken. Detta gör att äldre läsare kan hantera det äldre JFIF -segmentet korrekt, medan nyare läsare också avkodar följande Exif -segment och är mindre strikta när det gäller att kräva att det visas först.

JPEG filnamnstillägg

Den vanligaste filnamnstillägg för filer som använder JPEG-komprimering är .jpgoch .jpeg, dock .jpe, .jfifoch .jifanvänds också. Det är också möjligt för JPEG -data att vara inbäddade i andra filtyper - TIFF -kodade filer bäddar ofta in en JPEG -bild som en miniatyrbild av huvudbilden; och MP3 -filer kan innehålla en JPEG med omslagsbilder i ID3v2 -taggen.

Färgprofil

Många JPEG -filer bäddar in en ICC -färgprofil ( färgutrymme ). Vanliga färgprofiler inkluderar sRGB och Adobe RGB . Eftersom dessa färgutrymmen använder en icke-linjär omvandling är det dynamiska området för en 8-bitars JPEG-fil cirka 11 stopp ; se gammakurva .

Syntax och struktur

En JPEG -bild består av en sekvens av segment , var och en börjar med en markör , som var och en börjar med en 0xFF -byte, följt av en byte som anger vilken typ av markör det är. Vissa markörer består bara av dessa två byte; andra följs av två byte (hög sedan låg), vilket indikerar längden på markörspecifik nyttolastdata som följer. (Längden inkluderar de två byten för längden, men inte de två byten för markören.) Vissa markörer följs av entropikodade data; längden på en sådan markör inkluderar inte entropikodade data. Observera att på varandra följande 0xFF-byte används som fyllningsbyte för stoppningsändamål , även om denna fyllningsbyte-stoppning bara någonsin bör ske för markörer omedelbart efter entropikodade skanningsdata (se JPEG-specifikationsavsnitt B.1.1.2 och E.1.2 för detaljer; specifikt "I alla fall där markörer läggs till efter komprimerade data kan valfria 0xFF -fyllbyte föregå markören").

Inom entropikodade data, efter någon 0xFF-byte, sätts en 0x00 byte in av kodaren före nästa byte, så att det inte verkar finnas en markör där ingen är avsedd, vilket förhindrar inramningsfel. Avkodare måste hoppa över denna 0x00 byte. Denna teknik, kallad byte-fyllning (se avsnittet JPEG-specifikation F.1.2.3), tillämpas endast på entropikodade data, inte på markörnyttodata. Observera dock att entropikodade data har några egna markörer; specifikt Återställ markörerna (0xD0 till 0xD7), som används för att isolera oberoende bitar av entropikodade data för att tillåta parallell avkodning, och kodare är fria att infoga dessa Återställ markörer med jämna mellanrum (även om inte alla kodare gör detta).

Vanliga JPEG -markörer
Kort namn Bytes Nyttolast namn Kommentarer
SÅ JAG 0xFF, 0xD8 ingen Bildens början
SOF0 0xFF, 0xC0 variabel storlek Start av ram (baslinje DCT) Anger att detta är en DCT-baserad JPEG-baslinje och anger bredd, höjd, antal komponenter och komponentundersökning (t.ex. 4: 2: 0).
SOF2 0xFF, 0xC2 variabel storlek Start Of Frame (progressiv DCT) Anger att detta är en progressiv DCT-baserad JPEG och anger bredd, höjd, antal komponenter och komponentundersökning (t.ex. 4: 2: 0).
DHT 0xFF, 0xC4 variabel storlek Definiera Huffman -tabeller Anger en eller flera Huffman -tabeller.
DQT 0xFF, 0xDB variabel storlek Definiera kvantiseringstabeller Anger en eller flera kvantiseringstabeller.
DRI 0xFF, 0xDD 4 bytes Definiera omstartintervall Anger intervallet mellan RST n -markörer, i Minimum Coded Units (MCU). Denna markör följs av två byte som anger den fasta storleken så att den kan behandlas som alla andra segment med variabel storlek.
SOS 0xFF, 0xDA variabel storlek Start av skanning Börjar en skanning uppifrån och nedåt av bilden. I grundläggande DCT JPEG -bilder finns det i allmänhet en enda skanning. Progressiva DCT JPEG -bilder innehåller vanligtvis flera skanningar. Denna markör anger vilken del av data den ska innehålla och följs omedelbart av entropikodade data.
RST n 0xFF, 0xD n ( n = 0..7) ingen Omstart Infogade varje r makroblock, där r är omstartintervallet som ställts in av en DRI -markör. Används inte om det inte fanns någon DRI -markör. De låga tre bitarna i markörkodcykeln i värde från 0 till 7.
APP n 0xFF, 0xE n variabel storlek Applikationsspecifik Till exempel använder en Exif JPEG -fil en APP1 -markör för att lagra metadata, upplagda i en struktur som är nära baserad på TIFF .
KOM 0xFF, 0xFE variabel storlek Kommentar Innehåller en textkommentar.
EOI 0xFF, 0xD9 ingen Slutet på bilden

Det finns andra Start Of Frame -markörer som introducerar andra typer av JPEG -kodningar.

Eftersom flera leverantörer kan använda samma APP n -markörtyp börjar applikationsspecifika markörer ofta med ett standard- eller leverantörsnamn (t.ex. "Exif" eller "Adobe") eller någon annan identifierande sträng.

Vid en omstartmarkör återställs block-till-block-prediktorvariabler och bitströmmen synkroniseras till en bytegräns. Omstartmarkörer ger medel för återställning efter bitströmfel, till exempel överföring över ett opålitligt nätverk eller filkorruption. Eftersom körningarna av makroblock mellan omstartmarkörer kan avkodas oberoende kan dessa körningar avkodas parallellt.

Exempel på JPEG -codec

Även om en JPEG -fil kan kodas på olika sätt, görs det oftast med JFIF -kodning. Kodningsprocessen består av flera steg:

  1. Representationen av färgerna i bilden konverteras till Y′C B C R , bestående av en lumakomponent (Y ’), som representerar ljusstyrka och två kromkomponenter , (C B och C R ), som representerar färg. Detta steg hoppas ibland över.
  2. Upplösningen av chromadata reduceras, vanligtvis med en faktor 2 eller 3. Detta återspeglar det faktum att ögat är mindre känsligt för fina färgedetaljer än för fina ljusstyrkedetaljer.
  3. Bilden är uppdelad i block med 8 × 8 pixlar, och för varje block genomgår var och en av Y-, CB- och CR -data den diskreta kosinustransformationen (DCT). En DCT liknar en Fouriertransform i den meningen att den producerar ett slags rumsligt frekvensspektrum.
  4. Amplituderna för frekvenskomponenterna kvantiseras. Människosyn är mycket känsligare för små variationer i färg eller ljusstyrka över stora områden än för styrkan i högfrekventa ljusstyrkavariationer. Därför lagras storleken på högfrekventa komponenter med en lägre noggrannhet än lågfrekventa komponenter. Kvalitetsinställningen för kodaren (till exempel 50 eller 95 på en skala från 0–100 i Independent JPEG Groups bibliotek) påverkar i vilken utsträckning upplösningen för varje frekvenskomponent reduceras. Om en alltför låg kvalitetsinställning används, kastas högfrekventa komponenter helt och hållet.
  5. Den resulterande data för alla 8 × 8 block komprimeras ytterligare med en förlustfri algoritm, en variant av Huffman -kodning .

Avkodningsprocessen reverserar dessa steg, förutom kvantiseringen eftersom den är irreversibel. I resten av detta avsnitt beskrivs kodnings- och avkodningsprocesserna mer detaljerat.

Kodning

Många av alternativen i JPEG -standarden används inte vanligt, och som nämnts ovan använder de flesta bildprogramvaran det enklare JFIF -formatet när du skapar en JPEG -fil, vilket bland annat specificerar kodningsmetoden. Här är en kort beskrivning av en av de vanligaste metoderna för kodning när den appliceras på en ingång som har 24 bitar per pixel (åtta vardera i rött, grönt och blått). Det här alternativet är en förlustfri datakomprimeringsmetod .

Omvandling av färgutrymme

Först ska bilden konverteras från RGB till ett annat färgutrymme som kallas Y′C B C R (eller, informellt, YCbCr). Den har tre komponenter Y ', C B och C R : Y' -komponenten representerar ljusstyrkan för en pixel, och C B och C R -komponenterna representerar krominansen (delad i blå och röda komponenter). Detta är i princip samma färgutrymme som används av digital färg -tv såväl som digital video inklusive video -DVD -skivor , och liknar hur färgen representeras i analog PAL -video och MAC (men inte av analog NTSC , som använder YIQ -färgutrymmet ). Y′C B C R färgrymdskonvertering möjliggör större komprimering utan en signifikant effekt på perceptuell bildkvalitet (eller större perceptuell bildkvalitet för samma komprimering). Komprimeringen är mer effektiv eftersom informationen om ljusstyrka, som är viktigare för bildens slutliga perceptuella kvalitet, begränsas till en enda kanal. Detta motsvarar närmare uppfattningen av färg i det mänskliga visuella systemet. Färgtransformationen förbättrar också komprimering genom statistisk avkorrelation .

En särskild konvertering till Y'C B C R specificeras i JFIF -standarden och bör utföras för att den resulterande JPEG -filen ska ha maximal kompatibilitet. Vissa JPEG -implementeringar i läget "högsta kvalitet" tillämpar dock inte detta steg utan behåller istället färginformationen i RGB -färgmodellen, där bilden lagras i separata kanaler för röda, gröna och blåa ljusstyrka -komponenter. Detta resulterar i mindre effektiv komprimering och skulle sannolikt inte användas när filstorleken är särskilt viktig.

Nedprovtagning

På grund av densiteten hos färg- och ljusstyrkekänsliga receptorer i det mänskliga ögat kan människor se betydligt mer fina detaljer i bildens ljusstyrka (Y-komponenten) än i färgens färgton och färgmättnad (Cb och Cr -komponenter). Med hjälp av denna kunskap kan kodare utformas för att komprimera bilder mer effektivt.

Omvandlingen till den Y'C B C R -färgmodellen möjliggör nästa vanliga steg, vilket är att minska den rumsliga upplösningen av de Cb och Cr komponenterna (kallade " nedsampling " eller "chroma subsampling"). Förhållandena där nedsamplingen vanligtvis görs för JPEG -bilder är 4: 4: 4 (ingen nedsampling), 4: 2: 2 (minskning med en faktor 2 i horisontell riktning) eller (oftast) 4: 2: 0 (minskning med en faktor 2 i både horisontell och vertikal riktning). För resten av komprimeringsprocessen bearbetas Y ', Cb och Cr separat och på ett mycket liknande sätt.

Blockdelning

Efter undersampling måste varje kanal delas upp i 8 × 8 block. Beroende på chroma -delprovtagning ger detta block av lägsta kodade enheter (MCU) i storlek 8 × 8 (4: 4: 4 - ingen undersampling), 16 × 8 (4: 2: 2) eller oftast 16 × 16 (4: 2: 0). I videokomprimering kallas MCU: er för makroblock .

Om data för en kanal inte representerar ett heltal block måste kodaren fylla det återstående området på de ofullständiga blocken med någon form av dummy -data. Att fylla kanterna med en fast färg (till exempel svart) kan skapa ringande artefakter längs den synliga delen av gränsen. upprepning av kantpixlarna är en vanlig teknik som reducerar (men inte nödvändigtvis eliminerar) sådana artefakter, och mer sofistikerade kantfyllningstekniker kan också tillämpas.

Diskret cosinustransform

8 × 8-delbilden visas i 8-bitars gråskala

Därefter omvandlas varje 8 × 8-block av varje komponent (Y, Cb, Cr) till en frekvensdomänrepresentation med hjälp av en normaliserad, tvådimensionell typ II-diskret cosinustransform (DCT), se Citation 1 i diskret cosinustransform . DCT kallas ibland för "typ-II DCT" i kontexten av en familj av transformationer som i diskret cosinustransform , och motsvarande invers (IDCT) betecknas som "typ-III DCT".

Som ett exempel kan en sådan 8 × 8 8-bitars delbild vara:

Innan DCT för 8 × 8 -blocket beräknas flyttas dess värden från ett positivt intervall till ett centrerat på noll. För en 8-bitars bild faller varje post i originalblocket inom intervallet . Mittpunkten för intervallet (i detta fall värdet 128) subtraheras från varje post för att producera ett dataintervall som är centrerat på noll, så att det modifierade intervallet är . Detta steg minskar kraven för dynamiskt område i DCT -bearbetningssteget som följer.