د JPEG بڼه څنګه کار کوي

د JPEG انځورونه زموږ په ډیجیټل ژوند کې هر اړخیز دي، مګر د پوهاوي د دې پوست تر شا الګوریتمونه دي چې هغه توضیحات لرې کوي چې د انسان سترګو ته د منلو وړ ندي. پایله د کوچني فایل اندازې کې ترټولو لوړ بصری کیفیت دی - مګر دا ټول څنګه کار کوي؟ راځئ چې وګورو هغه څه چې زموږ سترګې نه ګوري!

د JPEG بڼه څنګه کار کوي

دا اسانه ده چې یو ملګري ته د عکس لیږلو وړتیا په پام کې ونیسئ او اندیښنه مه کوئ چې دوی کوم وسیله، براوزر یا عملیاتي سیسټم کاروي - مګر دا تل داسې نه وه. د 1980 لسیزې په لومړیو کې، کمپیوټر کولی شي ډیجیټل انځورونه ذخیره او نندارې ته وړاندې کړي، مګر د دې کار کولو غوره لارې په اړه ډیری سیالي نظریات شتون درلود. تاسو نشئ کولی یوازې یو عکس له یو کمپیوټر څخه بل کمپیوټر ته ولیږئ او امید لرئ چې دا به کار وکړي.

د دې ستونزې د حل لپاره، د نړۍ له ګوټ ګوټ څخه د کارپوهانو یوه کمیټه په 1986 کې جوړه شوه چې نوم یې ".د عکاسي متخصصینو ګډه ډله» (د انځورونو د کارپوهانو ګډه ډله، JPEG)، د معیاري کولو نړیوال سازمان (ISO) او نړیوال الکترونیکي کمیسیون (IEC) ترمنځ د ګډې هڅې په توګه تاسیس شوی، د دوو نړیوالو معیارونو سازمانونو مرکزي دفتر په جینیوا، سویس کې دی.

د JPEG په نوم د خلکو یوې ډلې په 1992 کې د JPEG ډیجیټل عکس کمپریشن معیار رامینځته کړ. هر هغه څوک چې انټرنیټ کاروي شاید د JPEG کوډ شوي عکسونو سره مخ شوي وي. دا د انځورونو د کوډ کولو، لیږلو او ذخیره کولو ترټولو عام لاره ده. له ویب پاڼو څخه تر بریښنالیک پورې ټولنیزو رسنیو ته، JPEG په ورځ کې ملیاردونه ځله کارول کیږي — په حقیقت کې هرکله چې موږ آنلاین عکس وګورو یا یې لیږو. د JPEG پرته، ویب به لږ رنګین، ورو، او شاید د پیشو لږ عکسونه ولري!

دا مقاله د JPEG عکس ډیکوډ کولو څرنګوالي په اړه ده. په بل عبارت، هغه څه ته اړتیا ده چې په کمپیوټر کې زیرمه شوي کمپریس شوي ډاټا په یو عکس کې بدل کړي چې په سکرین کې ښکاري. دا د پوهیدو وړ دی، نه یوازې دا چې دا د هغه ټیکنالوژۍ پوهیدل مهم دي چې موږ یې هره ورځ کاروو، بلکې د دې لپاره چې د کمپریشن کچې په خلاصولو سره، موږ د ادراک او لید په اړه ډیر څه زده کوو، او هغه څه چې زموږ سترګې خورا حساس دي.

برسېره پردې، په دې توګه د انځورونو سره لوبې کول خورا زړه پورې دي.

د JPEG بڼه څنګه کار کوي

د JPEG دننه کتل

په کمپیوټر کې، هرڅه د بائنری شمیرو د ترتیب په توګه ساتل کیږي. عموما دا بټونه، صفر او یو، په اتو ګروپونو کې ګروپ شوي ترڅو بایټ جوړ کړي. کله چې تاسو په کمپیوټر کې د JPEG عکس خلاص کړئ، یو څه (بروزر، عملیاتي سیسټم، بل څه) باید بایټس ډیکوډ کړي، اصلي انځور د رنګونو لیست په توګه بیرته راولي چې ښودل کیدی شي.

که تاسو دا خوږ ډاونلوډ کړئ د پیشو عکس او دا په متن ایډیټر کې پرانیزئ، تاسو به د غیر متناسب حروفونو یوه ډله وګورئ.

د JPEG بڼه څنګه کار کوي
دلته زه د نوټ پیډ ++ د فایل مینځپانګې معاینه کولو لپاره کاروم ، ځکه چې منظم متن ایډیټرونه لکه نوټ پیډ په وینډوز کې به د خوندي کولو وروسته بائنری فایل فاسد کړي او دا به نور د JPEG بڼه پوره نه کړي.

د کلمې پروسیسر کې د عکس خلاصول کمپیوټر مغشوشوي ، لکه څنګه چې تاسو خپل مغز مغشوش کوئ کله چې تاسو خپلې سترګې مسح کړئ او د رنګ داغونو لیدل پیل کړئ!

دا ځایونه چې تاسو یې ګورئ په نوم پیژندل شوي فاسفین، او د رڼا محرک یا د ذهن لخوا رامینځته شوي هیلوسینیشن پایله نه ده. دا پیښیږي ځکه چې ستاسو دماغ فکر کوي چې په نظري اعصابو کې کوم بریښنایی سیګنالونه د رڼا په اړه معلومات وړاندې کوي. مغز باید دا انګیرنې وکړي ځکه چې هیڅ لاره نشته چې پوه شي چې سیګنال غږ دی، لید یا بل څه. په بدن کې ټول اعصاب په عین حال کې ورته برقی محرکونه لیږدوي. ستاسو سترګو ته د فشار په پلي کولو سره، تاسو سیګنالونه لیږئ چې بصري نه وي، مګر د سترګو رسیدونکي فعالوي، کوم چې ستاسو دماغ تشریح کوي - پدې حالت کې، په غلط ډول - د یو څه په توګه. تاسو کولی شئ په لفظي توګه فشار وګورئ!

د دې په اړه فکر کول مسخره دي چې کمپیوټر دماغ ته څومره ورته دي، مګر دا یو ګټور مشابهت هم دی چې دا روښانه کړي چې د ډیټا معنی څومره ده - که د بدن له لارې د اعصابو لخوا لیږدول کیږي یا په کمپیوټر کې زیرمه شوي - د هغې په تفسیر پورې اړه لري. ټول بائنری ډاټا د 0s او 1s څخه جوړه شوې ده، هغه بنسټیز برخې چې کولی شي د هر ډول معلومات وړاندې کړي. ستاسو کمپیوټر ډیری وختونه دا معلوموي چې څنګه د نښو په کارولو سره دوی تشریح کړئ لکه د فایل توسیع. اوس موږ مجبور یو چې دوی د متن په توګه تشریح کړو، ځکه چې دا هغه څه دي چې د متن مدیر تمه لري.

د JPEG ډیکوډ کولو څرنګوالي پوهیدو لپاره ، موږ اړتیا لرو اصلي سیګنالونه پخپله وګورو - بائنری ډیټا. دا د هیکساډیسیمل ایډیټر په کارولو سره ترسره کیدی شي ، یا په مستقیم ډول د اصلي مقالې ویب پاڼه! دلته یو انځور شتون لري، چې د متن په ساحه کې د هغې ټول بایټونه دي (پرته له سرلیک څخه)، په لسیزه بڼه وړاندې کیږي. تاسو کولی شئ دوی بدل کړئ، او سکریپټ به بیا کوډ کړي او په الوتنه کې یو نوی عکس تولید کړي.

د JPEG بڼه څنګه کار کوي

تاسو کولی شئ یوازې د دې مدیر سره لوبې کولو سره ډیر څه زده کړئ. د مثال په توګه، تاسو کولی شئ ووایاست چې پکسلونه په کوم ترتیب کې زیرمه شوي؟

د دې مثال په اړه عجیب شی دا دی چې د ځینې شمیرو بدلول په عکس هیڅ اغیزه نه کوي، مګر، د بیلګې په توګه، که تاسو په لومړۍ کرښه کې د 17 سره 0 شمیره بدله کړئ، عکس به په بشپړه توګه ویجاړ شي!

د JPEG بڼه څنګه کار کوي

نور بدلونونه، لکه د 7 آن لاین 1988 د 254 شمیرې سره بدلول، رنګ بدلوي، مګر یوازې د راتلونکو پکسلونو.

د JPEG بڼه څنګه کار کوي

شاید عجیب شی دا دی چې ځینې شمیرې نه یوازې رنګ بدلوي، بلکې د انځور بڼه هم. 70 په کرښه کې 12 ته 2 بدل کړئ او د عکس پورتنۍ قطار ته وګورئ ترڅو وګورئ چې زما مطلب څه دی.

د JPEG بڼه څنګه کار کوي

او مهمه نده چې تاسو کوم JPEG عکس وکاروئ ، تاسو به تل دا پراسرار شطرنج نمونې ومومئ کله چې د بایټس ترمیم کړئ.

کله چې د مدیر سره لوبې کوئ، دا ستونزمنه ده چې پوه شي چې څنګه د دې بایټونو څخه عکس بیا جوړیږي، ځکه چې د JPEG کمپریشن درې مختلف ټیکنالوژي لري، په ترتیب سره په کچو کې پلي کیږي. موږ به هر یو په جلا توګه مطالعه کړو ترڅو هغه پراسرار چلند رابرسېره کړو چې موږ یې ګورو.

د JPEG کمپریشن درې درجې:

  1. د رنګ فرعي نمونه کول.
  2. جلا کوزین بدلون او نمونې اخیستل.
  3. د اوږدوالي کوډ کول چل کړئ, ډیلټا и هفمن

د دې لپاره چې تاسو ته د کمپریشن شدت په اړه نظر درکړو، په یاد ولرئ چې پورته انځور د 79 شمیرې استازیتوب کوي، یا شاوخوا 819 KB. که موږ دا د کمپریشن پرته ذخیره کړو، هر پکسل به درې شمیرې ته اړتیا ولري - د سور، شین او نیلي برخو لپاره. دا به 79 شمیرې، یا نږدې. 917 KB. د JPEG کمپریشن په پایله کې، وروستی فایل له 700 څخه ډیر ځله کم شوی!

په حقیقت کې، دا انځور ډیر فشار کیدی شي. لاندې دوه عکسونه څنګ په څنګ دي - ښي خوا ته عکس 16 KB ته فشار شوی ، دا د غیر کمپریس شوي نسخې څخه 57 ځله کوچنی دی!

د JPEG بڼه څنګه کار کوي

که تاسو نږدې وګورئ، تاسو به وګورئ چې دا انځورونه یو شان ندي. دا دواړه د JPEG کمپریشن سره عکسونه دي، مګر سم یې په حجم کې خورا کوچنی دی. دا یو څه بد هم ښکاري (د شاليد رنګ چوکونو ته وګورئ). له همدې امله JPEG د تاوان کمپریشن هم ویل کیږي؛ د کمپریشن پروسې په جریان کې، عکس بدلیږي او ځینې توضیحات له لاسه ورکوي.

1. د رنګ فرعي نمونه کول

دلته یو عکس دی چې یوازې د لومړي درجې کمپریشن پلي شوی.

د JPEG بڼه څنګه کار کوي
(متقابل نسخه - په اصلي مقالې). د یوې شمیرې لرې کول ټول رنګونه له مینځه وړي. په هرصورت، که چیرې دقیقا شپږ شمیرې لیرې شي، دا په حقیقت کې په عکس باندې هیڅ اغیزه نلري.

اوس د شمیرو تشریح کول یو څه اسانه دي. دا تقریبا د رنګونو یو ساده لیست دی، په کوم کې چې هر بایټ په سمه توګه یو پکسل بدلوي، مګر په ورته وخت کې دا د غیر کمپریس شوي عکس نیمایي اندازه ده (کوم چې په دې کم شوي اندازې کې شاوخوا 300 KB اخلي). تاسو اټکل کولی شئ ولې؟

تاسو لیدلی شئ چې دا شمیرې د معیاري سور ، شین او نیلي اجزاو استازیتوب نه کوي ، ځکه چې که موږ ټولې شمیرې د صفر سره بدل کړو ، نو موږ به شنه عکس ترلاسه کړو (د سپینې پرځای).

د JPEG بڼه څنګه کار کوي

دا ځکه چې دا بایټونه د Y (روښانتیا) لپاره ولاړ دي،

د JPEG بڼه څنګه کار کوي

Cb (نسبي نیلي)

د JPEG بڼه څنګه کار کوي

او Cr (نسباتي سور) انځورونه.

د JPEG بڼه څنګه کار کوي

ولې RGB نه کاروئ؟ په هرصورت، دا څنګه ډیری عصري سکرینونه کار کوي. ستاسو څارونکی کولی شي هر رنګ ښکاره کړي، په شمول سور، شین او نیلي، د هر پکسل لپاره د مختلف شدت سره. سپین په بشپړ روښانتیا کې د ټولو دریو په بدلولو سره ترلاسه کیږي ، او تور د دوی په بندولو سره ترلاسه کیږي.

د JPEG بڼه څنګه کار کوي

دا د انسان د سترګو کار کولو څرنګوالی ته هم ورته دی. زموږ په سترګو کې د رنګ اخیستونکي په نوم یادیږي "شنک"، او په دریو ډولونو ویشل شوي، چې هر یو یې سور، شین یا نیلي رنګونو ته ډیر حساس دی [S-type مخروط په وایلټ - نیلي کې حساس دي (S د انګلیسي لنډ - لنډ څپې سپیکٹرم څخه)، M. - ډول - په شنه - ژیړ کې (M له انګلیسي متوسط ​​​​- متوسط ​​څپې څخه) ، او L- ډول - په ژیړ - سور کې (L له انګلیسي اوږد - اوږد څپې) د سپیکٹرم برخو کې. د دې درې ډوله شنکونو شتون (او ریښې چې د زمرد په شنه برخه کې حساس دي) یو کس ته رنګ لید ورکوي. / نږدې ژباړه]. ډډونهزموږ په سترګو کې یو بل ډول فوتو ریسیپټر د دې وړتیا لري چې په روښانتیا کې بدلون ومومي، مګر د رنګ سره ډیر حساس دی. زموږ سترګې شاوخوا 120 ملیونه ریښې او یوازې 6 ملیونه شنکونه لري.

له همدې امله زموږ سترګې د رنګ بدلونونو په پرتله د روښانتیا بدلونونو موندلو کې خورا ښه دي. که تاسو رنګ له روښانتیا څخه جلا کړئ، تاسو کولی شئ یو څه رنګ لرې کړئ او هیڅوک به هیڅ ونه ګوري. د کروما فرعي نمونه کول هغه پروسه ده چې د عکس د رنګ اجزاو نمایندګي کوي د لمر اجزاو په پرتله په ټیټ ریزولوشن کې. په پورته مثال کې، هر پکسل دقیقا یو Y برخه لري، او د څلورو پکسلونو هر انفرادي ګروپ دقیقا یو Cb او یو Cr برخه لري. له همدې امله، انځور د اصلي په پرتله څلور چنده لږ رنګ معلومات لري.

د YCbCr رنګ ځای نه یوازې په JPEG کې کارول کیږي. دا په اصل کې په 1938 کې د تلویزیوني پروګرامونو لپاره اختراع شوی و. هرڅوک د رنګ تلویزیون نلري، نو د رنګ او روښانتیا جلا کول هرچا ته اجازه ورکوي چې ورته سیګنال ترلاسه کړي، او تلویزیونونه پرته له رنګ څخه یوازې د روښانتیا برخه کاروي.

نو د مدیر څخه د یوې شمیرې لرې کول په بشپړ ډول ټول رنګونه له مینځه وړي. اجزا د Y Y Y Y Cb Cr په شکل کې زیرمه شوي (په حقیقت کې، اړینه نه ده چې په دې ترتیب کې - د ذخیره کولو ترتیب د فایل سرلیک کې مشخص شوی). د لومړۍ شمیرې لرې کول به د دې لامل شي چې د Cb لومړی ارزښت د Y ، Cr د Cb په توګه وپیژندل شي ، او په عموم کې به تاسو د ډومینو اغیز ولرئ چې د عکس ټول رنګونه بدلوي.

د JPEG مشخصات تاسو د YCbCr کارولو ته مجبور نه کوي. مګر ډیری فایلونه دا کاروي ځکه چې دا د RGB په پرتله غوره نمونه شوي عکسونه تولیدوي. مګر تاسو اړتیا نلرئ د دې لپاره زما خبره واخلئ. په لاندې جدول کې د ځان لپاره وګورئ چې د هرې انفرادي برخې فرعي نمونې به په RGB او YCbCr دواړو کې څه ډول ښکاري.

د JPEG بڼه څنګه کار کوي
(متقابل نسخه - په اصلي مقالې).

د نیلي لرې کول د سور یا شین په څیر د پام وړ ندي. دا ستاسو په سترګو کې د شپږ ملیون شنکونو له امله دی، نږدې 64٪ د سور سره حساس دي، 32٪ شنه او 2٪ نیلي ته.

د Y برخې ښکته نمونه (لاندې کیڼ لور ته) غوره لیدل کیږي. حتی یو کوچنی بدلون د پام وړ دی.

له RGB څخه YCbCr ته د عکس بدلول د فایل اندازه نه کموي ، مګر دا د لږ لید توضیحاتو موندل اسانه کوي چې لرې کیدی شي. زیانمن کمپریشن په دویمه مرحله کې واقع کیږي. دا په ډیر فشار وړ شکل کې د معلوماتو وړاندې کولو مفکورې پراساس دی.

2. د جلا کوزین بدلون او نمونې اخیستل

د کمپریشن دا کچه د ډیری برخې لپاره ده، د JPEG ټول څه دي. YCbCr ته د رنګونو د بدلولو وروسته، اجزا په انفرادي ډول کمپرس شوي، نو موږ کولی شو یوازې د Y برخې باندې تمرکز وکړو. او دلته د دې پرت پلي کولو وروسته د Y برخې بایټ څه ډول ښکاري.

د JPEG بڼه څنګه کار کوي
(متقابل نسخه - په اصلي مقالې). په متقابل نسخه کې، په پکسل باندې کلیک کول مدیر هغه کرښې ته سکرول کوي چې دا یې استازیتوب کوي. هڅه وکړئ له پای څخه شمیرې لرې کړئ یا یو څو صفرونه په یو مشخص شمیر کې اضافه کړئ.

په لومړي نظر کې، دا خورا خراب کمپریشن ښکاري. په یو عکس کې 100 پکسلز شتون لري، او دا د دوی د روښانتیا (Y- اجزاو) نمایندګي کولو لپاره 000 شمیرې ته اړتیا لري - دا د هیڅ شی د فشار کولو څخه بدتر دی!

په هرصورت، په یاد ولرئ چې ډیری دا شمیرې صفر دي. سربیره پردې، د کرښو په پای کې ټول هغه صفرونه پرته له دې چې عکس بدل کړي لرې کیدی شي. شاوخوا 26 شمیرې پاتې دي، او دا نږدې 000 ځله کم دي!

دا کچه د شطرنج د نمونو راز لري. د نورو تاثیراتو برخلاف چې موږ یې لیدلي، د دې نمونو ظهور خراب ندی. دوی د ټول انځور جوړونې بلاکونه دي. د مدیر هره کرښه دقیقا 64 شمیرې لري، د جلا کوزین ټرانسفارم (DCT) کوفیفینټونه د 64 ځانګړي نمونو شدت سره مطابقت لري.

دا نمونې د کوزین پلاټ پراساس رامینځته کیږي. دلته هغه څه دي چې ځینې یې داسې ښکاري:

د JPEG بڼه څنګه کار کوي
8 له 64 مسلو څخه

لاندې یو عکس دی چې ټول 64 نمونې ښیې.

د JPEG بڼه څنګه کار کوي
(متقابل نسخه - په اصلي مقالې).

دا نمونې ځانګړي اهمیت لري ځکه چې دوی د 8x8 عکسونو اساس جوړوي. که تاسو د خطي الجبرا سره نا اشنا یاست، دا پدې مانا ده چې هر 8x8 انځور د دې 64 نمونو څخه جوړ کیدی شي. DCT په 8x8 بلاکونو کې د عکسونو ویشلو پروسه ده او هر بلاک د دې 64 کوفیفینټ ترکیب کې بدلوي.

دا د جادو په څیر ښکاري چې هر عکس د 64 ځانګړو نمونو څخه جوړ کیدی شي. په هرصورت، دا د ویلو سره ورته دی چې په ځمکه کې هر ځای د دوو شمیرو لخوا تشریح کیدی شي - عرض البلد او عرض البلد [د نیم کره / نږدې ښیي. ژباړه]. موږ ډیری وختونه د ځمکې سطح دوه اړخیزه ګڼو، نو موږ یوازې دوه عددونو ته اړتیا لرو. یو 8x8 انځور 64 ابعاد لري، نو موږ 64 شمیرو ته اړتیا لرو.

دا لا روښانه نده چې دا څنګه د کمپریشن شرایطو کې زموږ سره مرسته کوي. که موږ د 64x8 عکس نمایندګۍ لپاره 8 شمیرو ته اړتیا ولرو، نو ولې دا به د 64 روښانتیا اجزاو ذخیره کولو څخه غوره وي؟ موږ دا د ورته دلیل لپاره کوو چې موږ درې RGB شمیرې په دریو YCbCr شمیرو بدلې کړې: دا موږ ته اجازه راکوي چې فرعي توضیحات لرې کړو.

دا ستونزمنه ده چې وګورئ دقیقا کوم توضیحات پدې مرحله کې لرې شوي ځکه چې JPEG په 8x8 بلاکونو کې DCT پلي کوي. په هرصورت، هیڅوک موږ نه منع کوي چې دا په ټول انځور کې پلي کړي. دلته هغه څه دي چې DCT د Y برخې لپاره په ټول انځور کې پلي شوي ښکاري:

د JPEG بڼه څنګه کار کوي

له 60 څخه ډیر شمیرې په عکس کې په حقیقت کې د پام وړ بدلونونو پرته له پای څخه لرې کیدی شي.

د JPEG بڼه څنګه کار کوي

په هرصورت، په یاد ولرئ چې که موږ لومړی پنځه شمیرې صفر کړو، توپیر به څرګند وي.

د JPEG بڼه څنګه کار کوي

په پیل کې شمیرې په عکس کې د ټیټ فریکونسۍ بدلونونو استازیتوب کوي، کوم چې زموږ سترګې غوره کوي. د پای په لور شمیرې په لوړه فریکونسیو کې بدلونونه په ګوته کوي چې یادونه یې خورا ستونزمنه ده. د دې لپاره چې "هغه څه وګورئ چې سترګې یې نشي لیدلی،" موږ کولی شو دا د لوړې فریکونسۍ توضیحات د لومړي 5000 شمیرو په صفر کولو سره جلا کړو.

د JPEG بڼه څنګه کار کوي

موږ د عکس ټولې ساحې ګورو چیرې چې لوی بدلون له پکسل څخه پکسل ته پیښیږي. د پیشو سترګې، د هغه څپې، ټیری کمبل او سیوري په ښکته چپه کونج کې ولاړ دي. تاسو کولی شئ د لومړیو 10 شمیرو په صفر کولو سره نور لاړ شئ:

د JPEG بڼه څنګه کار کوي

20،000:

د JPEG بڼه څنګه کار کوي

40،000:

د JPEG بڼه څنګه کار کوي

60،000:

د JPEG بڼه څنګه کار کوي

دا د لوړې فریکونسۍ توضیحات د کمپریشن مرحلې په جریان کې د JPEG لخوا لرې کیږي. د DCT کوفیفینټ ته د رنګونو بدلولو کې هیڅ زیان شتون نلري. ضایع د نمونې اخیستلو په مرحله کې واقع کیږي، چیرته چې لوړ فریکونسۍ یا نږدې صفر ارزښتونه لیرې شوي. کله چې تاسو د JPEG خوندي کولو کیفیت ټیټ کړئ ، برنامه د لرې شوي ارزښتونو شمیر لپاره حد ډیروي ، کوم چې د فایل اندازه کموي ، مګر عکس ډیر pixelated کوي. له همدې امله په لومړۍ برخه کې انځور، چې 57 ځله کوچنی و، داسې ښکاري. هر 8x8 بلاک د لوړ کیفیت نسخې په پرتله د خورا لږ DCT کوفیفینس لخوا نمایش شوی و.

تاسو کولی شئ د عکسونو تدریجي جریان په څیر یو ښه تاثیر رامینځته کړئ. تاسو کولی شئ یو تیاره عکس وښایئ چې ډیر او ډیر مفصل کیږي ځکه چې ډیر او ډیر کوفیفینټ ډاونلوډ کیږي.

دلته، یوازې د ساتیرۍ لپاره، هغه څه دي چې تاسو یوازې د 24 شمیرو په کارولو سره ترلاسه کوئ:

د JPEG بڼه څنګه کار کوي

یا یوازې 5000:

د JPEG بڼه څنګه کار کوي

ډیر تیاره، مګر یو څه د پیژندلو وړ!

3. د اوږدوالی کوډ کولو، ډیلټا او هفمن چلول

تر اوسه پورې، د کمپریشن ټولې مرحلې زیانمنې وې. وروستنۍ مرحله، برعکس، پرته له زیانونو پرمخ ځي. دا معلومات نه حذفوي، مګر دا د فایل اندازه د پام وړ کموي.

څنګه کولی شئ د معلوماتو له لرې کولو پرته یو څه فشار کړئ؟ تصور وکړئ چې موږ به څنګه یو ساده تور مستطیل 700 x 437 تشریح کړو.

JPEG د دې لپاره 5000 شمیرې کاروي، مګر ډیرې ښې پایلې ترلاسه کیدی شي. ایا تاسو کولی شئ د کوډ کولو سکیم تصور کړئ چې دا ډول عکس به د امکان تر حده په څو بایټونو کې تشریح کړي؟

لږ تر لږه سکیم چې زه کولی شم له څلور څخه کار واخلم: درې د رنګ استازیتوب کولو لپاره، او څلورم د دې لپاره چې دا رنګ څومره پکسلونه لري. په دې کنډون شوي طریقه کې د تکراري ارزښتونو د نمایندګۍ نظریه د چلولو اوږدوالی کوډ کولو په نوم یادیږي. دا بې ضرر دی ځکه چې موږ کولی شو کوډ شوی ډیټا خپل اصلي شکل ته بیرته راوړو.

د تور مستطیل سره د JPEG فایل د 4 بایټ څخه خورا لوی دی - په یاد ولرئ چې د DCT په کچه ، کمپریشن په 8x8 پکسل بلاکونو کې پلي کیږي. له همدې امله، لږترلږه، موږ د هر 64 پکسلز لپاره یو DCT کوفیکینټ ته اړتیا لرو. موږ یو ته اړتیا لرو ځکه چې د 63 صفرونو په تعقیب د یو DCT کوفیسینټ ذخیره کولو پرځای ، د اوږدوالي کوډ کول موږ ته اجازه راکوي چې یو شمیر ذخیره کړو او دا په ګوته کړو چې "نور ټول صفر دي."

د ډیلټا کوډ کول یو تخنیک دی چې په کې هر بایټ د مطلق ارزښت پرځای د یو څه ارزښت څخه توپیر لري. له همدې امله، د ځانګړو بایټونو ترمیم د نورو ټولو پکسلونو رنګ بدلوي. د مثال په توګه، د ذخیره کولو پرځای

12 13 14 14 14 13 13 14

موږ کولی شو له 12 سره پیل وکړو او بیا په ساده ډول په ګوته کړو چې موږ د راتلونکي شمیرو ترلاسه کولو لپاره څومره اضافه یا کمولو ته اړتیا لرو. او دا ترتیب په ډیلټا کوډینګ کې دا بڼه اخلي:

12 1 1 0 0 -1 0 1

بدل شوي ډاټا د اصلي معلوماتو څخه کوچنۍ ندي، مګر دا د هغې کمپرس کول اسانه دي. د چلولو اوږدوالي کوډ کولو دمخه د ډیلټا کوډ کولو پلي کول خورا مرسته کولی شي پداسې حال کې چې لاهم بې ضرر کمپریشن وي.

د ډیلټا کوډینګ یو له څو تخنیکونو څخه دی چې د 8x8 بلاکونو څخه بهر کارول کیږي. د 64 DCT کوفیفینټ څخه، یو په ساده ډول د دوامداره څپې فعالیت دی (سخت رنګ). دا د لوما اجزاو لپاره د هر بلاک اوسط روښانتیا استازیتوب کوي، یا د Cb اجزاوو لپاره اوسط نیلي، او داسې نور. د هر DCT بلاک لومړی ارزښت د DC ارزښت بلل کیږي، او د هر DC ارزښت د پخوانیو په اړه د ډیلټا کوډ شوی دی. نو ځکه، د لومړي بلاک د روښانتیا بدلول به په ټولو بلاکونو اغیزه وکړي.

وروستی اسرار پاتې دی: څنګه د واحد بدلول په بشپړ ډول ټول انځور خرابوي؟ تر اوسه پورې، د کمپریشن کچه دا ډول ځانګړتیاوې نه لري. ځواب د JPEG سرلیک کې دی. لومړی 500 بایټونه د عکس په اړه میټاډاټا لري - عرض، لوړوالی، او نور، او موږ تر اوسه ورسره کار نه دی کړی.

د سرلیک پرته د JPEG ډیکوډ کول تقریبا ناممکن (یا خورا ستونزمن) دي. داسې به ښکاري چې زه هڅه کوم چې تاسو ته انځور تشریح کړم، او زه د خپل تاثر د رسولو لپاره د کلمو اختراع پیل کوم. توضیحات به شاید خورا لنډ وي، ځکه چې زه کولی شم د هغه معنی سره کلمې اختراع کړم چې زه یې غواړم بیان کړم، مګر د هرچا لپاره دا معنی نلري.

دا احمق ښکاري، مګر دا واقعا هغه څه دي. هر JPEG عکس د دې لپاره ځانګړي کوډونو سره فشار شوی. د کوډ لغت په سرلیک کې زیرمه شوی. دا تخنیک د هفمن کوډ په نوم یادیږي او لغت د هفمن میز په نوم یادیږي. په سرلیک کې، جدول د دوه بایټس - 255 او بیا 196 سره نښه شوی. هر رنګ برخه کولی شي خپل میز ولري.

په جدولونو کې بدلونونه به په هر عکس کې په کلکه اغیزه وکړي. یو ښه مثال د 15 لاین 1 ته بدلول دي.

د JPEG بڼه څنګه کار کوي

دا پیښیږي ځکه چې میزونه مشخص کوي چې څنګه انفرادي بټونه باید لوستل شي. تر دې دمه موږ یوازې د بائنری شمیرو سره په لسیزه بڼه کار کړی دی. مګر دا له موږ څخه دا حقیقت پټوي چې که تاسو غواړئ 1 شمیره په یوه بایټ کې ذخیره کړئ، دا به د 00000001 په څیر ښکاري، ځکه چې هر بایټ باید دقیقا اته بټونه ولري، حتی که یوازې یو ته اړتیا وي.

دا په احتمالي توګه د ځای لوی ضایع کول دي که تاسو ډیری کوچنۍ شمیرې لرئ. د هفمن کوډ یو تخنیک دی چې موږ ته اجازه راکوي چې دا اړتیا آرام کړو چې هره شمیره باید اته بټونه ونیسي. دا پدې مانا ده چې که تاسو دوه بایټونه وګورئ:

234 115

بیا، د هفمن میز پورې اړه لري، دا درې شمیرې کیدی شي. د دوی د استخراج لپاره، تاسو باید لومړی په انفرادي بټونو ویشئ:

11101010 01110011

بیا موږ میز ته ګورو ترڅو معلومه کړو چې دوی څنګه ډله ایز کړي. د مثال په توګه، دا کیدای شي لومړی شپږ بټونه وي، (111010)، یا 58 په لسیزه کې، ورپسې پنځه بټونه (10011)، یا 19، او په پای کې وروستي څلور بټونه (0011)، یا 3 وي.

نو ځکه، د کمپریشن په دې مرحله کې د بایټس پوهیدل خورا ستونزمن دي. بایټس د هغه څه استازیتوب نه کوي چې دوی ښکاري. زه به پدې مقاله کې د میز سره د کار کولو توضیحاتو ته لاړ نه شم ، مګر توکي په دې مسله آنلاین کافي.

یو په زړه پوری چال چې تاسو یې د دې پوهې سره کولی شئ سرلیک له JPEG څخه جلا کړئ او په جلا توګه یې ذخیره کړئ. په حقیقت کې، دا معلومه شوه چې یوازې تاسو کولی شئ فایل ولولئ. فیسبوک دا کار کوي ترڅو فایلونه حتی کوچني کړي.

نور څه کیدی شي د هفمن میز یو څه بدل کړي. د نورو لپاره دا به د مات شوي انځور په څیر ښکاري. او یوازې تاسو به د دې د حل کولو جادو لاره پوه شئ.

راځئ چې لنډیز وکړو: نو د JPEG ډیکوډ کولو لپاره څه ته اړتیا ده؟ اړین:

  1. د هفمن جدول له سرلیک څخه راوباسئ او بټونه یې کوډ کړئ.
  2. د هر رنګ او د هر 8x8 بلاک لپاره د لیومینانس اجزا لپاره د جلا کوزین ټرانسفارم کوفیسینټونه استخراج کړئ، د رن اوږدوالی او د ډیلټا کوډ کولو بدلونونه ترسره کوي.
  3. د هر 8x8 بلاک لپاره د پکسل ارزښتونو ترلاسه کولو لپاره د کوفیفینټ پراساس کوزینز سره یوځای کړئ.
  4. د رنګ اجزاو اندازه کول که فرعي نمونه ترسره شوې وي (دا معلومات په سر کې دي).
  5. د هر پکسل لپاره د YCbCr پایلې RGB ته بدل کړئ.
  6. عکس په سکرین کې ښکاره کړئ!

په ساده ډول د پیشو سره د عکس لیدو لپاره جدي کار! په هرصورت، هغه څه چې زه یې خوښوم دا دی چې دا ښیې چې د انسان متمرکز JPEG ټیکنالوژي څنګه ده. دا زموږ د لید ځانګړتیاوو پراساس دی، موږ ته اجازه راکوي چې د دودیزو ټیکنالوژیو په پرتله خورا ښه کمپریشن ترلاسه کړو. او اوس چې موږ پوهیږو چې JPEG څنګه کار کوي، موږ تصور کولی شو چې دا ټیکنالوژي څنګه نورو سیمو ته لیږدول کیدی شي. د مثال په توګه، په ویډیو کې د ډیلټا کوډ کول کولی شي د فایل اندازه کې د پام وړ کمښت چمتو کړي، ځکه چې ډیری وختونه ټولې سیمې شتون لري چې له چوکاټ څخه تر چوکاټ پورې نه بدلیږي (د مثال په توګه، پس منظر).

په مقاله کې کارول شوی کوډ، خلاص دی، او لارښوونې لري چې څنګه خپل عکسونه له ځان سره بدل کړئ.

سرچینه: www.habr.com

Add a comment