Кіріспе

Сандық суреттердің көлемін азайтуға арналған жоғалтулы сығылу әдісі. Бірлескен фотографиялық сарапшылар тобы 1992 жылы осы стандартты жасады. JPEG сандық суреттер мен фотосуреттердің Интернетке, содан кейін әлеуметтік желілерге кеңінен таралуына үлкен үлес қосты. JPEG сығылуы бірнеше сурет файл форматтарында қолданылады. JPEG/Exif – цифрлық камералар мен басқа да фотосурет түсіру құрылғыларында ең көп қолданылатын сурет форматы; JPEG/JFIF форматымен бірге, Дүниежүзілік желіде фотосуреттерді сақтау және жіберу үшін ең көп қолданылатын формат болып табылады. Мұндай форматтың түрлері көбінесе ажыратылмайды және жай ғана JPEG деп аталады. JPEG үшін MIME медиа типі – "image/jpeg", бірақ ескі Internet Explorer нұсқалары JPEG суреттерін жүктеген кезде "image/pjpeg" MIME типін ұсынады. JPEG файлдарының атауы әдетте ".jpg" немесе ".jpeg" болып келеді. JPEG/JFIF 65535×65535 пикселге дейін максималды сурет мөлшерін қолдайды, яғни 1:1 қатынаста 4 гигапикселге дейін. 2000 жылы JPEG тобы JPEG 2000 форматын ұсынды, бірақ ол бастапқы JPEG-ті басым сурет стандарты ретінде толығымен алмастыра алмады.

Өмірбаян

1992 жылы жарияланған JPEG-тің бастапқы спецификациясы CCITT (қазіргі ITU T) және Бірлескен фотоэксперттер тобы келтірген әртүрлі бұрынғы ғылыми-зерттеу еңбектерінен және патенттерден алынған процестерді іске асырады. JPEG спецификациясы бірнеше компаниялардың патенттерін сілтейді. Келесі патенттер арифметикалық кодтау алгоритмінің негізін құрады. Алайда, JPEG спецификациясы 1977 және 1984 жылдары жарияланған Вэнь Хсюнг Ченнің екі бұрынғы ғылыми-зерттеу еңбегін де сілтеді. 1987 жылы ISO TC 97 ISO/IEC JTC 1 болып өзгерді, ал 1992 жылы CCITT ITU T болып өзгерді. Қазіргі уақытта JTC1 жағында JPEG, ISO/IEC Бірлескен техникалық комитетінің 1-ші комитетінің, 29-шы кіші комитетінің, 1-ші жұмыс тобының (ISO/IEC JTC 1/SC 29/WG 1) екі кіші тобының бірі болып табылады – «Тұрақты кескіндерді кодтау» деп аталады. ITU T жағында ITU T SG16 тиісті орган болып табылады. JPEG тобы 1986 жылы құрылып, 1992 жылы алғашқы JPEG стандартын шығарды, ол 1992 жылдың қыркүйегінде ITU T T.81 ұсынысы ретінде, ал 1994 жылы ISO/IEC 10918-1 ретінде бекітілді. JPEG стандарты кодекті анықтайды, ол суретті байттар ағынына қалай сығылуын және кері бағытта суретке қалай сығылуын анықтайды, бірақ бұл ағынды қамтитын файл пішімін емес. Exif және JFIF стандарттары JPEG қысылған суреттерді алмасу үшін қолданылатын әдеттегі файл пішімдерін анықтайды. JPEG стандарттары ресми түрде «Ақпараттық технологиялар – үздіксіз тоналды тұрақты кескіндерді цифрлық қысу және кодтау» деп аталады. ISO/IEC 10918 келесі бөліктерден тұрады:

+Үздіксіз тоналды тұрақты кескіндерді цифрлық қысу және кодтау Бөліктер ISO/IEC стандарты ITU T ұсынысы Алғашқы жариялану күні Соңғы түзетулер Атауы Сипаттама 1-бөлік ISO/IEC 10918-1:1994 T.81 (09/92) abbr=on Талаптар мен нұсқаулар 2-бөлік ISO/IEC 10918-2:1995 T.83 (11/94) abbr=on Сәйкестік сынағы 1-бөлікке сәйкес бағдарламалық қамтамасыз етуді тексеру ережелері мен талаптары. 3-бөлік ISO/IEC 10918-3:1997 T.84 (07/96) abbr=on abbr=on Кеңейтімдер 1-бөлікті жақсартуға арналған кеңейтімдер жиынтығы, соның ішінде Тұрақты кескінді алмасу файл форматы (SPIFF). 4-бөлік ISO/IEC 10918-4:1999 T.86 (06/98) abbr=on abbr=on JPEG профильдерін, SPIFF профильдерін, SPIFF тегтерін, SPIFF түсті кеңістіктерін, APPn маркерлерін, SPIFF сығылу түрлерін және Тіркеуші органдарды (REGAUT) JPEG-ті кеңейту үшін пайдаланылатын кейбір параметрлерді тіркеу әдістері 5-бөлік ISO/IEC 10918-5:2013 T.871 (05/11) abbr=on JPEG файл алмасу форматы (JFIF) JPEG стандартымен кодталған суреттер үшін де-факто файл форматы болып табылатын танымал формат. 2009 жылы JPEG комитеті JFIF-ті JPEG 5-бөлігі ретінде стандарттау үшін арнайы топ құрды. 6-бөлік ISO/IEC 10918-6:2013 T.872 (06/12) abbr=on Баспа жүйелеріне қолдану ISO/IEC 10918-1 басу үшін кодталған суреттерді алмасу үшін ерекшеліктер мен қолданба құралдарының кіші топтамасын анықтайды. 7-бөлік ISO/IEC 10918-7:2023 T.873 (06/21) 2019 жылдың мамыр айы 2023 жылдың қараша айы Анықтамалық бағдарламалық қамтамасыз ету JPEG негізгі кодтау жүйесінің анықтамалық іске асырылуын қамтамасыз етеді. Ecma International TR/98 JPEG файл алмасу форматын (JFIF) анықтайды; алғашқы басылым 2009 жылдың маусымында жарияланды.

Патент даулары

2002 жылы Forgent Networks компаниясы JPEG технологиясына патент құқығын иеленгенін және оны қорғайтынын мәлімдеді. Бұл патент 1986 жылдың 27 қазанында Compression Labs компаниясының Вен Хсиунг Чен және Дэниел Дж. Кленке жасаған өтінім негізінде, 1987 жылдың 6 қазанында тіркелген. Forgent сол кезде Compression Labs-тің иесі болмағанмен, Чен кейіннен Compression Labs-ті Forgent-ке сатты, ал Чен өзі Cisco компаниясында жұмыс істеді. Осының нәтижесінде Forgent патентке ие болды, бұл пікірді көптеген сарапшылар да қолдады. 2002 және 2004 жылдар аралығында Forgent шамамен 30 компанияға патентін лицензиялап, 105 миллион АҚШ долларына жуық табыс тапты. 2004 жылдың сәуірінде Forgent тағы 31 компанияны қосымша лицензиялық төлемдерді талап ету үшін сотқа берді. Сол жылдың шілде айында 21 ірі компьютерлік компаниядан құралған консорциум патентті жарамсыз деп тану үшін қарсы сотқа шағым түсірді. Сонымен қатар, Microsoft 2005 жылдың сәуірінде Forgent компаниясына қарсы жеке сот ісі қозғады. 2006 жылдың ақпанында АҚШ-тың Патент және сауда белгілері кеңсесі (USPTO) Қоғамдық патент қорының өтініші бойынша Forgent-тің JPEG патентін қайта қарауға келісті. 2006 жылдың 26 мамырында USPTO патентті бұрынғы техникалық деңгейге сәйкес жарамсыз деп тапты. USPTO сонымен қатар Forgent бұл техникалық деңгей туралы білгенін, бірақ қасақана түрде Патент кеңсесіне хабарламағанын анықтады. Бұл патентті қалпына келтіруге жасалатын кез келген әрекеттің сәтті болу ықтималдығын төмендетіп, жоққа шығарады. Forgent 1994 жылы Еуропалық патенттік кеңсесінен алған ұқсас патентке де ие, бірақ оның күшіне енуі күмәнді. 2006 жылдың 27 қазанында АҚШ патентінің 20 жылдық мерзімі аяқталды, ал 2006 жылдың қарашасында Forgent JPEG стандартын қолдануға қатысты патенттік талаптарды орындаудан бас тартуға келісті. JPEG комитетінің мақсаты – стандарттарын (әсіресе негізгі әдістерін) лицензиялық төлемдерсіз іске асыруға болатындай ету. Олар 20-дан астам ірі ұйымнан JPEG 2000 стандартына қатысты лицензиялық құқықтарды алды. 2007 жылдың тамызынан бастап Global Patent Holdings, LLC тағы бір компания 1993 жылы тіркелген патенті JPEG кескіндерін веб-сайттан немесе электрондық пошта арқылы жүктеу арқылы бұзылғанын мәлімдеді. Егер бұл патент жарамсыз деп танылмаса, ол JPEG кескіндерін көрсететін кез келген веб-сайтқа қолданылуы мүмкін. Патент 2000 жылдан 2007 жылға дейін АҚШ-тың Патент және сауда белгілері кеңсесінде қайта қарастырылды. 2007 жылдың шілдесінде Патент кеңсесі патенттің барлық бастапқы талаптарын күшін жойды, бірақ Global Patent Holdings ұсынған қосымша талаптың (17-талап) жарамды екенін анықтады. Global Patent Holdings патентінің 17-талабына негізделген бірнеше сотқа шағым түсірді. Қайта қараудан кейінгі алғашқы екі сот ісі бойынша, екеуі де Чикагода, Иллинойс штатында, Global Patent Holdings Green Bay Packers, CDW, Motorola, Apple, Orbitz, Officemax, Caterpillar, Kraft және Peapod компанияларын сотқа берді. Үшінші сот ісі 2007 жылдың 5 желтоқсанында Оңтүстік Флоридада ADT Security Services, AutoNation, Florida Crystals Corp., HearUSA, MovieTickets.com, Ocwen Financial Corp. және Tire Kingdom компанияларына қарсы қозғалды, ал төртінші сот ісі 2008 жылдың 8 қаңтарында Оңтүстік Флоридада Бока Ратон курорттық клубына қарсы ашылды. Бесінші сот ісі Невада штатында Global Patent Holdings компаниясына қарсы қозғалды. Бұл талапты Zappos.com, Inc. компаниясы қойды, ол Global Patent Holdings тарапынан қауіп көргенін мәлімдеді және "341 патентінің жарамсыз екендігіне және бұзылмағанына сот шешімін іздеді. Global Patent Holdings сондай-ақ "341" патентін кең ауқымды бағдарламалық қамтамасыз ету патенттерінің ашық сыншыларын, соның ішінде Грегори Ахаронян мен "Patent Troll Tracker" деп аталатын веб-блогының анонимді авторын сотқа беру немесе қорқыту үшін пайдаланды. 2007 жылдың 21 желтоқсанында Чикаголық патенттік адвокат Вернон Франциссен АҚШ-тың Патент және сауда белгілері кеңсесінен "341" патентінің жалғыз қалған талабын жаңа техникалық деңгейге сәйкес қайта қарауды сұрады. 2008 жылдың 5 наурызында АҚШ-тың Патент және сауда белгілері кеңсесі "341" патентін қайта қарауға келісті, жаңа техникалық деңгей патенттің жарамдылығына қатысты маңызды жаңа сұрақтар тудырғанын анықтады. Қайта қарауды ескере отырып, сотталып жатқан бес ісдің төртеуі бойынша құқық бұзушылыққа айыпталушылар АҚШ Патент және сауда белгілері кеңсесінің "341" патентін тексеруін аяқтағанға дейін істерін тоқтату (кезеңдеу) туралы өтініш берді. 2008 жылдың 23 сәуірінде Чикагодағы (Иллинойс штаты) екі істі қараған судья бұл өтініштерді мақұлдады. 2008 жылдың 22 шілдесінде Патент кеңсесі екінші қайта қараудың бірінші "Патенттік іс-қимылын" шығарды, онда он тоғыз жеке негізге сәйкес талаптың жарамсыз екендігі анықталды. 2009 жылдың 24 қарашасында барлық талаптарды жойған қайта қарау туралы сертификат шығарылды. 2011 жылдан бастап және 2013 жылдың басына дейін, Шығыс Техас штатында орналасқан Princeton Digital Image Corporation атты ұйым JPEG кескіндерін қысу стандартына қатысты Princeton талаптарының бұзылуы үшін көптеген компанияларды сотқа берді және көптеген веб-сайттарды, саудагерлерді, камера және құрылғы өндірушілерін және қайта сатушыларды сотқа берді. Патент бастапқыда General Electric компаниясына тиесілі болған және оған берілген. Патент 2007 жылдың желтоқсанында мерзімі бітті, бірақ Princeton бұл патенттің "өткен бұзушылығы" үшін көптеген компанияларды сотқа берді. (АҚШ патенттік заңдарына сәйкес, патент иесі сотқа шағым бергенге дейін алдыңғы алты жыл ішіндегі "өткен бұзушылық" үшін сотқа шағымдануға құқылы, сондықтан Princeton теориялық тұрғыдан 2013 жылдың желтоқсанына дейін компанияларды соттауды жалғастыра берген болар еді.) 2013 жылдың наурыз айына қарай Princeton Нью-Йорк және Делавэр штаттарында 55-тен астам компанияға қарсы сот процестерін бастады. General Electric компаниясының сотқа қатысуы белгісіз, бірақ сот материалдарында ол 2009 жылы патентті Princeton компаниясына бергенін және патенттегі белгілі бір құқықтарды сақтап қалғанын көрсетеді.

Әдеттегі қолданылуы

JPEG қысу алгоритмі фотосуреттер мен реалистік көріністердегі суреттерде, тон мен түстің тегіс өзгеруінде ең жақсы жұмыс істейді. Веб-пайдалану үшін, сурет үшін қолданылатын дерек көлемін азайту жауапты көрсету үшін маңызды болғандықтан, JPEG-тің сығылу мүмкіндіктері оны танымал етеді. JPEG/Exif – цифрлық камералармен сақталатын ең көп таралған формат. Дегенмен, JPEG сызықтық суреттерге және басқа мәтіндік немесе белгілі графикаға қолайлы емес, себебі жанындағы пиксельдер арасындағы күрт контрасттар көзге көрінетін бұрмалауларға әкелуі мүмкін. Мұндай суреттерді TIFF, GIF, PNG немесе шикі сурет форматы сияқты жоғалтусыз графикалық форматта сақтаған дұрыс. JPEG стандарты жоғалтусыз кодтау режимін қамтиды, бірақ көптеген өнімдерде бұл режим қолданылмайды. JPEG әдетте жоғалтумен сығымдау әдісі ретінде қолданылады, ол сурет сапасын төмендетеді, сондықтан бейнелеу деректерін дәл көшіру үшін (мысалы, кейбір ғылыми және медициналық бейнелеу салаларында және техникалық бейне өңдеу жұмыстарында) ол қолайлы емес. JPEG бірнеше рет өңделетін файлдарға да жарамсыз, өйткені сурет қайта сығымдалған сайын бейне сапасы төмендейді, әсіресе сурет кесілсе немесе жылдырылса немесе кодтау параметрлері өзгертілсе. Толық мәліметтер үшін «цифрлық генерациядан туындаған сапаның жоғалуы» бөлімін қараңыз. Сурет ақпаратының бірнеше рет өңдеу кезінде жоғалмауы үшін, алғашқы өңдеуді жоғалтусыз форматта сақтап, кейіннен сол форматта өңдеп, содан соң тарату үшін JPEG форматында жариялауға болады.

JPEG қысымы

JPEG дискретті косинус түрлендіруіне (DCT) негізделген жоғалтулы сығымдау түрін қолданады. Бұл математикалық операция бейне көзінің әрбір кадрын/өрісін кеңістіктік (2D) доменнен жиілік доменіне (әлде де трансформация домені деп аталады) түрлендіреді. Адамның психовизуалды жүйесіне шамамен негізделген қабылдау моделі жоғары жиілікті ақпаратты, яғни қарқындылықтағы және түс тонындағы күрт өзгерулерді жоққа шығарады. Трансформация доменінде ақпаратты азайту процесі кванттау деп аталады. Тұжырымдамалық тұрғыдан алғанда, кванттау – әр санның әртүрлі жиілігімен үлкен сандық шкаланы кішірек шкалаға оңтайлы түрде азайту әдісі, ал трансформация домені – кескіннің ыңғайлы бейнелеуі, себебі жалпы суретке басқа коэффициенттерге қарағанда аз үлес қосатын жоғары жиілікті коэффициенттер әдетте кішкентай мәндер болып келеді және жоғары сығымдалуға икемді. Квантталған коэффициенттер содан кейін тізбектелген түрде және жоғалтусыз шығыс бит ағынына жиналады. JPEG бағдарламалық қамтамасының дерлік барлық нұсқалары пайдаланушыға сығымдау коэффициентін (сондай-ақ басқа да қосымша параметрлерді) басқару мүмкіндігін береді, бұл пайдаланушыға кішкентай файл көлемі үшін сурет сапасынан бас тартуға мүмкіндік береді. Кіріктірілген қолданбаларда (мысалы, ұқсас DCT сығымдау схемасын қолданатын miniDV) параметрлер алдын ала таңдалады және қолданба үшін бекітіледі. Сығымдау әдісі әдетте жоғалтулы болады, яғни кейбір бастапқы кескін ақпараты жоғалады және қалпына келтірілмейді, бұл кескін сапасына әсер етуі мүмкін. JPEG стандартында міндетті емес жоғалтусыз режим де қарастырылған. Дегенмен, бұл режим өнімдерде кеңінен қолданылмайды. Сондай-ақ, деректер бірнеше өтеулерде бірте-бірте жоғарылаған егжей-тегжейлі түрде сығылатын аралас JPEG форматы бар. Бұл баяу қосылым арқылы жүктеу кезінде көрсетілетін үлкен кескіндер үшін өте қолайлы, деректердің бір бөлігін ғана алғаннан кейін орынды алдын ала қарауға мүмкіндік береді. Алайда, прогрессивті JPEG-терді қолдау әртүрлі болуы мүмкін. Прогрессивті JPEG файлдарын оларды қолдамайтын бағдарламалар (мысалы, Windows 7-ге дейінгі Internet Explorer нұсқалары) алған кезде, бағдарламалық қамтамасыз ету оны толық жүктегеннен кейін ғана кескінді көрсетеді. Сондай-ақ, 12 биттік JPEG кескіндерін жасайтын және өңдейтін көптеген медициналық бейнелеу, көлік және камералық қолданбалар бар. 12 биттік JPEG форматы JPEG спецификациясының кеңейтілген бөлігінде қамтылған. libjpeg кодегі 12 биттік JPEG-ті қолдайды және тіпті жоғары өнімділік нұсқасы да бар.

Жоғалмайтын өңдеу

JPEG кескініне бірнеше өзгеріс жоғалтусыз (яғни, қайта қысусыз және сапаның төмендеуіне алып келмейтін) енгізілуі мүмкін, егер кескіннің мөлшері 1 MCU блогының (Минималды кодталған бірлік) еселігі болса (әдетте 4:2:0 түс үлгісінде екі бағытта да 16 пиксел). Мұны іске асыратын құралдар: jpegtran және оның графикалық интерфейсі, Jpegcrop. IrfanView "JPG Lossless Crop (PlugIn)" және "JPG Lossless Rotation (PlugIn)" функцияларын пайдаланады, олар үшін JPG TRANSFORM плагинін орнату қажет. FastStone Image Viewer "Lossless Crop to File" және "JPEG Lossless Rotate" функцияларын ұсынады. XnViewMP "JPEG жоғалтусыз түрлендірулерді" қолдайды. ACDSee "Force lossless JPEG operations" опциясы арқылы жоғалтусыз айналдыруды (бірақ жоғалтусыз кесіп алуды емес) қолдайды. Блоктарды 90 градусқа бұруға, көлденең, тік және диагональді өстерде аударып, кескін ішінде жылжытуға болады. Өзгертілген кескінде бастапқы кескіннің барлық блоктарын пайдалану міндетті емес. JPEG кескінінің жоғарғы және сол жақ шеті 8 × 8 пикселдік блок шекарасында (немесе үлкен MCU өлшемдері үшін 16 × 16 пикселдік) болуы керек, ал төменгі және оң жақ шеттері осы талапқа бағынбауы мүмкін. Бұл жоғалтусыз кесіп алу мүмкіндіктерін шектейді, сондай-ақ барлық түстер үшін шеті блок шекарасында жатпаған кескінді айналдыруға және аударуға да кедергі келтіреді (өйткені шет жоғары немесе сол жаққа орналасады, онда, жоғарыда айтылғандай, блок шекарасы міндетті). Кескіннің мөлшері 8 немесе 16-ға еселі емес болғанда айналдыру жоғалтусыз болмайды, мөлшері түс үлгісіне байланысты. Мұндай кескінді айналдыру блоктардың қайта есептелуіне әкеледі, нәтижесінде сапа төмендейді. Жоғалтусыз кесіп алу кезінде, егер кесілген аймақтың төменгі немесе оң жағы блок шекарасында болмаса, ішінара пайдаланылған блоктардың қалған бөлігі кесілген файлда сақталады және оны қалпына келтіруге болады. Сонымен қатар, сапа жоғалмастан бастапқы және прогрессивті форматтар арасында түрлендіруге болады, себебі айырмашылық тек файлдағы коэффициенттердің орналасу ретінде ғана болады. Аталған шарттар сақталған жағдайда, бірнеше JPEG кескінін жоғалтусыз біріктіруге де болады – олар бірдей сапамен сақталған және шеттері блок шекараларымен сәйкес келуі тиіс.

JPEG файл атауының кеңейтулері

JPEG қысымын қолданатын файлдардың ең көп таралған файл атауының кеңейтімдері jpg және jpeg болып табылады, бірақ jpe, jfif және jif та қолданылады. JPEG деректерін басқа файл түрлеріне де ендіруге болады – TIFF кодталған файлдар көбінесе негізгі кескіннің кішкентай суреті ретінде JPEG кескінін ендіреді; ал MP3 файлдары ID3v2 тегіндегі обложканың JPEG суретін қамтуы мүмкін.

Түс профилі

Көптеген JPEG файлдарында ICC түстер профилі (түстер кеңістігі) кіріктірілген. Көбінесе қолданылатын түстер профильдеріне sRGB және Adobe RGB жатады. Осы түстер кеңістіктері сызықты емес түрлендіруді қолданғандықтан, 8 биттік JPEG файлының динамикалық диапазоны шамамен 11 тоқтауға жетеді; гамма қисығына қараңыз. Егер суретте түстер профилі туралы ақпарат болмаса (белгіленбеген болса), веб-беттерде көрсету үшін түстер кеңістігі sRGB деп қарастырылады.

Синтаксис және құрылым

JPEG кескіні сегменттер тізбегінен тұрады, олардың әрқайсысы 0xFF байтымен басталады, содан кейін ол қандай маркер екенін көрсететін байт. Кейбір маркерлер тек осы екі байттан тұрады; ал басқалары екі байттан (жоғары, содан кейін төмен) тұрады, бұл маркерге тән жүктеме деректерінің ұзындығын көрсетеді. (Ұзындық ұзындық үшін екі байтты қамтиды, бірақ маркер үшін екі байтты емес.) Кейбір маркерлер энтропиялық кодталған деректермен бірге келеді; мұндай маркердің ұзындығына энтропиялық кодталған деректер кірмейді. Бір-біріне тікелей жалғасқан 0xFF байттары толтыру байттары ретінде пайдаланылады, бірақ бұл толтыру байты тек энтропиялық кодталған сканерлеу деректеріне тікелей жататын маркерлер үшін ғана орындалуы керек (толық мәлімет үшін JPEG спецификациясының B.1.1.2 және E.1.2 бөлімдерін қараңыз; атап айтқанда, "Маркерлер сығылған деректерден кейін қосылған барлық жағдайларда, 0xFF толтыру байттары маркерден бұрын орналасуы мүмкін"). Энтропиялық кодталған деректерде кез келген 0xFF байтынан кейін, кодтаушы келесі байттың алдында 0x00 байтын қосады, осылайша қателіктерге алып келетін, көзделмеген жерде маркер пайда болуын болдырмайды. Декодерлер 0x00 байтын жіберіп алуы керек. Бұл әдіс, байтты толтыру деп аталады (JPEG спецификациясының F.1.2.3 бөлімін қараңыз), тек энтропиялық кодталған деректерге ғана қолданылады, маркерлік жүктеме деректеріне емес. Дегенмен, энтропиялық кодталған деректердің өзінде бірнеше маркерлер бар; атап айтқанда, қайта орнату маркерлері (0xD0-ден 0xD7-ге дейін), олар параллель декодтауға мүмкіндік беру үшін энтропиялық кодталған деректердің тәуелсіз бөліктерін оқшаулау үшін қолданылады, және кодтаушылар осы қайта орнату маркерлерін үнемі аралықпен енгізуге құқылы (бірақ барлық кодтаушылар осыны жасамайды). + Жалпы JPEG маркерлері Қысқаша атауы Байттар Жүктемесінің аты Түсіндірмелер SOI 0xFF, 0xD8 жоқ Кескіннің басталуы SOF0 0xFF, 0xC0 өзгермелі өлшем Фреймнің басталуы (базалық DCT) Бұл базалық DCT негізіндегі JPEG екенін көрсетеді және енін, биіктігін, компоненттер санын және компоненттердің қосалқы үлгілеуін (мысалы, 4:2:0) анықтайды. SOF2 0xFF, 0xC2 өзгермелі өлшем Фреймнің басталуы (прогрессивті DCT) Бұл прогрессивті DCT негізіндегі JPEG екенін көрсетеді және енін, биіктігін, компоненттер санын және компоненттердің қосалқы үлгілеуін (мысалы, 4:2:0) анықтайды. DHT 0xFF, 0xC4 өзгермелі өлшем Хаффман кестесін анықтау Бір немесе бірнеше Хаффман кестелерін анықтайды. DQT 0xFF, 0xDB өзгермелі өлшем Кванттау кестесін анықтау Бір немесе бірнеше кванттау кестелерін анықтайды. DRI 0xFF, 0xDD 4 байт Қайта іске қосу аралығын анықтау Минималды кодталған бірліктерде (MCU) RSTn маркерлері арасындағы аралықты анықтайды. Бұл маркерден кейін екі байт келеді, бұл оның өзгермелі өлшемімен басқа сегменттер сияқты қарастырылуына мүмкіндік береді. SOS 0xFF, 0xDA өзгермелі өлшем Сканерлеудің басталуы Кескінді жоғарыдан төменге қарай сканерлеуді бастайды. Базалық DCT JPEG кескіндерінде әдетте бір сканерлеу болады. Прогрессивті DCT JPEG кескіндері әдетте бірнеше сканерлеуді қамтиды. Бұл маркерде қандай деректер бөлігі болатыны көрсетіледі және оған бірден энтропиялық кодталған деректер қосылады. RSTn 0xFF, 0xDn (n=0-7) жоқ Қайта іске қосу r макроблоктың әрқайсысы енгізіледі, мұндағы r - DRI маркерімен белгіленген қайта іске қосу аралығы. DRI маркері болмаса қолданылмайды. Маркерлік кодтың төменгі үш биті 0-ден 7-ге дейін циклмен өзгереді. APPn 0xFF, 0xEn өзгермелі өлшем Қолданбаға тән Мысалы, Exif JPEG файлы TIFF негізіндегі құрылымда орналасқан метадеректерді сақтау үшін APP1 маркерін қолданады. COM 0xFF, 0xFE өзгермелі өлшем Түсініктеме Мәтіндік түсініктеме қамтиды. EOI 0xFF, 0xD9 жоқ Кескіннің соңы JPEG кодтамасының басқа түрлерін енгізетін басқа Start Of Frame маркерлері де бар. Бірнеше сатушылар бірдей APPn маркер түрін қолдана алатындықтан, қосымшаға арналған маркерлер көбінесе стандартты немесе сатушының атын (мысалы, "Exif" немесе "Adobe") немесе басқа сәйкестендіру тізбегімен басталады. Қайта іске қосу маркерінде блок-блок болжаушы айнымалылары қайта орнатылады және бит ағыны байт шекарасына синхрондалады. Қайта іске қосу маркерлері бит ағыны қатесінен кейін қалпына келтіру құралын ұсынады, мысалы, сенімсіз желі арқылы немесе файлдың зақымдануынан кейін. Қайта іске қосу маркерлері арасындағы макроблоктардың орындалуы тәуелсіз түрде декодталуы мүмкін болғандықтан, бұл орындалулар қатар декодталуы мүмкін.

JPEG кодегінің үлгісі

JPEG файлы әр түрлі жолдармен кодталуы мүмкін, бірақ көбінесе JFIF кодтаумен жасалады. Кодтау процесі бірнеше қадамнан тұрады: Суреттегі түстердің бейнеленуі RGB-дан, жарықтықты көрсететін бір люма компоненті (Y') және түсті көрсететін екі хрома компоненті (CB және CR) құрамына өтеді. Бұл қадам кейде жіберіліп қалады. Хрома деректерінің ажыратымдылығы әдетте 2 немесе 3 есеге төмендетіледі. Бұл көздің жарықтығының ұсақ бөлшектеріне қарағанда түстің ұсақ бөлшектеріне сезімталдығы аз екенін көрсетеді. Сурет 8×8 пикселдік блоктарға бөлінеді, және әр блок үшін Y, CB және CR деректерінің әрқайсысы дискретті косинус түрлендіруіне (DCT) түседі. DCT Фурье түрлендіруіне ұқсас, себебі ол кеңістіктік жиілік спектрін жасайды. Жиілік компоненттерінің амплитудасы квантталады. Адам көзі үлкен аумақтағы түс немесе жарықтың шағын өзгерулеріне, жоғары жиілікті жарық өзгерулерінің күшіне қарағанда әлдеқайда сезімтал. Сондықтан жоғары жиілікті компоненттердің шамалары төмен жиілікті компоненттерге қарағанда төмен дәлдікпен сақталады. Энкодердің сапа параметрлері (мысалы, Independent JPEG Group кітапханасындағы 0–100 шкаласы бойынша 50 немесе 95) әр жиілік компонентінің ажыратымдылығының қаншалықты төмендетілетініне әсер етеді. Егер тым төмен сапа параметрі қолданылса, жоғары жиілікті компоненттер мүлдем жойылады. Барлық 8×8 блоктар үшін алынған деректер Huffman кодтамасының түрі болып табылатын жоғалтусыз алгоритммен одан әрі қысылады. Декодтау процесі осы қадамдарды кері қайтарады, кванттаудан басқа, себебі ол қайтымсыз болып табылады. Осы бөлімнің қалған бөлігінде кодтау және декодтау процестері егжей-тегжейлі сипатталады.

Кодтау

JPEG стандартындағы көптеген опциялар кеңінен қолданылмайды, және жоғарыда айтылғандай, көптеген кескін бағдарламалық құралдары JPEG файлы жасағанда қарапайым JFIF форматын пайдаланады, ол кодтау әдісін анықтайды және тағы да басқа нәрселерді қамтиды. Мұнда пикселге 24 бит (қызыл, жасыл және көк түстердің әрқайсынан сегіз бит) берілген кезде қолданылатын ең көп таралған кодтау әдістерінің бірінің қысқаша сипаттамасы келтірілген. Бұл нақты нұсқа – деректерді жоғалтумен сығымдау әдісі.

Түс кеңістігінің түрленуі

Біріншіден, сурет RGB форматынан (әдетте sRGB, онда сурет қызыл, жасыл және көк түстің жарықтық компоненттері жеке арналарда сақталады) түрлендірілуі керек. Бұл тиімсіз сығылуға әкеледі және файл көлемі аса маңызды болған жағдайда қолданылуы ықтимал емес.

Үлгілерді азайту

Адам көзіндегі түс және жарықтылыққа сезімтал рецепторлардың тығыздығына байланысты, адамдар кескіннің жарықтығында (Y' компоненті) кескіннің түсі мен түс қанықтығына қарағанда (Cb және Cr компоненттері) әлдеқайда көп ұсақ бөлшектерді көре алады. Осы білімді пайдаланып, кодтаушыларды суреттерді тиімдірек қысу үшін жасауға болады. Түс моделіне түрлендіру келесі кәдімгі қадамды іске қосады, ол Cb және Cr компоненттерінің кеңістіктік ажыратымдылығын төмендету (бұған "төмендету" немесе "хромалық субдискретизация" деп аталады). JPEG кескіндері үшін төмендету әдетте 4:4:4 (төмендету жоқ), 4:2:2 (көлденең бағытта 2 есе төмендету) немесе (көбінесе) 4:2:0 (көлденең және тік бағытта 2 есе төмендету) пропорциясында жасалады. Қысылу процесінің қалған бөлігінде Y', Cb және Cr компоненттері бөлек және өте ұқсас әдіспен өңделеді.

Блокты бөлу

Үлгі алынғаннан кейін әрбір арна 8x8 блоктарға бөлінуі керек. Хромалық субсемплингке байланысты, бұл 8×8 (4:4:4 – субсемплингсіз), 16×8 (4:2:2) немесе көбінесе 16×16 (4:2:0) өлшемді Ең Кіші Кодталған Блок (MCU) блоктарын тудырады. Видеоны сығымдауда MCU блоктары макроблоктар деп аталады. Егер арнаның деректері толық емес блоктардың санын көрсетпесе, онда кодектелгіш толық емес блоктардың қалған бөлігін қандай да бір мәліметтермен толтыруы керек. Шекараларды белгілі бір түспен (мысалы, қара) толтыру шекараның көрінетін бөлігінде сақина тәрізді артефактілерді тудыруы мүмкін; шеттік пиксельдерді қайталау – мұндай артефактілерді азайтатын (бірақ міндетті түрде жоймайтын) кең таралған тәсіл, сондай-ақ шекараларды толтырудың күрделі әдістерін де қолдануға болады.

Қажетті дәлдік

JPEG кодегінің қажетті іске асыру дәлдігі JPEG стандартына сәйкестік талаптары арқылы түсіндіріледі. Бұл талаптар ITU-T Т.83 ұсынымында және ISO/IEC 10918 2 стандартында белгіленген. MPEG стандарттарынан және кейінгі көптеген JPEG стандарттарынан өзгеше, аталған құжат JPEG кодегінің кодтау және декодтау процесі үшін қажетті іске асыру дәлдігін DCT доменіндегі тікелей және кері DCT түрлендірулерінің максималды қабылданатын қатесі арқылы анықтайды, бұл анықтамалық тесттік ағындармен өлшендіріледі. Мысалы, декодер іске асыруының нәтижесі, аталған стандарттың құрамында келтірілген тесттік код ағындарына қолданғанда, DCT доменінде бір кванттау бірлігінен аспауы керек. Көбінесе кездеспейтін және көптеген басқа, сондай-ақ заманауи стандарттардан айырмашылығы, ITU-T Т.83 және ISO/IEC 10918 2 бейне доменінде қателік шегін белгілемейді.

JPEG қысымының әсері

JPEG қысылу артефактілері егжей-тегжейлі біркелкі емес текстуралары бар фотосуреттерге жақсы сіңіп, жоғары қысылу коэффициенттерін мүмкін етеді. Суреттің жоғарғы сол жақ бұрышындағы жоғары жиілікті текстураларға жоғары қысылу коэффициентінің алдымен қалай әсер ететініне және контрастты сызықтардың қалай нашарлайтынына назар аударыңыз. Өте жоғары қысылу коэффициенті сурет сапасына күрт әсер етеді, бірақ жалпы түстер мен сурет пішіні әлі де танылады. Дегенмен, түстердің дәлдігі, жарыққа негізделген контурлардың дәлдігіне қарағанда, аз зардап шегеді (адам көзі үшін). Осыған байланысты, суреттерді алдымен жарықтан түстік ақпаратты бөлетін түстік модельге түрлендіру қажет, содан кейін түстік жазықтарды (төмен сапалы кванттауды да қолдануға болады) суреттеп алу арқылы жарық жазығының дәлдігін көбірек ақпарат биттерімен сақтауға болады.

JPEG Стереоскопиялық

JPS – 2D суреттерден 3D эффект жасауға арналған стереоскопиялық JPEG суреті. Онда екі тұрақты сурет бар, біреуі сол көзге, екіншісі оң көзге арналған; олар бір JPG файлында қатар орналасқан екі сурет ретінде сақталады. JPEG Stereoscopic (JPS, қосымшасы jps) – стереоскопиялық суреттерге арналған JPEG негізіндегі формат. Ол JPEG APP3 маркерінің өрісінде сақталған әртүрлі конфигурацияларды қамтиды, бірақ көбінесе екі еселенген ені бар бір суретті қамтиды, ол бірдей өлшемдегі екі суретті қиылысқан (сол кадр суреттің оң жағында және керісінше) қатар орналастыру арқылы көрсетеді. Бұл файл пішімін ешқандай арнайы бағдарламасыз JPEG ретінде қарауға болады, немесе басқа режимдерде көрсету үшін өңдеуге болады.

JPEG көп сурет форматы

JPEG Multi Picture Format (MPO, қосымшасы mpo) – бір файлда бірнеше суретті сақтауға арналған JPEG негізіндегі формат. Ол екі немесе одан көп JPEG файлының тіркесінен тұрады. Сондай-ақ, ол суретті сипаттау үшін JPEG APP2 маркер сегментін анықтайды. Әртүрлі құрылғылар оны 3D суреттерді сақтау үшін пайдаланады, мысалы Fujifilm FinePix Real 3D W1, HTC Evo 3D, JVC GY HMZ1U AVCHD/MVC кеңейтімді бейнекамера, Nintendo 3DS, Panasonic Lumix DMC TZ20, DMC TZ30, DMC TZ60, DMC TS4 (FT4) және Sony DSC HX7V. Басқа құрылғылар оны теледидарда көрсетілетін "алдын ала қарау суреттерін" сақтау үшін қолданады. Соңғы жылдары стереоскопиялық суреттерді қолданудың артуына байланысты, ғылыми қауымдастық стереоскопиялық суреттерді қысу алгоритмдерін әзірлеуге көп күш жұмсады.

Қолданылу

JPEG кодегінің өте маңызды іске асырылуы – Independent JPEG Group-тың ашық бағдарламалау кітапханасы libjpeg. Ол алғаш рет 1991 жылы жарияланды және стандарттың сәтті болуының кілті болды. Бұл кітапхана көптеген қолданбаларда пайдаланылды. 1998 жылы әзірлеме тоқтап қалды; libjpeg 2009 жылы 7-ші нұсқасымен қайта пайда болғанда, ол бұрынғы нұсқалармен ABI үйлесімділігін бұзды. 2010 жылғы 8-ші нұсқа стандартты емес кеңейтулерді енгізді, бұл шешімді бастапқы IJG жетекшісі Том Лейн сынға алды. libjpeg turbo, 1998 жылғы libjpeg 6b-дан жасалған, SIMD оптимизациясы арқылы libjpeg-ді жақсартады. Бастапқыда libjpeg-тің толықтырылған нұсқасы ретінде қарастырылған, ол 2009 жылғы үйлесімсіз өзгерістерден кейін танымал болды. 2019 жылы ол ITU|ISO/IEC анықтамалық іске асыруы ISO/IEC 10918 7 және ITU T T.873 ретінде танылды. ISO/IEC Бірлескен Фотосуреттер Сайыпқыры тобы JPEG XT тақырыбындағы басқа анықтамалық бағдарламалық қамтамасын ұстап тұрады. Ол негізгі JPEG (ISO/IEC 10918 1 және 18477–1) және JPEG XT кеңейтулерін (ISO/IEC 18477 2-ші және 6–9-шы бөлімдері), сондай-ақ JPEG LS (ISO/IEC 14495) кодтай алады. 2016 жылы "JPEG-ті күшейту" ISO JPEG XT анықтамалық іске асыруының нұсқасы ретінде ұсынылды. Белгілі бір файл мөлшері үшін кескін сапасын барынша арттыратын, JPEG-ті қалыптан тыс тәсілдермен кодтауға қызығушылық жоғары. 2014 жылы Mozilla веб-суреттері үшін арналған, баяурақ бірақ жоғары сапалы кодтаушы MozJPEG-ті libjpeg turbo негізінде жасады. 2017 жылдың наурызында Google ашық бастапқы жобаны – Guetzli-ді шығарды, ол файл мөлшерін кішірету үшін ұзақ кодтау уақытын ұсынады (PNG және басқа да жоғалмайтын деректер форматтары үшін Zopfli жасайтын нәрсеге ұқсас). 2024 жылдың сәуірінде Google Jpegli-ді ұсынды, бұл жаңа JPEG кодтау кітапханасы, жоғары сапалы компрессия параметрлерінде кеңейтілген мүмкіндіктер мен 35% ықшамдау коэффициентін ұсынады, ал кодтау жылдамдығы MozJPEG-мен салыстыруға болады.

Орынбасарлар

Бірлескен фотоэксперттер тобы бастапқы JPEG форматының мүмкіндіктерін толықтыру немесе оны алмастыру мақсатында бірнеше жаңа стандарттарды жасады.

JPEG LS

1993 жылы пайда болған және ISO 14495 1/ITU T.87 ретінде жарияланған JPEG LS, JPEG-дің бастапқы жоғалтусыз нұсқасынан тиімдірек, қарапайым жоғалтусыз файл форматын ұсынады. Ол жоғалтусызға жақын жоғалту режимін де қамтиды. Оның мүмкіндіктері негізінен осымен шектеледі және басқа жағынан, түпнұсқа JPEG-тің шектеулерімен ортақ.

JPEG 2000

JPEG 2000 2000 жылдың желтоқсан айында ISO/IEC 15444 ретінде жарияланды. Ол дискретті толқындық трансформацияға (DWT) негізделген және бастапқы JPEG стандартын толықтай алмастырып, одан әлдеқайда басым болу үшін әзірленген. Ол әрбір түсті каналға 38 битке дейін және 16384 каналға дейін қолдау көрсетеді, бұл басқа форматтардан көп, сонымен қатар көптеген түстік кеңістіктерді және осы арқылы жоғары динамикалық диапазонды (HDR) қамтиды. Бұдан өзге, ол альфа-мөлдірлік кодтауын, миллиардқа миллиард пиксельдік кескіндерді қолдайды, бұл да басқа форматтардан асып түседі, сонымен қатар жоғалтусыз сығылуды ұсынады. Бұл күшті сығылу деңгейлерінде айқын көрінбейтін артефактілердің азаюымен жоғалтулы сығылу қатынасын едәуір жақсартты.

JPEG XT

JPEG XT (ISO/IEC 18477) 2015 жылдың маусым айында жарияланды; ол негізгі JPEG форматын жоғарырақ бүтін сандық бит тереңдігін (16 битке дейін), жоғары динамикалық диапазонды бейнелеуді, қозғалатын нүктелік кодтауды, жоғалтусыз кодтауды және альфа арна кодтауды қолдау арқылы кеңейтеді. Кеңейтулер негізгі JPEG/JFIF файл пішімімен және 8 биттік жоғалтулы сығылған кескіндермен кері үйлесімді. JPEG XT JFIF негізіндегі кеңейтілген файл пішімін пайдаланады. Кеңейту қабаттары JPEG 8 биттік негізгі қабатты өзгерту және жоғары ажыратымдылықтағы кескінді қалпына келтіру үшін қолданылады. Қазіргі қолданыстағы бағдарламалық құралдар JPEG XT бинарлық ағынын оқи алады, бірақ олар тек негізгі 8 биттік қабатты ғана декодтай алады.

JPEG XL

JPEG XL (ISO/IEC 18181) 2021–2022 жылдары жарияланды. Ол JPEG форматын жаңа DCT негізіндегі, авторлық төлемсіз форматпен алмастырады және дәстүрлі JPEG суреттерін сақтау мүмкіндігі ретінде тиімді түрлендіруге (transcoding) мүмкіндік береді. Жаңа формат HEVC HM, Daala және WebP көрсеткен тұрақты кескінді сығыстыру тиімділігінен асып түсуге арналған. Ол миллиардқа миллиард пикселдік суреттерді, тиісті трансферлік функциялары (PQ және HLG) бар компонентіне шаққанда 32 битке дейінгі жоғары динамикалық диапазонды, растрлік (bitmap) қаріптер мен градиенттерді, анимациялық суреттерді, альфа-арна кодилеуін және RGB/YCbCr/ICtCp түсті кодилеуді қолдайды.