Tuesday, January 28, 2014

JPEG ဆုိတာ ဘာလဲ (၄)

ႀကားထဲမွာ အဆက္ျပတ္သြားလုိ႔ ေတာင္းပန္ပါတယ္။ စာေမးပြဲနဲ႔ ပေရာဂ်က္ကိစၥေတြ ရႈပ္ေနလုိ႔ပါခင္ဗ်ာ။

(ဃ) quantisation ျပဳလုပ္ျခင္း


ကြ်န္ေတာ္တုိ႔အေနနဲ႔ အဆင္႔(ဂ)ကုိ ျပဳလုပ္ျပီးခ်ိန္မွာ ၈x၈ matirx တစ္ခုနဲ႔ ပါ၀င္ႀကေသာ coefficients ၆၄ခုကုိ ရရွိျပီျဖစ္ပါတယ္။ အဲဒီေနာက္မွာေတာ႔ quantisation ျပဳလုပ္ဖုိ႔ အဆင္သင္႔ျဖစ္ပါျပီ။
Quantisation  ျပဳလုပ္ျခင္းျဖင္႔ ဘယ္dataဟာ အေရးႀကီးျပီး ဘယ္dataကေတာ႔ အေရးမႀကီးဘူးဆုိတာ သိႏုိင္ပါတယ္။ သိျပီးေနာက္မွာ userအေနနဲ႔ ကုိယ္လုိခ်င္တဲ႔ qualityအလုိက္ file sizeကုိ ေလွ်ာ႔ခ်သြားႏုိင္ျပီျဖစ္ပါတယ္။ JPEG compression မွာ သည္အဆင္႔ဟာ ဖုိင္ပမာဏကုိ အေလွ်ာ႔ခ်ေပးႏုိင္ဆုံး အဆင္႔လဲ ျဖစ္ပါတယ္။
သည္လုိေလွ်ာ႔ခ်ႏုိင္ဖုိ႔အတြက္ quantisation matrix ေတြဟာ သူ႔qualityအလုိက္ သီးသန္႔တည္ရွိႀကပါတယ္။ သူသည္လည္းပဲ ၈x၈ matrix ပဲ ျဖစ္ပါတယ္။ quality အတြက္ျဖစ္တဲ႔အတြက္ matrixနာမည္ကုိ Q လုိ႔ ေပးထားပါတယ္။ Q1 သည္ ကြာလတီအနိမ္႔ဆုံး ေလွ်ာ႔ခ်ေပးမွာျဖစ္ျပီး Q100ကေတာ႔ မူရင္းတန္ဖုိးအတုိင္းပဲ ျဖစ္သြားမွာပါ။ ေအာက္မွာေတာ႔ နမူနာအေနနဲ႔ အခ်ိဳ႕ေသာ quality matrix ေတြကုိ ေဖာ္ျပေပးထားပါတယ္။

ဖုိင္ပမာဏကုိ ေလွ်ာ႔ခ်တဲ႔ေနရာမွာ ေအာက္ပါ အခ်က္ႏွစ္ခ်က္ကုိ အသုံးျပဳျပီး ေလွ်ာ႔ခ်သြားတာပါ။
(က) ဖုိင္ပမာဏေလွ်ာ႔ခ်ေသာ္လည္း မူရင္းပုံမွာ ပါ၀င္ႏႈန္းျမင္႔မားတဲ႔ coefficientsေတြကုိ ဆက္လက္ထိန္းသိမ္းသြားျခင္း၊
(ခ) coefficient ေတြရဲ႕ မူရင္းတန္ဖုိးဟာ သုညနားကုိ ကပ္ေနရင္ေတာ႔ တန္ဖုိးကုိ လုံး၀ သုညအျဖစ္ သတ္မွတ္လုိက္ျခင္းတုိ႔ပဲ ျဖစ္ပါတယ္။
ဖုိင္ပမာဏေလွ်ာ႔ခ်တဲ႔ ပုံေသနည္းကေတာ႔ ေအာက္မွာ ေဖာ္ျပေပးထားပါတယ္။


သေဘာတရားကေတာ႔ တတိယအဆင္႔မွာ ကြ်န္ေတာ္တုိ႔ ရရွိထားတဲ႔ DCT matrix ကုိတည္ျပီး ကုိယ္လုိခ်င္တဲ႔ ကြာလတီအတုိင္း ပုံေသျဖစ္တဲ႔ quality matrix နဲ႔ matrix စားနည္းအတုိင္း စားလုိက္တာျဖစ္ပါတယ္။
ဥပမာအေနနဲ႔ ကြ်န္ေတာ္တုိ႔ တတိယအဆင္႔မွာ ရရွိထားတဲ႔ ၈x၈ matrix ကုိ Q50 matrix နဲ႔ quantisation ျပဳလုပ္တဲ႔အခါ ေအာက္ပါ matrix ကုိ ရရွိမွာပါ။
အထက္ေဖာ္ျပပါ (က)နဲ႔ (ခ) အခ်က္ႏွစ္ခ်က္အတုိင္းပဲ ကုိယ္ပုိင္တန္ဖုိးရွိတဲ႔ ဂဏန္းေတြကုိ ဒႆမကိန္းေတြျဖဳတ္ခ်ျပီး တန္ဖုိးမ်ားအတုိင္း ထိန္းသိမ္းယူေဆာင္ပါတယ္။ သုညနားနီးတဲ႔ ကိန္းဂဏန္းေတြကိုေတာ႔ လုံးလုံး သုညအျဖစ္ ေလွ်ာ႔ခ်လုိက္တာကုိ ေတြ႔ရမွာပါ။
ဒီေနရာမွာေတာ႔ User အသုံးျပဳခ်င္တဲ႔ quality matrix အလုိက္ Q10 ဆုိရင္ေတာ႔ သုညကိန္းေတြ အမ်ားႀကီးေတြ႔ရမွာျဖစ္ျပီး Q90ဆုိရင္ေတာ႔ သုညကိန္းေတြကုိ အနည္းငယ္ပဲ ေတြ႔ရလိမ္႔မယ္ျဖစ္ပါတယ္။
ဒါဆုိရင္ေတာ႔ အဆင္႔(၄)ကုိ ေအာင္ျမင္စြာ ျပဳလုပ္ျပီးစီးသြားလုိ႔ အဆင္႔၅ codeမ်ားအျဖစ္ ေျပာင္းလဲသတ္မွတ္ႏုိင္ျပီျဖစ္ပါတယ္။

(င) code မ်ား အျဖစ္ ေျပာင္းလဲသတ္မွတ္ကာ ကာလာမ်ား ျပန္လည္ျဖည္႔သြင္းျခင္း


အဆင္႔(၄)မွ ရရွိလာတဲ႔ coefficientsေတြကုိ ကြ်န္ေတာ္တုိ႔အေနနဲ႔ ကြန္ျပဴတာမွ နားလည္ေသာ binary codeမ်ား အျဖစ္ coding လုပ္ရပါမယ္။
JPEG compression လုပ္တဲ႔ေနရာမွာ မ်ားေသာအားျဖင္႔ေတာ႔ Huffman encode နည္းကုိပဲ အမ်ားဆုံး သုံးႀကပါတယ္။
အထက္အဆင္႔ကေန ရလာတဲ႔ coefficients ကိန္းဂဏန္းေတြအတြက္ Huffman encode မွာ binary codeေတြ ရရွိေအာင္ ျပဳလုပ္ရတာပဲျဖစ္ပါတယ္။ ဆုိႀကပါစုိ႔၊ ရုိးရုိးကိန္းဂဏန္း 4 အတြက္ binaryမွာ 11 ျဖစ္ပါတယ္။ အဲဒီသေဘာပါပဲ။
Huffman coding ကုိ အက်ယ္ရွင္းေနရင္ တအားရွည္သြားမွာမုိ႔ ေအာက္ေဖာ္ျပပါပုံေလးကုိပဲ နမူနာအေနနဲ႔ ေဖာ္ျပေပးလုိက္ပါတယ္။
သည္လုိမ်ိဳး encodingလုပ္တဲ႔ေနရာမွာ JPEG compression ဟာ ziz-zag နည္းကုိ အသုံးျပဳပါတယ္။ ေအာက္ပါအတုိင္း encodingလုပ္သြားတာ ျဖစ္ပါတယ္။
ဘာေႀကာင္႔ ziz-zagနည္းကုိ သုံးရသလဲ ကြ်န္ေတာ္႔အထင္ေျပာရရင္ေတာ႔ အေပၚအဆင္႔မွ ကြ်န္ေတာ္တုိ႔ ရရွိခဲ႔တဲ႔ C matrixမွာ ေတြ႔ရွိရတဲ႔ ဇီးရုိးေတြေႀကာင္႔ပဲလုိ႔ ထင္ျမင္မိပါတယ္။
တကယ္ေတာ႔ သည္အဆင္႔ျပီးသြားတဲ႔ JPEG compression ဟာ ေအာင္ျမင္ျပီးဆုံးသြားခဲ႔ပါျပီ။ သုိ႔ေသာ္ ကြ်န္ေတာ္တုိ႔အေနနဲ႔ ကုဒ္ေတြကုိပဲ ရရွိေနေသးျပီး ပုံအျဖစ္ ျပန္မျမင္ရႏုိင္ေသးပါဘူး။
ဒါေႀကာင္႔ display screen (ကြန္ျပဴတာေမာ္နီတာscreenျဖစ္ေစ၊ မုိဘုိင္းဖုန္းscreenျဖစ္ေစ) မွာ Imageအျဖစ္ ျပန္လည္ ေဖာ္ျပေပးဖုိ႔ရန္အတြက္ decompression လုပ္ေပးဖုိ႔ ျပန္လုိလာပါတယ္။
ရရွိတဲ႔ကုဒ္ေတြကုိ ကာလာအျဖစ္ ျပန္လည္ေျပာင္းလဲေပးဖုိ႔ပါ။
ကြ်န္ေတာ္တုိ႔ compressionလုပ္စဥ္မွာ ေဆာင္ရြက္ခဲ႔ရတဲ႔ အဆင္႔ငါးဆင္႔ကုိ ေျပာင္းျပန္ ျပန္လုပ္တဲ႔သေဘာပါပဲ။ အဲဒါေႀကာင္႔ အက်ယ္ရွင္းစရာမလုိေတာ႔ဘူးထင္ပါတယ္။ အသုံးျပဳတဲ႔ ပုံေသနည္းေတြကုိေတာ႔ ကြ်န္ေတာ္ ေဖာ္ျပေပးသြားပါမယ္။
အေစာက ရရွိခဲ႔တဲ႔ binary codeေတြကို C matrixအျဖစ္ ျပန္လည္ အသက္သြင္းပါမယ္။
ျပီးရင္ R matrix ကုိ တည္ေဆာက္ရပါမယ္။ ပုံေသနည္းကေတာ႔ ေအာက္ပါအတုိင္းပါ။
ဆုိႀကပါစုိ႔။ codeေျဖအျပီး ျပန္လည္ရရွိတဲ႔ C matrixကုိ ကြ်န္ေတာ္တုိ႔အသုံးျပဳခဲ႔ quality matrixနဲ႔ ျပန္ေျမွာက္ေပးတာပါ။ Q10သုံးခဲ႔ရင္Q10 ၊ Q50သုံးခဲ႔ရင္ Q50ေပါ႔ေလ။
အဲဒါဆုိရင္ ဥပမာအေနနဲ႔ ကြ်န္ေတာ္တုိ႔ ေအာက္ပါmatrixကုိ ရရွိပါျပီ။
ဒါရျပီးရင္ေတာ႔ Inverse DCTနည္းနဲ႔ ေနာက္matrixတစ္ခု ေျပာင္းယူရပါဦးမယ္။ ပုံေသနည္းကေတာ႔ ေအာက္ပါအတုိင္းပါ။
တီဆုိတာ ဘာmatrixလဲ၊ တီပရုိင္းဆုိတာ ဘာ matrixလဲ ဆုိတာ ေမ႔သြားရင္ေတာ႔ တတိယအဆင္႔ကုိ ျပန္ႀကည္႔ေပးပါေနာ္။
ကဲ ေနာက္ဆုံး N matrix ရျပီဆုိရင္ျဖင္႔ ကြ်န္ေတာ္တုိ႔ဟာ color codeေတြ ျပန္လည္ရရွိျပီျဖစ္ပါတယ္။ display screen မွာ image အျဖစ္ ျပန္လည္ေဖာ္ျပႏုိင္ဖုိ႔ ကာလာအေရာင္မ်ားအျဖစ္ ျပန္လည္ေရးသြင္းရုံပဲ ျဖစ္ပါတယ္။
JPEG compression လုပ္ျခင္းျဖင္႔ ဖုိင္ဆုိဒ္ေလ်ာ႔က်သြားေႀကာင္းကုိေတာ႔ ေအာက္ပါ matrix ႏွစ္ခုကုိ ႏႈိင္းယွဥ္ႀကည္႔ျခင္းျဖင္႔ သိသာသြားျပီျဖစ္ပါတယ္ခင္ဗ်ာ။
အနည္းဆုံးအေနနဲ႔ compression လုပ္ထားတဲ႔ပုံဟာ မူရင္းပုံထက္ ခုနစ္ဆယ္ရာခုိင္ႏႈန္း ဖုိင္ဆုိဒ္ေလ်ာ႔နည္းသြားျပီျဖစ္ပါတယ္။
သည္လုိ အဆင္႔ေပါင္းေျမာက္ျမားစြာကုိ ျဖတ္ေက်ာ္ျပီးမွသာလွ်င္ ကြ်န္ေတာ္တုိ႔ဟာ quality သိသိသာသာမေလ်ာ႔က်ေသာ္လည္း ဖုိင္ဆုိဒ္သိသိသာသာေလွ်ာ႔ခ်ေပးႏုိင္ေသာ JPEG type ျဖစ္တဲ႔ ဓာတ္ပုံမ်ားကုိ ရရွိျခင္းျဖစ္ေႀကာင္းပါခင္ဗ်ား။

ျပီးဆုံးသည္အထိ သည္းခံျပီး ဖတ္ရႈေပးခဲ႔ႀကသူအေပါင္းအား ေက်းဇူးအထူးတင္ရွိပါသည္။

ကုိးကား
(၁) Image compression and discrete cosine transform – Ken Cabeen and Peter gent
(၄) An Introduction to Image Compression - Speaker: Wei-Yi Wei
      Advisor: Jian-Jung Ding
      Digital Image and Signal Processing Lab
                                                               GICE, National Taiwan University


Wednesday, January 8, 2014

လည္ျပန္ခလုတ္တုိက္အလြမ္းမ်ား


အသုိက္က ထြက္လာတဲ႔
အပ်ံသင္ ငွက္တစ္ေကာင္အတြက္ေတာ႔
ေလေျပတုိက္ခ်ိန္ဆုိတာ ခပ္ရွားရွားပဲ
ေလျပင္းမိလုိက္
မုိးေရထိလုိက္
ႏွင္းခဲရုိက္လုိက္
ေနပူက်ဲတဲထဲမွာလဲ နားခုိစရာအသုိက္ကုိ ရွာမေတြ႔ျပန္ဘူး
ရင္ေမာစရာေတြႀကဳံတုိင္း
အတိတ္ကုိ လည္ျပန္ႀကည္႔မိတဲ႔အခါ
အလြမ္းေတြနဲ႔ ခဏခဏ ခလုတ္တုိက္မိရဲ႕
တစ္ခ်ိန္က မာတယ္ ထင္တဲ႔ ကုိယ္႔အသည္း
ခုမွ လြမ္းတတ္ေနတယ္
ျပကၡဒိန္စာမ်က္ႏွာတစ္ရြက္ လွန္လုိက္တုိင္း
ဒုိင္ယာရီစာမ်က္ႏွာတစ္ရြက္ကုိ ျပန္လြမ္းတယ္
ငယ္ငယ္က ေဘာလုံးနဲ႔ တအုံးအုံးကန္ခဲ႔ဖူးတဲ႔
အုတ္နံရံႀကီးကုိလဲ ျပန္လြမ္းတယ္
ေဆးလိပ္ခုိးေသာက္ခဲ႔ဖူးတဲ႔ ေခ်ာင္ကေလးကုိလဲ လြမ္းတယ္
ထန္းရည္အတူေသာက္ဖူးတဲ႔ မဲႀကီးကုိလဲ လြမ္းတယ္
ရြာရုိးကုိးေပါက္ ေလွ်ာက္နင္းဖူးတဲ႔
ေမာင္ဗမာဘီးႀကီးကုိလဲ လြမ္းတယ္
ျပီးေတာ႔
ေက်ာင္းျပန္ခ်ိန္တုိင္း ငါ ဆြဲကူေပးဖူးတဲ႔
နင္႔ ျခင္းေတာင္းအျပာေလးကုိလဲ လြမ္းတယ္



Sunday, January 5, 2014

JPEG ဆုိတာ ဘာလဲ (၃)



(ဂ) DCT (descrete cosine transform) နည္းျဖင္႔ ေျပာင္းလဲျခင္း

ပုံကုိ downsample လုပ္ျပီးတဲ႔အခါမွာ ရလာတဲ႔ တန္ဖုိးေတြကုိ DCT နည္းနဲ႔ matrixရေအာင္ ေျပာင္းယူရပါတယ္။
DCTဆုိတာကုိ ရွင္းျပရင္ေတာ႔ သခ်ၤာပုိင္းေတြကုိ ေရာက္သြားမွာျဖစ္ျပီး ေတာ္ေတာ္ေလး ရွည္ရွည္ေ၀းေ၀းျဖစ္သြားမွာမုိ႔ အႀကမ္းဖ်င္းပဲ ေျပာပါမယ္။ (သခ်ၤာပုိင္းေတြက ခက္ခဲျပီး ကြ်န္ေတာ္ သိပ္နားမလည္တာလဲ ပါပါတယ္။) ေနာက္ျပီး သခ်ၤာပုိင္းေတြကုိ အတိအက်သိစရာမလုိတဲ႔အတြက္လဲ အဲဒီအပုိင္းကုိ ေခါင္းထဲထည္႔စရာမလုိပါဘူး။ matrix သခ်ၤာကုိ နားလည္ရင္ ရပါျပီ။ (matrixသခ်ၤာနားလည္ဖုိ႔ေတာ႔ လုိကုိလုိပါမယ္။)
ကြ်န္ေတာ္နားလည္သလုိ အလြယ္နည္းအတုိင္းပဲ ကြ်န္ေတာ္ဆက္ရွင္းသြားပါမယ္ေနာ္။
အထက္အဆင္႔ေတြမွာ pixelတစ္ခုခ်င္းစီအတြက္ YCbCr componentsေတြနဲ႔ downsample လုပ္ျပီးခဲ႔ပါျပီ။ အဲဒီေနာက္ ရရွိလာတဲ႔ pixelတစ္ကြက္ခ်င္းစီကုိ 8x8 blockမ်ား အျဖစ္ ဖန္တီးလုိက္ပါတယ္။ 8x8 ဘေလာ႔ကြက္ဆုိတာကေတာ႔ ေအာက္ကပုံအတုိင္းပါ။


အလ်ားလုိက္ အကြက္ရွစ္ကြက္၊ ေဒါင္လုိက္ အကြက္ရွစ္ကြက္ ပုံစံ၊ စုစုေပါင္း ေျခာက္ဆယ္႔ေလးကြက္ ရွိပါမယ္။
ဒီလုိလုပ္ရတာကေတာ႔ matrix လုိခ်င္လုိ႔ပါ။ 8x8 block ျဖစ္တဲ႔အတြက္ matrix ကလည္း 8x8 matrix ပဲ ျဖစ္ပါမယ္။
ရလာတဲ႔အကြက္ေတြမွာ တစ္ကြက္ခ်င္းစီတုိင္းအတြက္ တန္ဖုိးေတြရွိပါတယ္။ အထက္အဆင္႔ေတြက ရရွိထားတဲ႔ အလင္းအေမွာင္အေရာင္ဆုိတဲ႔ တန္ဖုိးေတြေပါ႔။ နားလည္လြယ္သြားေအာင္ ဥပမာတစ္ခုထားျပီး ကြ်န္ေတာ္ျပသြားခ်င္ပါတယ္။ မူရင္းပုံေသနည္းေတြေတာ႔ ရွိပါတယ္။ ဒါေပမယ္႔ အဲဒီပုံေသနည္းဖတ္ရုံနဲ႔ ကြ်န္ေတာ္နားမလည္ခဲ႔ဘဲ ဥပမာတစ္ခုႀကည္႔ရင္းနဲ႔သာ နားလည္ခဲ႔တာမုိ႔ပါ။


အထက္ေဖာ္ျပပါပုံဟာ DCT matrix ရယူတဲ႔ ပုံေသနည္းတစ္ခုပါပဲ။ ကြ်န္ေတာ္ကေတာ႔ အဲဒီပုံေသနည္းနဲ႔ နားမလည္ခဲ႔တာမုိ႔ တျခားနားလည္ခဲ႔တဲ႔ပုံေသနည္းနဲ႔ ရွင္းျပခ်င္ပါတယ္။
အရင္ဆုံး ကြ်န္ေတာ္ T matrix ကုိ လုိအပ္ပါတယ္။ T matrix ရယူႏုိင္မယ္႔ ပုံေသနည္းကေတာ႔


T matrix က ဘာလဲဆုိရင္ T matrixလုိ႔ပဲ သိထားတာ ပုိေကာင္းပါတယ္။ သူက DCTလုပ္တဲ႔အခါ လုိအပ္တဲ႔ D matrix တြက္ခ်က္တဲ႔ေနရာမွာ လုိအပ္တဲ႔ matrixတစ္ခုပါ။
ပုံေသနည္းထဲက Nဆုိတဲ႔ ေနရာမွာ ကြ်န္ေတာ္တုိ႔ အေပၚက ခြဲခဲ႔တဲ႔ blockက ဂဏန္းကုိ ယူပါတယ္။ 8x8 ျဖစ္တဲ႔အတြက္ 8ကုိ ယူပါတယ္။ i ဟာ ရလာမယ္႔ matrixရဲ႕ ေဒါင္လုိက္ နံပါတ္ဂဏန္းျဖစ္ျပီး j ကေတာ႔ အလ်ားလုိက္ နံပါတ္ျဖစ္ပါတယ္။


ေဖာ္ျပပါပုံမွာ ေရွ႕ဂဏန္းသည္ i ကုိ ကုိယ္စားျပဳျပီး ေနာက္ဂဏန္းသည္ j ကုိ ကုိယ္စားျပဳပါတယ္။
အထက္က ေဖာ္ျပထားတဲ႔ T ပုံေသနည္းအတုိင္း ထည္႔တြက္လုိက္တဲ႔အခါ ေအာက္ပါ matrix ကုိ ရရွိပါတယ္။


ရရွိလာတဲ႔ T matrixကုိ သိမ္းထားျပီး ကြ်န္ေတာ္တုိ႔ downsampleလုပ္ထားတဲ႔ pixelတစ္ခုခ်င္းစီအလုိက္ ခြဲထားေသာ 8x8 blockအတုိင္း ရရွိထားတဲ႔ တန္ဖုိးေတြကုိ ေအာက္ပါ 8x8 matrix ထဲမွာ ရွိေနပါတယ္။ ဒီေနရာမွာ မူရင္းရုိက္ယူထားတဲ႔ ပုံနဲ႔ ကုိယ္ရယူမယ္႔ pixelေနရာကုိ လုိက္ျပီး တန္ဖုိးေတြက အေျပာင္းအလဲ ရွိေနမွာျဖစ္ပါတယ္။ ေအာက္ေဖာ္ျပပါ matrixဟာ နမူနာတစ္ခုစာသာ ျဖစ္ပါတယ္။


ဒီ မူရင္းတန္ဖုိး matrixကေန M matrix ရရွိေအာင္ တြက္ယူရပါမယ္။ M matrix ဆုိတာကလည္း D matrix ရေအာင္ တြက္ဖုိ႔ လုိအပ္တဲ႔ matrixတစ္ခုပါပဲ။
M matrix ကုိ ရဖုိ႔ရန္ မူရင္းတန္ဖုိး matrixထဲကေန 128 ကုိ ႏႈတ္ေပးသြားရမွာ ျဖစ္ပါတယ္။ ဘာလုိ႔လဲဆုိေတာ႔ ကြ်န္ေတာ္တုိ႔ အသုံးျပဳထားတာဟာ 8x8 block ျဖစ္တဲ႔အတြက္ေႀကာင္႔ digital နည္းအရ ႏွစ္ ရွစ္ထပ္ ဟာ 256 နဲ႔ ညီမွ်ျပီး 256ကုိ အေပါင္းနဲ႔ အႏႈတ္ အညီအမွ်ခြဲေ၀လုိက္တဲ႔အခါ -128 ကေန 127အထိ ရပါတယ္။ 0ကုိလည္း အေပါင္းဂဏန္းအျဖစ္ ထည္႔တြက္ထားပါတယ္။ M matrixကုိ တြက္တဲ႔အခါ အထဲမွ ဂဏန္းတုိင္းဟာ သည္အတုိင္းအတာအတြင္းမွာပဲ ရွိေနရမွာျဖစ္တဲ႔အတြက္ အားလုံးကုိ အညီအမွ် 128နဲ႔ ႏႈတ္လုိက္ျခင္းပါပဲ။ ဒါေႀကာင္႔ M matrixဟာ ေအာက္ပါအတုိင္း ျဖစ္သြားပါတယ္။


M matrix ကုိ ရရွိတဲ႔အခါ ကြ်န္ေတာ္တုိ႔ D matrixကုိ ဆက္တြက္လုိ႔ရပါျပီ။
ေအာက္ပါ ပုံေသနည္းအတုိင္း တြက္ႏုိင္ပါတယ္။


ပုံေသနည္းထဲက ေနာက္ဆုံး T အေပၚက မ်ဥ္းေႀကာင္းေလးနဲ႔ အကၡရာဟာ တီပရုိင္းလုိ႔ ေခၚျပီး Inverse matrix ျဖစ္ပါတယ္။ ကြ်န္ေတာ္တုိ႔ အေစာပုိင္းက တြက္ခ်က္ရရွိထားတဲ႔ T matrixကုိ ေျပာင္းျပန္ (Inverse) ယူလုိက္တာပါ။ ပုံမွန္သခ်ၤာတြက္နည္းလုိ 23ကုိ 32လုိ႔ ယူလုိက္တာမဟုတ္ဘဲ Inverse matrixတြက္နည္းဟာ matrix သခ်ၤာမွာ တြက္နည္းသက္သက္ရွိတာမုိ႔ အရွည္မရွင္းေတာ႔ပါဘူး။ Inverse matrixတြက္နည္းနဲ႔ တြက္ယူလုိက္တယ္လုိ႔ သိထားရင္ ျဖစ္ပါတယ္။ ေနာက္ျပီး ပုံေသနည္းပါ တီ၊ အမ္မ္ နဲ႔ တီပရုိင္းတုိ႔ဟာ အခ်င္းခ်င္းေျမွာက္ထားႀကတာျဖစ္ျပီး matrixသခ်ၤာမွ matrixေျမွာက္နည္းနဲ႔ပဲ ေျမွာက္ႀကရတာပါ။ ဒီဘက္ေခတ္မွာ mathcadလုိ ေဆာ႔ဖ္၀ဲလ္ေတြနဲ႔ အလြယ္တြက္ႏုိင္ေနျပီလဲျဖစ္ပါတယ္။
ဒါေႀကာင္႔ ကြ်န္ေတာ္တုိ႔အေနနဲ႔ D matrixကုိ အထက္ပါပုံေသနည္းအတုိင္း ထည္႔တြက္လုိက္ရင္ျဖင္႔ လုိအပ္ေသာ matrixကုိ DCTနည္းႏွင္႔ တြက္ခ်က္ရရွိျခင္းပဲ ျဖစ္ပါတယ္။


.
ဆက္ရန္...



Saturday, January 4, 2014

JPEG ဆုိတာ ဘာလဲ (၂)


JPEG ရရွိရန္ လုပ္ေဆာင္ပုံအဆင္႔ဆင္႔

JPEGရရွိဖုိ႔ compression လုပ္တဲ႔အခါ ပညာရွင္တစ္ဦးနဲ႔ တစ္ဦး အဆင္႔သတ္မွတ္တာျခင္း မတူညီႀကပါဘူး။ အနည္းဆုံးအေနနဲ႔ေတာ႔ အဆင္႔ငါးဆင္႔ ရွိပါတယ္။
(က) မူရင္းပုံတြင္ ပါရွိေသာ RGBကာလာမ်ားကုိ YCbCr ကာလာမ်ားအျဖစ္ ေျပာင္းလဲျခင္း။
(ခ) ရရွိေသာ YCbCrမ်ားကုိ downsample ျပဳလုပ္ျခင္း။
(ဂ) DCT (descrete cosine transform) နည္းျဖင္႔ ေျပာင္းလဲျခင္း။
(ဃ) quantisation ျပဳလုပ္ျခင္း။
(င) code မ်ား အျဖစ္ ေျပာင္းလဲသတ္မွတ္ကာ ကာလာမ်ား ျပန္လည္ျဖည္႔သြင္းျခင္းျဖစ္ပါတယ္။
ဒီအဆင္႔ေတြကုိ အဆင္႔ဆင္႔လုပ္ေဆာင္ျပီးသြားရင္ေတာ႔ JPEG image တစ္ခုကုိ ရရွိျပီျဖစ္ပါတယ္။

(က) မူရင္းပုံတြင္ ပါရွိေသာ RGBကာလာမ်ားကုိ YCbCr ကာလာမ်ားအျဖစ္ ေျပာင္းလဲျခင္း

အရင္ဆုံးအေနနဲ႔ RGB ဆုိတာ ဘာလဲ သိဖုိ႔လုိပါမယ္။ Rဆုိတာ red-အနီေရာင္၊ Gဆုိတာ green-အစိမ္းေရာင္ နဲ႔ Bဆုိတာကေတာ႔ blue-အျပာေရာင္တုိ႔ပဲ ျဖစ္ပါတယ္။ ဓာတ္ပုံတစ္ပုံမွာ ပါတဲ႔ အေရာင္အားလုံးဟာ သည္အေရာင္ေတြကုိ အေျခခံျပီး ကြဲျပားသြားတာျဖစ္ပါတယ္။ ဆုိႀကပါစုိ႔။ အ၀ါေရာင္ကုိ လုိခ်င္တယ္ဆုိရင္ အနီေရာင္နဲ႔ အစိမ္းေရာင္ကုိ စပ္ရပါတယ္။ ဒါကုိ ပန္းခ်ီဆရာေတြနဲ႔ ဓာတ္ပုံဆရာေတြ ပိုသိပါလိမ္႔မယ္။ ကြ်န္ေတာ္ကေတာ႔ ဒီသုံးေရာင္ကုိ စပ္ျခင္းျဖင္႔ အျခားအေရာင္ေတြ ရတယ္ဆုိတာေလာက္ပဲ သိပါတယ္။ RGBအေျခခံကာလာမ်ားအျဖစ္ သတ္မွတ္ထားျခင္းရဲ႕ အဓိက ရည္ရြယ္ခ်က္ကေတာ႔ electronic နဲ႔ digital စနစ္ေတြမွာ ကာလာမ်ားကုိ အာရုံခံဖုိ႔နဲ႔ ပုံရိပ္အျဖစ္ေဖာ္ျပႏုိင္ဖုိ႔ သတ္မွတ္ထားတာပါ။

RGB ကာလာ ေရာစပ္ျခင္းပုံ

ရယူထားတဲ႔ ပုံတစ္ပုံရဲ႕ ကာလာဖြဲ႔စည္းပုံမွာ RGB components (ပါ၀င္ေသာအစိတ္အပုိင္းမ်ား) ဘယ္ေလာက္ပါလဲဆုိတာ အရင္စစ္ေဆးျပီး အဲဒီ RGB components ေတြကုိ YCbCr components မ်ားအျဖစ္ ေျပာင္းလဲပစ္ရပါတယ္။ YCbCrအစား တခ်ိဳ႕က YUV components မ်ားအျဖစ္ ေျပာင္းလဲတဲ႔နည္းကုိလည္း သုံးႀကပါတယ္။
ဘယ္လုိေျပာင္းလဲသလဲဆုိေတာ႔ ေအာက္ပါပုံေသနည္းေတြနဲ႔ ေျပာင္းလဲႏုိင္ပါတယ္။ ေအာက္ပါပုံေသနည္းေတြဟာ ဒႆမတစ္ေနရာစာအတြက္ပဲ ျဖတ္ထားတာမုိ႔ ပုိအေသးစိတ္လုိတဲ႔အခါ ဒႆမငါးလုံးေျခာက္လုံးေလာက္ထိျဖတ္ထားတဲ႔ ပုံေသနည္းေတြလဲ ရွိပါတယ္။
Y = 0.3R + 0.6G + 0.1B
U = B – Y
V = R – Y
Cb = U/2+0.5
Cr = V/1.6+0.5
ဒီYUV တုိ႔၊ YCbCrတုိ႔ဟာ ရုပ္ျမင္သံႀကားထုတ္လႊင္႔ျခင္းလုပ္ငန္းေတြလုိ မ်ိဳးမွာလည္း သုံးပါတယ္။ ကာလာအတြက္ standard တစ္ခုဆုိပါေတာ႔။
YCbCrဆုိတာ တကယ္ေတာ႔ တစ္ခုက အလင္းအေမွာင္ေတာက္ပမႈကုိ ကုိယ္စားျပဳျပီး၊ ေနာက္ႏွစ္ခုက အေရာင္မ်ားကုိ ကုိယ္စားျပဳပါတယ္။ အလင္းအေမွာင္ေတာက္ပမႈဆုိတာ အျဖဴအမည္းကုိယ္စားျပဳျခင္းလုိ႔လဲ ယူဆႏုိင္ပါတယ္။
အဲဒီYCbCrပါ၀င္မႈကုိေတာ႔ အသုံးျပဳတဲ႔ ကိရိယာ(ဥပမာ ကင္မရာ)ရဲ႕ pixelေပၚမူတည္ သတ္မွတ္ပါတယ္။ pixel တစ္ခုမွာ YCbCrဘယ္ေလာက္ပါ၀င္သလဲ ခြဲျခားသတ္မွတ္ပါတယ္။ ဥပမာ 64pixel ရွိတယ္ဆုိရင္ ေျခာက္ဆယ္႔ေလးကြက္ခဲြျပီး YCbCrကုိ သပ္သပ္စီ သတ္မွတ္ျခင္းျဖစ္ပါတယ္။
(ကင္မရာေတြမွာ pixelမ်ားေလ၊ ေကာင္းေလပဲလုိ႔ ေျပာႀကတာ ႀကားဖူးႀကမယ္ထင္ပါတယ္။ ဘာေႀကာင္႔လဲဆုိေတာ႔ ဓာတ္ပုံရဲ႕ ေတာက္ပမႈနဲ႔ကာလာပါ၀င္ေတြျဖစ္တဲ႔ YCbCrကုိ pixelေပၚ မူတည္ျပီး သတ္မွတ္လုိ႔ပါပဲ။ pixelမ်ားေလ၊ မူရင္းပုံရဲ႕ ေတာက္ပမႈနဲ႔ကာလာပါ၀င္မႈကုိ ပုိမုိခြဲျခားႏုိင္ေလ၊ ရရွိလာတဲ႔ ဓာတ္ပုံက ပုိမုိႀကည္လင္ျပတ္သားေလပဲေပါ႔။)

ကင္မရာမွာ ပါ၀င္ေသာ pixelအတုိင္း pixelမ်ား အကြက္လုိက္ခြဲထားတဲ႔ပုံပါ။ အကြက္တစ္ကြက္ကုိ Pixel တစ္ခုျဖစ္ပါတယ္။
Pixelတစ္ခုခ်င္းစီအလုိက္ RGBတြက္ခ်က္ျပီး YCbCr componentsမ်ား ဘယ္ေလာက္ပမာဏရွိမလဲ သတ္မွတ္ႏုိင္ျပီဆုိရင္ေတာ႔ ဒုတိယအဆင္႔ကုိ တက္လုိ႔ရပါျပီ။

(ခ) ရရွိေသာ YCbCrမ်ားကုိ downsample ျပဳလုပ္ျခင္း

ဒုတိယအဆင္႔ကေတာ႔ ပထမအဆင္႔မွ တြက္ခ်က္ရရွိထားတဲ႔ YCbCr componentsမ်ားကုိ downsampling လုပ္ျခင္းပါပဲ။ Downsampleလုပ္တာဟာ မူရင္းပုံရဲ႕ ပမာဏကုိ qualityသိသိသာသာမေလ်ာ႔က်ေစဘဲ ေလွ်ာ႔ခ်တဲ႔အဆင္႔တစ္ခုလဲ ျဖစ္ပါတယ္။
လူသားရဲ႕မ်က္လုံးဟာ CbCr components ေတြမွာ အေျပာင္းအလဲျဖစ္သြားတယ္ဆုိတာထက္ Y မွာ အေျပာင္းအလဲျဖစ္သြားတာကုိ ပိုသတိထားမိတတ္ပါတယ္။ ျမန္မာလုိ အလြယ္ေျပာရမယ္ဆုိရင္ေတာ႔ ပုံတစ္ပုံမွာ ကာလာေတြတုိးလာတာ ေလ်ာ႔သြားတာထက္ အျဖဴပုိမ်ားလာတာ၊ အနက္ပုိမ်ားလာတာကုိ လူ႔မ်က္လုံးက ပုိျပီး သိျမင္ခြဲျခားႏုိင္တယ္ဆုိတဲ႔ သေဘာပါပဲ။
ဒါေႀကာင္႔ pixelေတြကုိ downsample လုပ္တဲ႔အခါ Yတန္ဖုိးကုိ pixel တစ္ခုခ်င္းစီမွာ မူလတြက္ခ်က္ရရွိထားတဲ႔ တန္ဖုိးအတုိင္းပဲ ထားျပီး CbCrေတြကုိပဲ သက္ဆုိင္ရာ အခ်ိဳးအလုိက္ ေလွ်ာ႔ခ်သြားတာကုိ လုပ္ႀကပါတယ္။
ဒီလုိ YCbCr အခ်ိဳးအစားေတြဟာလဲ သူ႔ဘာသာ သတ္မွတ္ခ်က္ေတြရွိပါတယ္။ 4:4:4၊ 4:2:2၊ 4:1:1 စသျဖင္႔ေပါ႔ေလ။ 4:4:4 ကေတာ႔ မူလအခ်ိဳးအစားအတုိင္း pixelေတြမွာ သက္ဆုိင္ရာ componentsတန္ဖုိးေတြ ေလွ်ာ႔ခ်ျခင္း မရွိဘူးဆုိတဲ႔ သေဘာေပါ႔။ က်န္တဲ႔ အခ်ိဳးေတြကေတာ႔ ေလွ်ာ႔ခ်သြားတယ္ဆုိတာ ေတြ႔ႏုိင္ပါတယ္။
4:2:2 ကေတာ႔ Y ေလးခု (pixel ေလးခု)တုိင္းမွာ Yက ေလးခု၊ Cbက ႏွစ္ခုနဲ႔ Crက ႏွစ္ခုပဲ ရွိတယ္ဆုိတဲ႔ သေဘာပါ။ က်န္တဲ႔ ႏွစ္ခုစီကုိ ေလွ်ာ႔ခ်သြားတဲ႔ သေဘာေပါ႔။
4:1:1 ကေတာ႔ Y ေလးခု (pixel ေလးခု)တုိင္းမွာ Yက ေလးခု၊ Cbက ႏွစ္ခုနဲ႔ Crက တစ္ခုပဲ ရွိတယ္ဆုိတဲ႔ သေဘာပါ။ က်န္တဲ႔ သုံးခုစီကုိ ေလွ်ာ႔ခ်သြားတဲ႔ သေဘာေပါ႔။
အခ်ိဳးအစားမ်ားကေတာ႔ ႀကိဳက္ႏွစ္သက္သလုိ ေလွ်ာ႔ခ်ႏုိင္ပါတယ္။ 4:2:1၊ 4:2:0 စသျဖင္႔လဲ ေလွ်ာ႔ခ်လုိ႔ ရႏုိင္ပါတယ္။
ေအာက္မွာ သက္ဆုိင္ရာအခ်ိဳးအစားလုိက္ ေလွ်ာ႔ခ်ပုံမ်ားကုိ နားလည္ေစရန္ ပုံနဲ႔ ေဖာ္ျပထားပါတယ္။



ဆက္ရန္...


Friday, January 3, 2014

JPEG ဆုိတာ ဘာလဲ (၁)


JPEG ဆုိတာ ဘာလဲ


JPEG ဆုိတာ ဘာလဲ။

ကြန္ျပဴတာသုံးတဲ႔သူတုိင္း ရင္းႏွီးတဲ႔ နာမည္ေလးတစ္ခုပါပဲ။
JPEG ဆုိတာ ဓာတ္ပုံေပါ႔။ ဒီထက္ပုိေျပာရရင္ JPEG ဆုိတာ ဓာတ္ပုံေဖာမတ္(Format) တစ္ခုေပါ႔။ JPG လုိ႔လဲ လူအမ်ားက သိႀကပါတယ္။ ဓာတ္ပုံတစ္ပုံကုိ right click ေထာက္ျပီး properties ကုိ ႏွိပ္ႀကည္႔လုိက္မယ္ဆုိရင္ (JPEG image) .jpg ဆုိျပီး ေတြ႔ပါလိမ္႔မယ္။ ဓာတ္ပုံဖုိင္သိမ္းတဲ႔ေနရာမွာ သုံးတဲ႔ ေဖာမတ္တစ္မ်ိဳးပါပဲ။ တခ်ိဳ႕ပုံေတြမွာဆုိ .png သုိ႔မဟုတ္ .gif စသျဖင္႔ ေတြ႔ဖူးပါလိမ္႔မယ္။ အဲဒါေတြကေတာ႔ JPEG(.jpg) မဟုတ္တဲ႔ တျခားဓာတ္ပုံဖုိင္ေဖာမတ္ေတြေပါ႔။
ဓာတ္ပုံဖုိင္ေဖာမတ္တစ္ခုပဲ။ ဘာမ်ားထူးဆန္းလုိ႔လဲ။
ဟုတ္ကဲ႔။ သာမန္ပဲ ေတြးႀကည္႔မယ္ဆုိရင္ ဘာမွေတာ႔ မထူးဆန္းပါဘူး။ ဒါေပမယ္႔ ဒီဓာတ္ပုံဖုိင္ေဖာမတ္ကုိ ဘာေႀကာင္႔ဘယ္လုိသတ္မွတ္ရရွိခဲ႔သလဲဆုိတာကုိ ဆက္ေတြးမယ္ဆုိရင္ေတာ႔ စိတ္၀င္စားဖုိ႔ ေကာင္းသြားျပီေပါ႔။
ဓာတ္ပုံကုိ ဓာတ္ပုံလုိ႔ပဲ ဖုိင္ေဖာမတ္ေပးလုိ႔မရဘူးလား။ ဥပမာ (.image) ေပါ႔ဗ်ာ။ ဟုတ္ကဲ႔။ မရလုိ႔ပဲ ဒီလုိမ်ိဳး ဖုိင္ေဖာမတ္အမ်ိဳးမ်ိဳး ျဖစ္ေပၚလာရတာေပါ႔။
ဘာေႀကာင္႔ မရတာလဲ။
ေဖာမတ္(format)ဆုိတာကုိ ျမန္မာလုိ အဓိပၸါယ္ျပန္ႀကည္႔မယ္ဆုိရင္ ပုံစံအခ်ိဳးအစားပါတဲ႔။ ေဖာမတ္အမ်ိဳးမ်ိဳးကြဲျပားရျခင္းဟာ သူတုိ႔မွာ ပါ၀င္တဲ႔ အရာေတြရဲ႕ အခ်ိဳးအစားတစ္ခုနဲ႔တစ္ခု မတူလုိ႔ပါပဲ။
ဒါျဖင္႔ ဓာတ္ပုံတစ္ပုံမွာ ဘာေတြပါ၀င္သလဲ။
ပုံေတြေပါ႔။ ဟုတ္ပါတယ္။ ပုံေတြ ပါပါတယ္။ လူပုံ၊ ေခြးပုံ၊ တိမ္ပုံ၊ သဘာ၀ရႈခင္းပုံ စသျဖင္႔ေပါ႔ေလ။ ဒီထက္ အႏုစိတ္ႀကည္႔လုိက္မယ္ဆုိရင္ေတာ႔ ပုံေတြကုိ အေရာင္ေတြနဲ႔ ဖြဲ႔စည္းတည္ေဆာက္ထားတာ ျဖစ္ပါတယ္။ ဒါေႀကာင္႔ ဓာတ္ပုံမွာ အေရာင္ေတြပါ ပါတယ္။
ဒါေႀကာင္႔ ဖုိင္ေဖာမတ္မတူျခင္းသည္ ဓာတ္ပုံမ်ားမွာ ပါ၀င္ေသာ အေရာင္မ်ားရဲ႕ အခ်ိဳးအစားမ်ား မတူညီလုိ႔ျဖစ္တယ္ဆုိတာ ကြ်န္ေတာ္တုိ႔ အႀကမ္းဖ်င္းသိႏုိင္ျပီေပါ႔။
ေကာင္းျပီ။ ဒါျဖင္႔ JPEGဆုိတဲ႔ ဓာတ္ပုံအမ်ိဳးအစားကုိ ဘယ္လုိမ်ား ဖြဲ႔စည္းတည္ေဆာက္ထားပါသလဲ။ ကြ်န္ေတာ္တုိ႔ ေလ႔လာႀကည္႔လုိက္ႀကရေအာင္လား။

သမုိင္းေႀကာင္း

ကဲ… ကြ်န္ေတာ္သိတာေလးေတြ စျပီးမတင္ျပခင္ စကားပလႅင္ခံခ်င္တာက ကြ်န္ေတာ္ဟာ ဓာတ္ပုံဆရာတစ္ေယာက္မဟုတ္လုိ Photoshop လုိ ေဆာ႔ဖ္၀ဲလ္ေတြလဲ မတတ္ပါဘူး။ ဒီအပုိင္းမွာ ကြ်မ္းက်င္သူတစ္ေယာက္မဟုတ္ဘူး။ ဒါေပမယ္႔ ဘာေႀကာင္႔ ခုလုိတင္ျပေဆြးေႏြးျဖစ္သလဲ ဆုိေတာ႔ ဒီJPEGအေႀကာင္း ေက်ာင္းမွာ ေခါင္းစဥ္ငယ္ေလးတစ္ခုအေနနဲ႔ သင္ရလုိ႔ပါ။ sensorဆုိတဲ႔ အာရုံခံကိရိယာအေႀကာင္းဘာသာရပ္မွာ ကင္မရာေတြဟာ ပုံရိပ္ေတြကုိ ဘယ္လုိရရွိသလဲ။ ျပီးေတာ႔ ဘယ္လုိ သိမ္းဆည္းရယူသလဲဆုိတာကုိ သင္ႀကားရင္း ဒီေခါင္းစဥ္ေလးကုိ သိရွိခဲ႔ရာက အနည္းအက်ဥ္းေလ႔လာမိရင္း ေျပာျပခ်င္စိတ္ေပါက္လာလုိ႔ တင္ျပတဲ႔သေဘာပါပဲ။ ျပည္႔စုံခ်င္မွ ျပည္႔စုံပါလိမ္႔မယ္။ သုိ႔ေသာ္ သိသေလာက္ေလး ေျပာသြားပါမယ္။
JPEGဆုိတာ Joint Photographic Experts Group ဆုိတဲ႔ နာမည္ကုိ အစဆုံး စာလုံးေတြယူျပီး အတုိေကာက္အျဖစ္ သတ္မွတ္ထားတဲ႔ နာမည္ပါ။ အဲဒီအဖြဲ႔ဟာ ISO (International Standards Organization) မွ ဓာတ္ပုံမ်ားရဲ႕ standardကုိ ကမၻာလုံးဆုိင္ရာအေနနဲ႔ တညီတညြတ္တည္း သတ္မွတ္ႏုိင္ဖုိ႔ ဖြဲ႔စည္းခဲ႔တဲ႔ ေကာ္မတီတစ္ရပ္ျဖစ္ပါတယ္။
တကယ္ေတာ႔ ပစၥည္းတစ္ခုရဲ႕ standard ဆုိတာ ရွိသင္႔တဲ႔၊ ရွိကုိရွိရမယ္႔ အရာတစ္ခု။ ဒါေႀကာင္႔ ပညာရွင္ေတြစုစည္းျပီး ႀကိဳးစားအေကာင္အထည္ေဖာ္ခဲ႔ႀကတာ ျဖစ္ပါတယ္။ ကြ်န္ေတာ္တုိ႔ျမန္မာႏုိင္ငံမွာေတာ႔ ခုထိ standard သတ္မွတ္ျခင္းအပုိင္းမွာ အေကာင္အထည္ေဖာ္မႈအားနည္းေနေသးတယ္ေနာ္။ ဥပမာ အေလးခ်ိန္မွာေတာင္ တခ်ိဳ႕က ပိႆာခ်ိန္သုံးတယ္၊ တခ်ိဳ႕က တင္း၊ ေတာင္း စသျဖင္႔ သုံးတယ္၊ တေနရာက ကီလုိဂရမ္သုံးတယ္၊ အမ်ိဳးမ်ိဳးကြဲျပားေနတုန္းပါပဲ။ ေတာင္ငူေခတ္၊ ဘုရင္႔ေနာင္မင္းတရားႀကီးလက္ထက္တုန္းကေတာင္ တစ္ႏုိင္ငံလုံး အေလးခ်ိန္ကုိ တစ္ေျပးညီတည္းျဖစ္ေအာင္ standard သတ္မွတ္ေပးခဲ႔ႏုိင္ပါေသးတယ္။ တကယ္ေတာ္တဲ႔ ဘုရင္ပဲေနာ္။ standardအေႀကာင္း ဒီေခတ္က လူေတြထက္ေတာင္ နားလည္ေသးတယ္။။ ကဲ ဒါေတြ ထားပါေတာ႔။ JPEGအေႀကာင္း ဆက္ရေအာင္။
ဘာေႀကာင္႔ ဓာတ္ပုံstandardသတ္မွတ္ဖုိ႔ လုိသလဲဆုိေတာ႔ တစ္ႏုိင္ငံနဲ႔တစ္ႏုိင္ငံ၊ တစ္ဖြဲ႔နဲ႔တစ္ဖြဲ႔၊ စနစ္တစ္ခုနဲ႔တစ္ခု ခ်ိတ္ဆက္ျပီး အသုံးျပဳႏုိင္ေတာ႔ အခ်ိန္ကုန္၊ လူပန္း သက္သာရာရတာေပါ႔ဗ်ာ။
ေနာက္တစ္ခ်က္က ဖုိင္သိမ္းဆည္းျခင္းအပုိင္းပါ။ ဓာတ္ပုံတစ္ပုံကုိ မူရင္းနီးပါး qualityေကာင္းေကာင္းလုိခ်င္တယ္ဆုိရင္ အေရာင္(ကာလာ)ပုိင္းမွာ ႀကီးႀကီးမားမား ရင္းႏွီးဖုိ႔ လုိပါတယ္။ သဘာ၀ကာလာဖြဲ႔စည္းပုံဟာ အင္မတန္ျမင္႔လြန္းအားႀကီးပါတယ္။ ဒါကုိ digitalပစၥည္းမ်ားနဲ႔ ဖမ္းယူတဲ႔အခါ ျမင္႔မားလြန္းတဲ႔ ကြာလတီကုိ အမီလုိက္ဖုိ႔ခက္ပါတယ္။ အနီးကပ္ဆုံးအမီလုိက္တဲ႔အခါမွာလဲ ကာလာအခ်ိဳးအစားေတြဟာ ျမင္႔တက္သြားပါတယ္။ ဒါေႀကာင္႔ အင္မတန္ႀကည္လင္ျပတ္သားျပီး ႀကည္႔လုိ႔ေကာင္းတဲ႔ ဓာတ္ပုံဖုိင္ေတြကုိ properties စစ္ႀကည္႔လုိက္ရင္ mega bytes ေတြ အေတာ္မ်ားတာေတြ႔ႏုိင္ပါတယ္။
ဒီေတာ႔ ပညာရွင္ေတြဟာ qualityလဲ ေကာင္းရမယ္၊ ဖုိင္ဆုိဒ္လဲ ေလွ်ာ႔ခ်ႏုိင္ရမယ္ဆုိတဲ႔ နည္းလမ္းမ်ား ရွာရင္း ဓာတ္ပုံေဖာမတ္ေတြ ထြက္ေပၚလာျပီး JPEGေဖာမတ္လဲ ပါ၀င္လာခဲ႔ရတာပဲျဖစ္ပါတယ္။
JPEG ဟာ ဓာတ္ပုံေဖာမတ္ေတြအထဲမွာ qualityလဲ ေကာင္းသလုိ ဖုိင္ဆုိဒ္လဲ ေတာ္ေတာ္ေလး ေလွ်ာ႔ေပးႏုိင္လုိ႔ အသုံးမ်ား၊ အႀကိဳက္ေတြ႔ႀကတဲ႔ ဓာတ္ပုံ ေဖာမတ္တစ္ခုအျဖစ္ ထင္ေပၚပါတယ္။

JPEG ရဲ႕ algorithm နဲ႔ လုပ္ေဆာင္ပုံ အဆင္႔ဆင္႔

Algorithmဆုိတာ ျမန္မာလုိ အလြယ္ေျပာရရင္ေတာ႔ စနစ္က်ေသာ လုပ္ငန္းစဥ္လုိ႔ ေျပာႏုိင္မယ္ထင္ပါတယ္။ အလုပ္တစ္ခုကုိ စနစ္တက်ေလး သတ္သတ္မွတ္မွတ္လုပ္တဲ႔အခါ အခ်ိန္၊ ပစၥည္း စတဲ႔ ေလလြင္႔မႈေတြ နည္းေစေအာင္ လုပ္ငန္းစဥ္သတ္မွတ္တဲ႔ သေဘာပါပဲ။
ဓာတ္ပုံေတြကုိ လုိခ်င္တဲ႔ ဖုိင္ေဖာမတ္ရေအာင္ လုပ္ရတဲ႔ လုပ္ငန္းစဥ္ကုိ မ်ားေသာအားျဖင္႔ compression လုပ္တယ္လုိ႔ ေျပာႀကပါတယ္။ ဖိသိပ္ခ်ဳံ႕ျခင္းပဲ ဆုိပါေတာ႔။ ဖုိင္ခ်ဳံ႕ျခင္းလုိ႔ပဲ ဆုိႀကပါစုိ႔။
ဒီလုိ ဖုိင္ခ်ဳံ႕(compression)လုပ္တဲ႔ေနရာမွာ algorithm ႏွစ္မ်ိဳးရွိပါတယ္။
(က) lossless compression နဲ႔
(ခ) lossy compression တုိ႔ ျဖစ္ပါတယ္။
Lossless ဆုိတာက လုိခ်င္တဲ႔ဖုိင္ေဖာမတ္ရေအာင္ လုပ္တဲ႔အခါမွာ bit (digital နည္းပညာပုိင္းအရာ ပမာဏကုိ သတ္မွတ္ေသာ Unit တစ္မ်ိဳး) ကုိ ေလွ်ာ႔ခ်ေပမယ္႔ information(ပုံတြင္ပါ၀င္ေသာ အေရာင္မ်ားအေသးစိတ္)ကုိ မေပ်ာက္ပ်က္ေအာင္ လုပ္တဲ႔နည္းျဖစ္ပါတယ္။ ဒါေပမယ္႔ သူက ဖုိင္ပမာဏကုိ နည္းနည္းပဲ ေလွ်ာ႔ခ်ႏုိင္ပါတယ္။
Lossy ဆုိတာကေတာ႔ bitကုိလဲ ေလွ်ာ႔တယ္။ Information ကုိလဲ ေလွ်ာ႔ပါတယ္။ ဒါေပမယ္႔ မလုိအပ္တဲ႔ အရာေတြကုိပဲ ေလွ်ာ႔ခ်သြားတာျဖစ္ပါတယ္။ (လူ႔မ်က္လုံးဟာ တခ်ိဳ႕အရာေတြကုိ အာရုံစူးစုိက္မွ ျမင္ရတာမ်ိဳးလုိ အားနည္းခ်က္ေတြရွိပါတယ္။ ဒီအခ်က္ေတြကုိ နင္းျပီး မလုိအပ္တာေတြ ေလွ်ာ႔ခ်သြားတာျဖစ္ပါတယ္။) ဒါေႀကာင္႔ qualityလဲ ေကာင္းသလုိ ဖုိင္ဆုိဒ္ကုိလဲ ေတာ္ေတာ္ေလးေလွ်ာ႔ခ်ႏုိင္ပါတယ္။
JPEGဖုိင္ေဖာမတ္ကုိ lossless compression နဲ႔ ျဖစ္ေစ၊ lossy compression နဲ႔ ျဖစ္ေစ ရယူႏုိင္ေပမယ္႔ မ်ားေသာအားျဖင္႔ lossy compression အျဖစ္ပဲ အသုံးျပဳႀကတာေႀကာင္႔ ေနာက္ပုိင္းမွာ JPEGဟာ lossy compression တစ္ခုအေနနဲ႔ပဲ လူသိမ်ားပါေတာ႔တယ္။

ဆက္ရန္....