JPEG

Վիքիպեդիայից՝ ազատ հանրագիտարանից
JPEG
Phalaenopsis JPEG.jpg

MIME image/jpeg
Մշակող Joint Photographic Experts Group
Ֆորմատի տեսակ lossy compression, codec, image file format և Image compression
Կայք jpeg.org/jpeg/
JPEG Վիքիպահեստում
JPEG example down.jpg

JPEG (անգլ.՝ Joint Photographic Experts Group մշակող կազմակերպության անվամբ) լուսանկարների և նմանատիպ պատկերների պահպանման համար նախատեսված հայտնի գրաֆիկական ձևաչափերից (ֆորմատ) մեկն է։ JPEG պարունակող նիշքերը (ֆայլ) սովորաբար ունեն .jpg, .jfif, .jpe կամ .jpeg ընդլայնումները։ Սակայն բոլոր հարթակներում ամենից հայտնին .jpg-ն է։

JPEG-ի ալգորիթմը թույլ է տալիս խտացնել նկարը ինչպես կորուստներով, այնպես էլ առանց կորուստների (lossless JPEG սեղմման ռեժիմ)։ Թույլատրվում են 65535 × 65535 փիքսելից ոչ ավել գծային չափերի պատկերներ։

Կիրառման բնագավառ[խմբագրել | խմբագրել կոդը]

JPEG-ի ալգորիթմը առավելագույնս կիրառելի է լուսանկարների և նկարների խտացման համար, որոնք պարունակում են պայծառության և գույնի սահուն անցումներով իրական տեսարաններ։ JPEG-ը առավել տարածում է գտել թվային լուսանկարչության մեջ Համացանցի կիրառմամբ դրանց պահպանման և փոխանցման համար։

Կորուստներով խտացման ռեժիմով JPEG ձևաչափը այնքան էլ պիտանի չէ գծագրերի, տեքստային և նշանային գրաֆիկայի համար, որտեղ հարևան փիքսելների միջև կտրուկ ցայտունությունը (կոնտրաստ) առաջացնում է նկատելի աղավաղումներ (անգլ.՝ artifact)։ Այդպիսի պատկերները նպատակահարմար է պահպանել առանց կորուստների ձևաչափերով, ինչպիսիք են JPEG-LS, TIFF, GIF, PNG, կամ օգտագործել Lossless JPEG խտացման ռեժիմը։

Պատկերների խտացման բազմափուլ մշակման ընթացքում JPEG-ը (ինչպես նաև կորուստներով խտացման այլ ձևաչափերը) հարմար չեն, քանի որ ամեն անգամ մշակման արդյունքների միջանկյալ պահպանման ընթացքում կլինեն պատկերի աղավաղումներ։

JPEG-ը չպետք է օգտագործվի այն դեպքերում, երբ թույլատրելի չեն անգամ նվազագույն կորուստներ, օրինակ՝ աստղագիտական և բժշկական պատկերներում։ Այդ դեպքերում խորհուրդ է տրվում JPEG ստանդարտով նախատեսված խտացման Lossless JPEG-ը (որը, սակայն չի ընդունվում հայտնի կոդեկների կողմից) կամ խտացման ստանդարտ JPEG-LS-ը։

Խտացում[խմբագրել | խմբագրել կոդը]

Խտացման ընթացքում պատկերը RGB գունային տարածքից վերափոխվում է YCbCr: Պատկերի Cb և Cr ուղիների համար (պատասխանատու են գույների համար) RGB-ից YCbCr վերափոխվելուց հետո կարող է կատարվել նոսրացումը (անգլ.՝ subsampling[1]), պայծառության Y ուղու 4 փիքսելանոց (2x2) յուրաքանչյուր բլոկ դրվում է միջինացված Cb և Cr արժեքների վրա։ Ընդ որում յուրաքանչյուր 2x2 բլոկի համար 12 արժեքների (4 Y, 4 Cb և 4 Cr) փոխարեն կիրառվում է ընդամենը 6-ը (4 Y, մեկական Cb և Cr)։ Երբ պատկերի խտացումից հետո վերականգնման որակին ներկայացվում են բարձր պահանջներ, նոսրացումը կարող է կատարվել միայն մի ուղղությամբ՝ հորիզոնական («4:4:0» սխեմայով[2]), ուղղահայաց («4:2:2»), կամ ընդհանրապես չի կատարվում («4:4:4»)։

Ստանդարտը ինչպես նաև թույլատրում է Cb և Cr միջինացմամբ նոսրացում ոչ թե 2х2 բլոկի, այլ հաջորդաբար դասավորված 4 փիքսելների համար (ուղղահայաց կամ հորիզոնական), այսինքն 1х4, 4х1 («4:1:1» սխեմա), ինչպես նաև 2х4 и 4х2 («4:1:0» սխեմա)։ Cb և Cr-ի համար թույլատրվում են նաև այլ տիպերի նոսրացումներ, բայց պրակտիկայում դրանք հազվադեպ են կիրառվում։

Այնուհետև պայծառության բաղադրիչ Y-ը և գույնի համար պատասխանատու բաղադրիչներ Cb և Cr-ը բաժանվում են 8х8 փիքսելներից կազմված բլոկների։ Յուրաքանչյուր այդպիսի բլոկ ենթարկվում է դիսկրետ կոսոինուսային վերափոխման (ԴԿՎ), որից ստացված գործակիցները քվանտացվում և փաթեթավորվում են կոդավորման շարքերի և Հաֆմանի կոդերի օգտագործմամբ։

Պատկերի պահպանման ընթացքում JPEG նիշքում (ֆայլ) նշվում է որակի պարամետրը, որը տրվում է մի քանի պայմանական միավորներով՝ 1-ից 100 կամ 1-ից 10: Մեծ թիվը հիմնականում համապատասխանում է լավագույն որակին և խտացված ֆայլի մեծ չափին։ Սակայն նույնիսկ ամենաբարձր որակի օգտագործման դեպքում վերականգնվող պատկերը ճշգրտությամբ չի համընկնի սկզբնականի հետ, ինչը կապված է ԴԿՎ կատարման վերջնական ճշգրտության հետ, ինչպես նաև Y, Cb, Cr արժեքները և ԴԿՎ գործակիցները մինչև ամենամոտ ամբողջ թիվը կլորացնելու անհրաժեշտության հետ։ ԴԿՎ չօգտագործող Lossless JPEG խտացման ռեժիմը ապահովում է վերականգնվող և սկզբնական պատկերի ճշգրիտ համընկնումը, սակայն դրա փոքր էֆեկտիվությունը և ծրագրային ապահովման մշակողների կողմից խրախուսանքի բացակայությունը չեն նպաստում Lossless JPEG-ի հայտնիությանը։

Գրելաոճը (սինտակսիս) և կառուցվածքը[խմբագրել | խմբագրել կոդը]

JPEG նիշքը պարունակում է մարկերների հաջորդականություն, որոնցից յուրաքանչյուրը սկսվում է մարկերի սկիզբը վկայող 0xFF բայթից և իդենտիֆիկատոր-բայթից։ Որոշ մարկերներ կազմված են միայն այդ զույգ բայթերից, իսկ մյուսները պարունակում են լրացուցիչ տվյալներ, որոնք բաղկացած են մարկերի ինֆորմացիոն երկարության երկբայթ դաշտից և սեփական տվյալներից։ Նիշքի այսպիսի կառուցվածքը թույլատրում է արագորեն գտնել անհրաժեշտ տվյալներով մարկեր (օրինակ՝ տողի երկարությամբ, տողերի թվով և խտացված պատկերի գունային բաղադրիչների թվով)։

JPEG-ի հիմնական մարկերները[3][խմբագրել | խմբագրել կոդը]

Մարկեր Բայթեր Երկարություն Նշանակությունը Մեկնաբանություններ
SOI 0xFFD8 չունի Պատկերի սկիզբ
SOF0 0xFFC0 փոփոխական երկարություն Ֆրեյմի սկիզբ (հիմնական, ԴԿՎ) Ցույց է տալիս, որ պատկերը կոդավորվել է ԴԿՎ-ի և Հաֆմանի կոդի կիրառմամբ հիմնական ռեժիմով։ Մարկերը պարունակում է պատկերի տողերի թիվը, տողերի երկարությունը (մարկերի սկզբի համեմատ համապատասխանաբար 5 և 7 շարժով երկբայթ դաշտեր), բաղադրիչների քանակը (մարկերի սկզբի համեմատ 9 շարժով բայթային դաշտ), բաղադրիչի բիթերի թիվը՝ միմիայն 8 (մարկերի սկզբի համեմատ 4 շարժով բայթային դաշտ), ինչպես նաև բաղադրիչների հարաբերությունը (օրինակ՝ 4:2:0)։
SOF1 0xFFC1 փոփոխական երկարություն Ֆրեյմի սկիզբ (ընդլայնված, ԴԿՎ, Հաֆմանի կոդ) Ցույց է տալիս, որ պատկերը կոդավորվել է ԴԿՎ-ի և Հաֆմանի կոդի կիրառմամբ ընդլայնված (extended) ռեժիմով։ Մարկերը պարունակում է պատկերի տողերի թիվը, տողերի երկարությունը, բաղադրիչների քանակը, բաղադրիչի բիթերի թիվը (8 կամ 12), ինչպես նաև բաղադրիչների հարաբերությունը (օրինակ՝ 4:2:0)։
SOF2 0xFFC2 փոփոխական երկարություն Ֆրեյմի սկիզբ (պրոգրեսիվ, ԴԿՎ, Հաֆմանի կոդ Ցույց է տալիս, որ պատկերը կոդավորվել է ԴԿՎ-ի և Հաֆմանի կոդի կիրառմամբ պրոգրեսիվ ռեժիմով։ Մարկերը պարունակում է պատկերի տողերի թիվը, տողերի երկարությունը, բաղադրիչների քանակը, բաղադրիչի բիթերի թիվը (8 կամ 12), ինչպես նաև բաղադրիչների հարաբերությունը (օրինակ՝ 4:2:0)։
DHT 0xFFC4 փոփոխական երկարություն Պարունակում է Հաֆմանի աղյուսակներ Սահմանում է մեկ կամ ավելի Հաֆմանի աղյուսակներ։
DQT 0xFFDB փոփոխական երկարություն Պարունակում է քվանտավորման աղյուսակ Սահմանում է քվանտավորման մեկ կամ ավելի աղյուսակներ։
DRI 0xFFDD 4 բայթ Ցույց է տալիս վերաբեռնում-միջակայքի երկարությունը Մակրոբլոկներում միջակայքներ է սահմանում RST n մարկերների միջև։ DRI-ի բացակայության դեպքում կոդավորված տվյալների հոսքում RST n մարկերների հայտնվելն անթույլատրելի է և համարվում է սխալ։ Եթե կոդավորման ընթացքում RST n մարկերները չեն օգտագործվում, DRI մարկերը կամ ընդհանրապես չի օգտագործվում, կամ կրկնությունների միջակայքը նրանում ցույց է տրվում 0:
SOS 0xFFDA փոփոխական երկարություն Տեսածրման սկիզբ Առաջին կամ հերթական պատկերի տեսածրման սկիզբը ձախից աջ, վերևից ներքև անցումով։ Եթե կիրառվում է կոդավորման հիմնական ռեժիմը, օգտագործվում է մեկ տեսածրիչ, իսկ պրոգրեսիվ ռեժիմների դեպքում՝ մի քանի տեսածրիչ։ SOS մարկերը հանդիսանում է բաժանիչ պատկերի տեղեկատվական (վերնագիրի)և կոդավորված մասերի (սեփական խտացված տվյալների) միջև
RSTn 0xFFDn չունի Վերագործարկում Վերագործարկման մարկերն օգտագործվում է էնտրոպիկ կոդավորիչով կոդավորված տվյալների հատվածավորման համար։ Յուրաքանչյուր հատվածում տվյալները վերակոդավորում են անկախ։ Կոդավորված տվյալների վնասվածքի դեպքում JPEG նիշքի փոխանցման և պահպանման գործընթացում վերագործարկման մարկերը թույլատրում է սահմանափակել կորուստները։
APPn 0xFFEn փոփոխական երկարություն Տրվում է հավելվածի կողմից Օրինակ՝ EXIF-ում JPEG նիշքերը մետատվյալների պահպանման համար օգտագործում է TIFF-ի կառուցվածքում տեղակայված APP1 մարկերը։
COM 0xFFFE փոփոխական երկարություն Մեկնաբանություն Պարունակում է մեկնաբանության տեքստ։
EOI 0xFFD9 չունի Պատկերի կոդավորված հատվածի վերջ

Առավելությունները և թերությունները[խմբագրել | խմբագրել կոդը]

JPEG ստանդարտով խտացման թերություններից է վերականգնված պատկերի վրա բարձր աստիճանի խտացմանը բնորոշ աղավաղումների հայտնվելը։ Պատկերը բաժանվում է 8x8 փիքսելներից կազմված բլոկների (ինչն ավելի նկատելի է պատկերի պայծառության սահուն փոփոխությունների տարածքներում), տարածական բարձր հաճախության հատվածներում (օրինակ՝ ցայտուն ուրվագծերի և պատկերի սահմանների վրա) հայտնվում են աղավաղումներ խանգարող լուսապսակների տեսքով։ Սակայն չնայած թերություններին, JPEG-ն ստացել է լայն տարածում իր խտացման բավականին բարձր աստիճանի, պատկերի լիարժեք գունային խտացման հնարավորության և հարաբերական ոչ բարձր հաշվողական բարդության համար։

Հետաքրքիր փաստեր[խմբագրել | խմբագրել կոդը]

2010 թվականին PLANETS նախագծի գիտնականները JPEG ձևափաչի ընթերցման հրահանգը դրել են հատուկ կապսուլայում, որը տեղադրել են շվեցարական Ալպերում, հատուկ բունկերի մեջ։ Դա արվել է 21-րդ դարի սկզբում հայտնի թվային ձևաչափերի մասին ինֆորմացիան սերունդների համար պահպանելու նպատակով։

Ծանոթագրություններ[խմբագրել | խմբագրել կոդը]

Արտաքին հղումներ[խմբագրել | խմբագրել կոդը]