JPEG နှိမ့်ချမှု အယ်ဂိုရီသမ်

ထပ်မံနှုတ်ခွန်းဆက်ပါတယ်! ဒီဆောင်းပါးကို မေလ 2019 မှာရေးထားတာတွေ့တယ်။ ဤသည်မှာ WAVE နှင့် JPEG အကြောင်း ဆောင်းပါးတွဲများ၏ အဆက်ဖြစ်ပါသည်။ ပဌမ. ဤထုတ်ဝေမှုတွင် ရုပ်ပုံကုဒ်သွင်းသည့် အယ်လဂိုရီသမ်နှင့် ဖော်မတ်တစ်ခုလုံးအကြောင်း အချက်အလက်များ ပါဝင်မည်ဖြစ်သည်။

သမိုင်းကြောင်းလေးတခုပါ။

ဝီကီပီးဒီးယား ဆောင်းပါး တစ်ဇွန်း

JPEG (Joint Photographic Experts Group) သည် ဓာတ်ပုံများနှင့် အလားတူပုံများကို သိမ်းဆည်းရန်အတွက် အသုံးပြုသည့် နာမည်ကြီး raster ဂရပ်ဖစ်ဖော်မတ်များထဲမှ တစ်ခုဖြစ်သည်။

ဤစံနှုန်းကို Joint Photographic Experts Group မှ 1991 ခုနှစ်တွင် ထိရောက်စွာ ပုံချုံ့နိုင်စေရန် တီထွင်ခဲ့ပါသည်။

ပုံများသည် အကြမ်းမှ JPEG သို့ မည်သို့သွားသနည်း။

JPEG ပုံများသည် Huffman နည်းလမ်းကို အသုံးပြု၍ အကြမ်းထည်ဒေတာကို ချုံ့ထားသည်ဟု အချို့က ထင်မြင်သော်လည်း ယင်းမှာ မမှန်ပါ။ ဖိသိပ်မှုကို ထိန်းချုပ်ခြင်းမပြုမီ၊ ဒေတာသည် ခရီးဝေးသွားပါသည်။

ပထမ၊ အရောင်မော်ဒယ်ကို RGB မှ YCbCr သို့ပြောင်းသည်။ ဒီအတွက် အထူး algorithm တစ်ခုတောင်ရှိသေးတယ် - ဒီမှာ. တောက်ပမှုအတွက် တာဝန်ရှိသောကြောင့် Y ကို မထိဘဲ၊ ၎င်း၏ပြောင်းလဲမှုသည် သိသာထင်ရှားလိမ့်မည်။

ရုပ်ပုံနဲ့ ပထမဆုံးလုပ်ရမှာက "ပါးလွှာခြင်း" (နမူနာယူခြင်း)။ နားလည်ရလွယ်ကူသည်- 2x2 pixels ခင်းကျင်းခြင်းကိုယူပြီးနောက် Cb နှင့် Cr ကိုယူသည် - ဤ 4 pixels ၏ YCbCr အစိတ်အပိုင်းတစ်ခုစီ၏ ပျမ်းမျှတန်ဖိုးများ။ ဒီတော့၊ ကျွန်ုပ်တို့သည် 6 bytes ကိုအနိုင်ရရှိခဲ့သည်။4 Y၊ 4 Cb၊ 4 Cr အစား ကျွန်ုပ်တို့သည် 4 Y နှင့် ၎င်းတို့တစ်ခုစီအတွက် တူညီသော Cb နှင့် Cr (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 - 6 = 6)။ 2x2 စကေးတွင်ပင် 2:1 ဖိသိပ်မှုအချိုးဖြင့် ဆုံးရှုံးမှု ဖိသိပ်မှုမှာ ခိုင်မာသည်။ ဒါက ရုပ်ပုံတစ်ခုလုံးနဲ့ သက်ဆိုင်ပါတယ်။ ဒါကြောင့် - သူတို့ကအရွယ်အစားတစ်ဝက်ကျဆင်းသွားတယ်။ ပြီးတော့ ကျွန်တော်တို့ရဲ့ အရောင်ခံယူချက်ကြောင့် ဒီနည်းပညာကို အသုံးပြုနိုင်ပါတယ်။ ပျမ်းမျှအားဖြင့် pixels အတုံးငယ်များထက် ပျမ်းမျှအားဖြင့် အလင်းအမှောင် ကွာခြားမှုကို လူတစ်ဦး အလွယ်တကူ သတိပြုမိနိုင်သော်လည်း အရောင်မပါဝင်ပါ။ ပါးလွှာခြင်းကို မျဉ်းတစ်ကြောင်း၊ 4 pixels အလျားလိုက်နှင့် ဒေါင်လိုက်ဖြင့် လုပ်ဆောင်နိုင်သည်။ ပထမရွေးချယ်မှုကို မကြာခဏအသုံးပြုသည်။ ပုံအရည်အသွေးသည် အရေးကြီးပါက၊ ဖြတ်တောက်ခြင်းကို လုံးဝလုပ်ဆောင်မည်မဟုတ်ပါ။
ပါးလွှာခြင်း၏ အမြင်ဆိုင်ရာ သရုပ်ဖော်ပုံ (Habr သည် ကျွန်ုပ်အား gif ထည့်ရန် ခွင့်မပြုပါ) - https://i.ibb.co/Rg5Th9H/150953010617579181.gif

ပြင်ဆင်မှု၏အဓိကအစိတ်အပိုင်း

PrEP

အခုအချိန်မှာ အခက်ခဲဆုံးနဲ့ အလိုအပ်ဆုံးအပိုင်းကို ရောက်လာပါပြီ။ ရုပ်ပုံတစ်ခုလုံးကို 8x8 ဘလောက်များအဖြစ် ပိုင်းခြားထားသည် (ပုံရိပ်ပြတ်သားမှုမှာ ဘလောက်ခြမ်း၏ များပြားခြင်းမဟုတ်ပါက ဖြည့်စွက်ခြင်းကို အသုံးပြုသည်)။

ယခု ဘလောက်တစ်ခုစီကို အသုံးပြုပါ။ DCT (Discrete Cosine Transform). ဒီအပိုင်းမှာတော့ မလိုအပ်တဲ့ အရာအားလုံးကို ပုံထဲက ဖယ်ထုတ်ထားပါတယ်။ DCT ကို အသုံးပြု၍ ပေးထားသော ဘလောက် (8 × 8) သည် ပုံ၏ ငွီးငှေ့နေသည့် အစိတ်အပိုင်းကို ဖော်ပြခြင်း ရှိမရှိ နားလည်ရန် လိုအပ်သည်- ကောင်းကင်၊ နံရံ၊ သို့မဟုတ် ၎င်းတွင် ရှုပ်ထွေးသောဖွဲ့စည်းပုံ (ဆံပင်၊ သင်္ကေတများ) ပါ၀င်သည်။ အလားတူအရောင် 64 pixels ကို 1 ဖြင့်ဖော်ပြနိုင်သည်မှာ ယုတ္တိရှိသောကြောင့်ဖြစ်သည်။ block size ကို သိထားပြီးသားပါ။ Compression အတွက် အများကြီး: 64 မှ 1 ။

DCT သည် ဘလောက်ကို spectrum အဖြစ်ပြောင်းလဲစေပြီး ဖတ်ရှုမှုများ သိသိသာသာပြောင်းလဲလာသောအခါ ကိန်းဂဏန်းသည် အပြုသဘောဖြစ်လာကာ အသွင်ကူးပြောင်းမှု ပိုမိုပြတ်သားလေ၊ အထွက်နှုန်း မြင့်မားလေဖြစ်သည်။ Coefficient ပိုများသောနေရာတွင်၊ ပုံသည် ဘလောက်အတွင်းရှိ YCbCr အစိတ်အပိုင်းများ၏ တန်ဖိုးများတွင် နိမ့်ကျသော အပြောင်းအလဲများကို အရောင်နှင့် တောက်ပမှုတွင် ရှင်းရှင်းလင်းလင်းပြသထားသည်။

အရေအတွက်

Compression ဆက်တင်များကို ဤနေရာတွင် အသုံးပြုပြီးဖြစ်သည်။ 8x8 matrices တစ်ခုစီရှိ coefficient တစ်ခုစီကို အချို့သောကိန်းဂဏန်းများဖြင့် ပိုင်းခြားထားသည်။ ပြုပြင်မွမ်းမံပြီးနောက် ပုံအရည်အသွေးကို မလျှော့ချပါက၊ ပိုင်းခြားမှုသည် တစ်ခုဖြစ်သင့်သည်။ ဤဓာတ်ပုံမှ သိမ်းပိုက်ထားသော မမ်မိုရီက သင့်အတွက် ပိုအရေးကြီးပါက၊ ပိုင်းခြားမှုသည် 1 ထက် ကြီးမည်ဖြစ်ပြီး၊ ပမာဏသည် အဝိုင်းဖြစ်နေပါမည်။ လှည့်ပတ်ပြီးရင် သင်ဟာ သုညများစွာနဲ့ အဆုံးသတ်သွားတတ်ပါတယ်။

ပိုမိုကြီးမားသော compression ဖြစ်နိုင်ခြေကိုဖန်တီးရန် Quantization ကိုလုပ်ဆောင်သည်။ ဤသည်မှာ ဂရပ် y = sin(x) ကို တွက်ချက်ခြင်း၏ ဥပမာကို အသုံးပြု၍ ပုံသဏ္ဌာန်ဖြစ်သည်။

JPEG နှိမ့်ချမှု အယ်ဂိုရီသမ်

ချုံ့

ဦးစွာကျွန်ုပ်တို့သည် zig-zag ပုံစံဖြင့် matrix ကိုဖြတ်သန်းပါ။

JPEG နှိမ့်ချမှု အယ်ဂိုရီသမ်

ကျွန်ုပ်တို့သည် ဂဏန်းများပါသော တစ်ဖက်မြင် ခင်းကျင်းတစ်ခုကို ရရှိသည်။ အဲဒီအထဲမှာ သုညတွေ အများကြီးရှိနေတာကို တွေ့တယ်၊ အဲဒါတွေကို ဖယ်ရှားနိုင်တယ်။ ထိုသို့လုပ်ဆောင်ရန်၊ သုညများစွာ၏ sequence အစား 1 သုညကို ဖြည့်သွင်းပြီး ၎င်းနောက်တွင် ၎င်းတို့၏ နံပါတ်ကို ကိန်းစဉ်အလိုက် ညွှန်ပြသော နံပါတ်တစ်ခုဖြစ်သည်။ ဤနည်းဖြင့် သင်သည် ခင်းကျင်းတစ်ခုလုံး၏ အရွယ်အစား 1/3 သို့ ပြန်လည်သတ်မှတ်နိုင်သည်။ ထို့နောက် Huffman နည်းလမ်းကို အသုံးပြု၍ ဤ array ကို ရိုးရိုးရှင်းရှင်း ချုံ့ပြီး ၎င်းကို ဖိုင်တွင် ကိုယ်တိုင်ရေးပါ။

ဘယ်မှာအသုံးပြုခဲ့

နေရာတိုင်း။ PNG ကဲ့သို့ပင် JPEG ကို ကင်မရာများ၊ OS များ (ကုမ္ပဏီအမှတ်တံဆိပ်များ၊ အပလီကေးရှင်းသင်္ကေတများ၊ ပုံသေးများ) နှင့် ရုပ်ပုံများကို ထိရောက်စွာသိမ်းဆည်းရန်လိုအပ်သည့် ဖြစ်နိုင်သည့်နေရာများအားလုံးတွင် အသုံးပြုသည်။

ကောက်ချက်

ယခုအချိန်တွင်၊ JPEG နှင့်ပတ်သက်သည့် အသိပညာသည် နေရာတိုင်းတွင် တည်ဆောက်ထားပြီး လူအုပ်စုကြီးများက အကောင်းဆုံးပြင်ဆင်ထားသောကြောင့် ပညာရေးဆိုင်ရာရည်ရွယ်ချက်များအတွက်သာ အဖိုးတန်နေပြီဖြစ်သော်လည်း သိပ္ပံပညာ၏ကျောက်တုံးသည် အရသာရှိနေဆဲဖြစ်သည်။

သတင်းရင်းမြစ်

Wikipedia ရှိ YCbCr အကြောင်း ဆောင်းပါး
JPEG ရှိ Wikipedia ဆောင်းပါး
Pikabu ပို့စ်မှ PrEP အကြောင်းအနည်းငယ်
PrEP တွင် Wikipedia ဆောင်းပါး

source: www.habr.com

မှတ်ချက် Add