Բարև ձեզ կրկին! Ես գտել եմ այս հոդվածը, որը գրված է 2019-ի մայիսին։ Սա շարունակում է հոդվածների շարք WAVE-ի և JPEG-ի մասին։ Այս հրապարակումը կներառի ծածկագրերի ալգորիթմի և ինքն իրավիճակի մասին ընդհանուր տեղեկատվություն։
Մի փոքր պատմություն
Վիքիպեդիայի մի ճշմարիտ հոդվածից՝
JPEG (Joint Photographic Experts Group) — իսկապես պոպուլյար ռաստրային գրաֆիկայի ձևաչափերից մեկն է, որն օգտագործվում է լուսանկարների և նմանակի նկարների պահպանման համար։
Այս ստանդարտը մշակվել է նկարչության միավորված փորձագետների խմբի կողմից դեռ 1991 թվականին՝ նկարների արդյունավետ սեղմման համար։
Նկարները ինչպիսի՞ ճանապարհով են անցնում خام տեսակից JPEG
Ոմանք կարծում են, որ JPEG պատկերները — Հաֆման մեթոդով սեղմված خام տվյալներ են, բայց դա այնպես չէ։ Քննադատական սեղմումը առաջացած տվյալները անցնում են երկար ճանապարհ։
Նախ գույնի մոդելը փոխվում է RGB-ից YCbCr-ի։ Դա անել նաև հատուկ ալգորիթմ կա — Y-ն չեն շոշափում, քանի որ դա պատասխանատու է պայծառության համար, և դրա փոփոխությունը նկատելի կլինի։
Առաջինը, ինչ անում են նկարին, դա է՝ «ներդրված» (subsampling)։ Սա հասկանալն ավելի հեշտ է. վերցվում է 2x2 պիքսելի քառակուսին, հետո վերցվում են Cb և Cr — ՅCbCr-ի այս 4 պիքսելների բաղադրիչների միջին արժեքները։ Եվ այնպես, մենք շահեցինք 6 բայթ՝ 4 Y-ի, 4 Cb-ի, 4 Cr-ի դիմաց մենք ստացանք 4 Y և այդ բոլորի համար նույն Cb և Cr (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 — 6 = 6)։ 2x2 չափերում կորուստային սեղմման 2:1 հարաբերակցությունը հնչում է չափազանց լավ։ Սա կիրառվում է ամբողջ նկարում։ Եվ այնպես ՝ ուրացանք չափի կեսը։ Այս տեխնիկան կարող ենք օգտագործել մեր գույնի ընկալման շնորհիվ։ Մարդը հեշտությամբ կհայտնաբերի պայծառության տարբերությունը, բայց ոչ գույնի, եթե այն միջինն է փոքր պիքսելների խմբում։ Նույնպես, ներդրվածությունը կարող է կատարվել տողով, 4 պիքսել հորիզոնական և ուղղահայաց։ Առաջին տարբերակը հաճախ է օգտագործվում։ Եթե նկարների որակը կարևոր է, ապա ներդրվածություն չի իրականացվում ընդհանրապես։
Բացահայտ ցուցադրում ներդրման (Հաբրը մերժեց գիֆը տեղադրել) —
Պար Prepareարելու հիմնական մասը
DCT
Այժմ ամենադժվարն ու անհրաժեշտ մասը։ Բոլոր նկարները բաժանվում են 8x8 բլոկների (օգտագործում են լրացում, եթե լուծումը չի համապատասխանում բլոկի կողմին)։
Ա ahora hrawta-որ բլոգի վրա կիրառվում են DCT (Դիսкретային կոսինուսային փոխարկում)։Այս փուլում նկարի բոլոր ավելորդները հանում են։ DCT օգտագործելիս պետք է հասկանալ, թե արդյոք տվյալ բլոկ (8x8) նկարում որևէ մոոնոտոն հատված ունի. երկնակամարի, պատերի; կամ ունի բարդ կառուցվածք (մազեր, նշանի և այլն)։ Ահա թե ինչպես է 64 նմանատիպ գույնի պիքսելները կարող են նկարագրելը միայն 1-ով, քանի որ բլոկի չափը արդեն հայտնի է։ Սա ձեզ համար սեղմման միջոց է. 64-ից 1։
ДКП-ն բլոկը վերածում է սպեկտրի, իսկ այն հատվածներում, որտեղ ցուցանիշները կտրուկ փոխվում են, գործակիցը դառնում է դրական, և որքան ավելի կտրուկ անցում, այնքան ավելի բարձր կլինի ելքը։ Այնտեղ, որտեղ գործակիցը բարձր է, նկարում պատկերված են ամբողջական անցումները գույնի և պայծառության մեջ, իսկ այնտեղ, որտեղ այն ցածր է՝ թույլ (մեղմ) փոփոխություններ YCbCr բաղադրիչների չափերի մեջ:
Քվանտավորում
Այստեղ արդեն կիրառվում են սեղմման կարգավորումները։ Յուրաքանչյուր գործակից յուրաքանչյուր 8×8 մատրիցում բաժանվում է որոշակի թվով։ Եթե պատկերն իր բոլոր փոփոխություններից հետո այլևս չպետք է նվազեցրեք, ապա բաժանորդը պետք է լինի մեկ։ Եթե ձեզ համար ավելի կարևոր է այս լուսանկարի զբաղեցրած հիշողությունը, ապա բաժանորդը կլինի ավելի քան 1, և Quotient-ը կօգտագործվի մոտավոր։ Այսպիսով, ստացվում է, որ բլոկում մոտավորի առկայությամբ հաճախ շատ զրո առաջանում է:
Քվանտավորումը իրականացվում է նաև ավելի շատ սեղմման հնարավորության ստեղծման համար։ Вот так выглядит это на примере квантования графика y = sin(x):

Սեղմում
Սկզբում անցնում ենք մատրիցով զիգ-զագով.

Ստանում ենք մեկ չափսերով զանգված թվերով։ Մենք տեսնում ենք, որ այնտեղ շատ զրո կան, դրանք կարելի է հեռացնել։ Դա անելու համար փոխարեն շատ զրո հաջորդականության մենք գրում ենք 1 զրո և հետո թիվ, որը ցույց է տալիս նրանց քանակը հաջորդականության մեջ։ Այսպիսով, կարելի է նվազեցնել ամբողջ զանգվածի չափը մինչև 1/3։ Այնուհետև պարզապես սեղմում ենք այս զանգվածը Հաֆմանի մեթոդով և գրում արդեն հենց ֆայլի մեջ:
Որտեղ է օգտագործվում
Հանդերձ, ինչպես նաև PNG, JPEG-ը օգտագործվում է ֆոտոռնկունյոներում, OS-ներում (ընկերությունների լոգոների, հավելվածների կրկնապատկերների, thumbnail-երի) և բոլոր հնարավոր ոլորտներում, որտեղ պետք է արդյունավետ պահել պատկերներ:
Ամփոփում
Այս պահին JPEG-ի վերաբերյալ գիտելիքները կարևոր են միայն կրթական նպատակներով, քանի որ նա արդեն բոլոր տեղերում տեղադրված է և օպտիմիզացված է մեծ խմբերի կողմից, սակայն գիտության պատի դեռ իսկապես համեղ է:
Աղբյուրներ
Ընտանիք: habr.com
