Հիմնական նյութ
Համակարգիչներ և համացանցը
Դասընթաց․ (Համակարգիչներ և համացանցը) > Բաժին 1
Դաս 5: Տվյալների սեղմումՊատկերի lossless (անկորուստ) սեղմում
Մեր շրջապատում կան բազմաթիվ պատկերներ՝ հավելվածների տարբերանշաններից մինչև անիմացիոն GIF-եր(graphics interchange format, գրաֆիկայի փոխանակման ձևաչափ) և լուսանկարներ: Նկարները կարող են շատ տեղ գրավել, ուստի համակարգիչները օգտագործում են մի շարք ալգորիթմներ՝ նկարները սեղմելու համար:
Ամենապարզ նկարների համար համակարգիչները կարող են օգտագործել սեղմման ալգորիթմ, որը կոչվում է run-length encoding (վազքի երկարության կոդավորում (RLE)):
Bitmap պատկերներ
Նախքան պատկերի սեղմումը ուսումնասիրելը, տեսնենք, թե ինչպես կարող ենք պատկերը ներկայացնել երկուական համակարգով առանց որևէ սեղմման:
Ահա մի պարզ 16x16 չափի սրտի տարբերանշան.
Եկեք խոշորացնենք և վերևում ծածկենք ցանցը, որպեսզի հեշտ լինի հստակ տեսնել, թե որ պիքսելներն են կարմիր, իսկ որ պիքսելները՝ սպիտակ:
Օգտագործելով այս մեթոդը՝ սրտի պատկերակը կներկայացվի այսպես.
1100000110000
11110001111000
111111011111000
1111111111110000
1111111111110000
1111111111110000
1111111111110000
1111111111110000
111111111111000
11111111111000
1111111110000
111111100000
11111000000
1110000000
100000000
Պատկերացրեք, որ պետք է կարդաք վերը նշված բիթերը մեկին, ով պատճենում է դրանք: Որոշ ժամանակ անց կարող եք ասել «հինգ զրո»՝ «զրո զրո զրո զրո զրո»-ի փոխարեն: Դե, համակարգիչը նույնպես կարող է դա անել ...
RLE սեղմման ալգորիթմ
RLE-ի դեպքում համակարգիչը փոխարինում է յուրաքանչյուր տող թվերով, որոնք ասում են, թե քանի անընդմեջ պիքսել է նույն գույնի՝ միշտ սկսելով սպիտակ պիքսելների քանակից:
Օրինակ, առաջին շարքը պարունակում է 3 սպիտակ պիքսել, 2 կարմիր պիքսել, 5 սպիտակ պիքսել, 2 կարմիր պիքսել, ապա 4 սպիտակ պիքսել.
1100000110000
Սա կներկայացվի հետևյալ կերպ.
3,2,5,2,4
Չորրորդ շարքը հետաքրքիր է, քանի որ այն սկսվում է կարմիր պիքսելից: RLE կոդավորումը սկսվում է սպիտակ պիքսելների քանակից, ուստի այն կներկայացվի հետևյալ կերպ.
0,15,1
RLE կոդավորման վերծանում
Երբ համակարգիչը օգտագործում է RLE, այն պետք է կարողանա կատարելապես վերստեղծել պատկերը սեղմված իրավիճակից, և մենք նույնպես, եթե հետևենք համակարգչի ռազմավարությանը:
Եկեք փորձենք այն: Ահա սև և սպիտակ տարբերանշանի պատկերում RLE-ի միջոցով.
4, 9, 3
4, 7, 2, 1, 2
4, 7, 2, 1, 2
4, 9, 3
4, 7, 5
4, 7, 5
5, 5, 6
0, 15, 1
1, 13, 2
Առաջին շարքը ունի 4 սպիտակ պիքսել, ապա 9 սև, ապա 3 սպիտակ պիքսել: Պատկերի տեսքը կլինի այսպիսին.
Հաջորդ շարքը ունի 4 սպիտակ պիքսել, ապա 7 սև, 2 սպիտակ, 1 սև և 2 սպիտակ: Պատկերը կլինի այսպիսին.
Երբ մենք շարունակում ենք, վերջնական պատկերակը բաժակն ու ափսեն է.
Սեղմման հարաբերակցությունը
Մենք պնդում էինք, որ պարզ պատկերներ պահելիս RLE-ն կարող է տարածք խնայել, բայց որքա՞ն տարածք:
Պարզելու նպատակով ես գրեցի ծրագիր՝ սև և սպիտակ բիթ-քարտեզները RLE-ով կոդավորելու համար: Այս աղյուսակը ամփոփում է երեք սրտի պատկերակների արդյունքները՝ ըստ աճման կարգի.
Պատկեր | Չափերը | Չսեղմված | RLE-ից հետո | Տարածություն խնայողություն |
---|---|---|---|---|
16x16 | 256 | 228 | 10.9% | |
32x32 | 1024 | 532 | 48.0% | |
128x128 | 16384 | 2898 | 82.3% |
Նաիր վերջին սյունակին՝ տարածության խնայողություններին: Նկատե՞լ ես օրինաչափություն: Մենք շատ ավելի շատ տարածք ենք խնայում, քանի որ չափը մեծանում է:
Ինչ վերաբերում է նույն չափի պատկերներին: Այս աղյուսակը ամփոփում է RLE-ով երեք մեծ պատկերակները սեղմելու արդյունքները.
Պատկեր | Չափերը | Չսեղմված | RLE-ից հետո | Տարածություն խնայողություն |
---|---|---|---|---|
128x128 | 16384 | 2898 | 82.3% | |
128x128 | 16384 | 8298 | 49.4% | |
128x128 | 16384 | 8730 | 46.7% |
Այժմ դու կարող ես տեսնել, թե ինչու եմ որպես օրինակ ընտրել սրտի տարբերանշանը. այն շատ լավ սեղմվում է՝ շնորհիվ իր բազմաթիվ սևերի կամ սպիտակների: RLE սեղմումը կիսով չափ կրճատում է մյուս պատկերակների չափը, բայց այն չի խնայում շատ տարածք:
Իրականում, երբեմն RLE-ն ընդհանրապես չի կարողանում որևէ տեղ խնայել...
RLE-ի սահմանները
Ի՞նչ կասես այս 16x16 պատկերակի մասին:
Եկեք խոշորացնենք, որպեսզի կարողանանք պատկերացնել յուրաքանչյուր պիքսելը.
Այդ պատկերակի յուրաքանչյուր պիքսել տարբեր գույն է, և չկա կրկնություն:
RLE-ն ընդհանրապես չի կարող նման պատկերը սեղմել: Սա օրինակ է, որը ես պատրաստել եմ հենց այս հոդվածի համար (ստեղծվել է այս ծրագրի) կողմից, ուստի այն կարող է այդքան էլ սովորական չթվալ:
Ինչպես պարզվում է, լուսանկարները նման են այդ տարբերանշանին՝ իրական աշխարհը լի է դետալներով, որոնք ընդհատում են կրկնությունը:
Քան ակադեմիաի թիմի էջը ներառում է շան այս գեղեցիկ լուսանկարը, որը նայում է համակարգչի էկրանին.
Նորմալ չափով, թվում է, թե կան նմանատիպ գույնի բլոկներ, ինչպես շան մորթին կամ համակարգչի էկրանի մոխրագույնը:
Եկեք մեծացնենք պիքսելները.
Այժմ դուք կարող եք տեսնել, որ նույնիսկ պարզ թվացող համակարգչի էկրանը նման, բայց ոչ նույն գույների հսկայական զանգված է: Փիքսելների RLE-ն շատ չի կարող նվազեցնել ֆայլի չափը:
RLE-ի կիրառությունը
RLE սեղմումը շատ տարածված տեխնիկա էր, երբ համակարգչային պատկերների մեծ մասը տարբերանշաններ էին՝ սահմանափակ գունային գունապնակներով:
Այս օրերին մեր պատկերներն ավելի բարդ են և չեն պարունակում նույն գույնի նույնքան կրկնություններ:
Որտե՞ղ է օգտագործվում RLE-ն այսօր: Ֆաքսային սարքերը դեռ օգտագործում են RLE՝ ֆաքսով ուղարկված փաստաթղթերը սեղմելու համար, քանի որ դրանք պետք է ներկայացնեն միայն սև և սպիտակ տառերը: JPEG պատկերներն իսկապես օգտագործում են RLE՝ սեղմման վերջին փուլում, բայց նրանք նախ օգտագործում են ավելի բարդ ալգորիթմ՝ լուսանկարչական մանրամասները սեղմելու համար: Մենք շուտով կուսումնասիրենք դա:
🙋🏽🙋🏻♀️🙋🏿♂️Ունե՞ք հարցեր այս թեմայի վերաբերյալ: Մենք կցանկանայինք պատասխանել, պարզապես հարցրեք ստորև ներկայացված հարցերի տարածքում:
Ուզո՞ւմ ես միանալ խոսակցությանը։
Առայժմ հրապարակումներ չկան։