JPEG فارمیٹ کیسے کام کرتا ہے۔

ہماری ڈیجیٹل زندگیوں میں JPEG تصاویر ہر جگہ موجود ہیں، لیکن بیداری کے اس پوش کے پیچھے الگورتھم ہیں جو ایسی تفصیلات کو ہٹا دیتے ہیں جو انسانی آنکھ کو محسوس نہیں ہوتی ہیں۔ نتیجہ سب سے چھوٹی فائل کے سائز میں سب سے زیادہ بصری معیار ہے - لیکن یہ سب کیسے کام کرتا ہے؟ آئیے دیکھتے ہیں کہ ہماری آنکھیں بالکل کیا نہیں دیکھتیں!

JPEG فارمیٹ کیسے کام کرتا ہے۔

کسی دوست کو تصویر بھیجنے کی صلاحیت کو قبول کرنا آسان ہے اور اس بات کی فکر نہ کریں کہ وہ کون سا آلہ، براؤزر یا آپریٹنگ سسٹم استعمال کر رہے ہیں - لیکن ہمیشہ ایسا نہیں تھا۔ 1980 کی دہائی کے اوائل تک، کمپیوٹر ڈیجیٹل تصاویر کو ذخیرہ اور ڈسپلے کر سکتے تھے، لیکن ایسا کرنے کے بہترین طریقہ کے بارے میں بہت سے مسابقتی خیالات تھے۔ آپ صرف ایک کمپیوٹر سے دوسرے کمپیوٹر پر تصویر نہیں بھیج سکتے اور امید کرتے ہیں کہ یہ کام کرے گا۔

اس مسئلے کو حل کرنے کے لیے 1986 میں دنیا بھر کے ماہرین کی ایک کمیٹی بنائی گئی جسے "فوٹو گرافی کے ماہرین کا مشترکہ گروپ» (جوائنٹ فوٹوگرافک ایکسپرٹس گروپ، جے پی ای جی)، انٹرنیشنل آرگنائزیشن فار اسٹینڈرڈائزیشن (ISO) اور انٹرنیشنل الیکٹرو ٹیکنیکل کمیشن (IEC) کے درمیان مشترکہ کوشش کے طور پر قائم کیا گیا، دو بین الاقوامی معیار کی تنظیموں کا صدر دفتر جنیوا، سوئٹزرلینڈ میں ہے۔

JPEG نامی لوگوں کے ایک گروپ نے 1992 میں JPEG ڈیجیٹل امیج کمپریشن اسٹینڈرڈ بنایا۔ کوئی بھی جس نے انٹرنیٹ استعمال کیا ہے اس نے شاید JPEG انکوڈ شدہ تصاویر کا سامنا کیا ہے۔ یہ تصاویر کو انکوڈ کرنے، بھیجنے اور اسٹور کرنے کا سب سے عام طریقہ ہے۔ ویب صفحات سے لے کر سوشل میڈیا تک ای میل تک، JPEG دن میں اربوں بار استعمال کیا جاتا ہے- عملی طور پر ہر بار جب ہم کوئی تصویر آن لائن دیکھتے ہیں یا بھیجتے ہیں۔ جے پی ای جی کے بغیر، ویب کم رنگین، سست، اور شاید بلی کی تصویریں کم ہوں گی!

یہ مضمون جے پی ای جی امیج کو ڈی کوڈ کرنے کے طریقہ کے بارے میں ہے۔ دوسرے الفاظ میں، کمپیوٹر پر ذخیرہ شدہ کمپریسڈ ڈیٹا کو اسکرین پر ظاہر ہونے والی تصویر میں تبدیل کرنے کے لیے کیا ضروری ہے۔ یہ جاننے کے قابل ہے، نہ صرف اس لیے کہ یہ اس ٹیکنالوجی کو سمجھنا ضروری ہے جسے ہم ہر روز استعمال کرتے ہیں، بلکہ اس لیے بھی کہ کمپریشن لیولز کو غیر مقفل کرنے سے، ہم ادراک اور بصارت کے بارے میں مزید سیکھتے ہیں، اور ہماری آنکھیں کن تفصیلات کے لیے سب سے زیادہ حساس ہیں۔

اس کے علاوہ، اس طرح سے تصاویر کے ساتھ کھیلنا بہت دلچسپ ہے.

JPEG فارمیٹ کیسے کام کرتا ہے۔

JPEG کے اندر تلاش کر رہے ہیں۔

کمپیوٹر پر، ہر چیز بائنری نمبرز کی ترتیب کے طور پر محفوظ ہوتی ہے۔ عام طور پر یہ بٹس، زیرو اور ایک کو بائٹس بنانے کے لیے آٹھ کے گروپوں میں گروپ کیا جاتا ہے۔ جب آپ کمپیوٹر پر JPEG امیج کھولتے ہیں، تو کچھ (ایک براؤزر، آپریٹنگ سسٹم، کچھ اور) کو بائٹس کو ڈی کوڈ کرنا چاہیے، اصل تصویر کو رنگوں کی فہرست کے طور پر بحال کرنا چاہیے جو ظاہر ہو سکتے ہیں۔

اگر آپ اس میٹھے کو ڈاؤن لوڈ کریں۔ ایک بلی کی تصویر اور اسے ٹیکسٹ ایڈیٹر میں کھولیں، آپ کو متضاد حروف کا ایک گروپ نظر آئے گا۔

JPEG فارمیٹ کیسے کام کرتا ہے۔
یہاں میں فائل کے مواد کو جانچنے کے لیے Notepad++ استعمال کر رہا ہوں، کیونکہ ونڈوز پر نوٹ پیڈ جیسے ریگولر ٹیکسٹ ایڈیٹرز محفوظ کرنے کے بعد بائنری فائل کو کرپٹ کر دیں گے اور یہ JPEG فارمیٹ کو مزید مطمئن نہیں کرے گا۔

ورڈ پروسیسر میں تصویر کھولنا کمپیوٹر کو الجھا دیتا ہے، بالکل اسی طرح جیسے آپ اپنے دماغ کو الجھا دیتے ہیں جب آپ اپنی آنکھوں کو رگڑتے ہیں اور رنگ کے دھبے نظر آنے لگتے ہیں!

یہ مقامات جو آپ دیکھتے ہیں اس کے نام سے جانا جاتا ہے۔ فاسفینس، اور یہ دماغ کے ذریعہ پیدا ہونے والے ہلکے محرک یا فریب کا نتیجہ نہیں ہیں۔ یہ اس لیے ہوتے ہیں کیونکہ آپ کا دماغ سوچتا ہے کہ آپٹک اعصاب میں موجود کوئی بھی برقی سگنل روشنی کے بارے میں معلومات فراہم کرتا ہے۔ دماغ کو یہ مفروضے کرنے کی ضرورت ہے کیونکہ یہ جاننے کا کوئی طریقہ نہیں ہے کہ آیا سگنل آواز ہے، وژن ہے یا کچھ اور۔ جسم کے تمام اعصاب بالکل ایک جیسے برقی محرکات کو منتقل کرتے ہیں۔ اپنی آنکھوں پر دباؤ ڈال کر، آپ ایسے سگنل بھیجتے ہیں جو بصری نہیں ہوتے، لیکن آنکھ کے ریسیپٹرز کو چالو کرتے ہیں، جس کی تشریح آپ کا دماغ کرتا ہے - اس معاملے میں، غلط طریقے سے - بصری چیز کے طور پر۔ آپ لفظی طور پر دباؤ دیکھ سکتے ہیں!

یہ سوچنا مضحکہ خیز ہے کہ کمپیوٹرز دماغ سے کتنے ملتے جلتے ہیں، لیکن یہ بتانے کے لیے بھی ایک مفید تشبیہ ہے کہ ڈیٹا کا کتنا مفہوم ہے — چاہے وہ اعصاب کے ذریعے جسم میں لے جایا جائے یا کمپیوٹر پر محفوظ کیا جائے — اس بات پر منحصر ہے کہ اس کی تشریح کیسے کی جاتی ہے۔ تمام بائنری ڈیٹا XNUMXs اور XNUMXs سے بنا ہے، بنیادی اجزاء جو کسی بھی قسم کی معلومات پہنچا سکتے ہیں۔ آپ کا کمپیوٹر اکثر پتہ لگاتا ہے کہ فائل ایکسٹینشن جیسے سراگ استعمال کرکے ان کی تشریح کیسے کی جائے۔ اب ہم اسے متن سے تعبیر کرنے پر مجبور کرتے ہیں، کیونکہ ٹیکسٹ ایڈیٹر کو یہی توقع ہے۔

یہ سمجھنے کے لیے کہ جے پی ای جی کو کیسے ڈی کوڈ کیا جائے، ہمیں اصل سگنلز کو خود دیکھنا ہوگا - بائنری ڈیٹا۔ یہ ایک ہیکساڈیسیمل ایڈیٹر، یا براہ راست آن کا استعمال کرتے ہوئے کیا جا سکتا ہے۔ اصل مضمون کا ویب صفحہ! ایک تصویر ہے، جس کے آگے ٹیکسٹ فیلڈ میں اس کے تمام بائٹس (ہیڈر کے علاوہ) ہیں، اعشاریہ شکل میں پیش کیے گئے ہیں۔ آپ انہیں تبدیل کر سکتے ہیں، اور اسکرپٹ دوبارہ انکوڈ کرے گا اور فلائی پر ایک نئی تصویر تیار کرے گا۔

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 فارمیٹ کیسے کام کرتا ہے۔

سی بی (رشتہ دار نیلا پن)

JPEG فارمیٹ کیسے کام کرتا ہے۔

اور Cr (رشتہ دار لالی) تصاویر۔

JPEG فارمیٹ کیسے کام کرتا ہے۔

RGB کیوں نہیں استعمال کرتے؟ سب کے بعد، زیادہ تر جدید اسکرینیں اس طرح کام کرتی ہیں۔ آپ کا مانیٹر ہر پکسل کے لیے مختلف شدت کے ساتھ سرخ، سبز اور نیلے رنگ سمیت کسی بھی رنگ کو ظاہر کر سکتا ہے۔ سفید تینوں کو پوری چمک کے ساتھ آن کر کے حاصل کیا جاتا ہے، اور سیاہ کو آف کر کے۔

JPEG فارمیٹ کیسے کام کرتا ہے۔

یہ انسانی آنکھ کے کام کرنے کے طریقے سے بھی بہت ملتا جلتا ہے۔ ہماری آنکھوں میں کلر ریسیپٹرز کہلاتے ہیں۔شنک"، اور تین اقسام میں تقسیم کیے گئے ہیں، جن میں سے ہر ایک سرخ، سبز یا نیلے رنگوں کے لیے زیادہ حساس ہے [ایس قسم کے شنک بنفشی نیلے رنگ میں حساس ہوتے ہیں (انگریزی شارٹ سے S - شارٹ ویو سپیکٹرم)، ایم -ٹائپ - سبز پیلے رنگ میں (انگریزی میڈیم سے M - میڈیم ویو)، اور ایل ٹائپ - پیلے رنگ میں سرخ (انگریزی لانگ - لمبی لہر سے ایل) سپیکٹرم کے حصوں میں۔ ان تین قسم کے شنکوں کی موجودگی (اور سلاخیں، جو اسپیکٹرم کے زمرد کے سبز حصے میں حساس ہوتی ہیں) انسان کو رنگین بصارت دیتی ہیں۔ / تقریبا. ترجمہ۔] لاٹھی، ہماری آنکھوں میں فوٹو ریسیپٹر کی ایک اور قسم، چمک میں تبدیلیوں کا پتہ لگانے کے قابل ہے، لیکن رنگ کے لیے بہت زیادہ حساس ہے۔ ہماری آنکھوں میں تقریباً 120 ملین سلاخیں اور صرف 6 ملین شنک ہیں۔

یہی وجہ ہے کہ ہماری آنکھیں رنگ میں ہونے والی تبدیلیوں کی نسبت چمک میں ہونے والی تبدیلیوں کا پتہ لگانے میں بہت بہتر ہیں۔ اگر آپ رنگ کو چمک سے الگ کرتے ہیں، تو آپ تھوڑا سا رنگ ہٹا سکتے ہیں اور کسی کو کچھ نظر نہیں آئے گا۔ کروما سب سیمپلنگ ایک تصویر کے رنگین اجزاء کی روشنی کے اجزاء سے کم ریزولوشن میں نمائندگی کرنے کا عمل ہے۔ اوپر کی مثال میں، ہر پکسل میں بالکل ایک Y جزو ہوتا ہے، اور چار پکسلز کے ہر انفرادی گروپ میں بالکل ایک Cb اور ایک Cr جزو ہوتا ہے۔ لہذا، تصویر میں اصل سے چار گنا کم رنگ کی معلومات شامل ہیں.

YCbCr رنگ کی جگہ نہ صرف JPEG میں استعمال ہوتی ہے۔ یہ اصل میں 1938 میں ٹیلی ویژن پروگراموں کے لیے ایجاد ہوا تھا۔ ہر ایک کے پاس رنگین ٹی وی نہیں ہوتا ہے، لہذا رنگ اور چمک کو الگ کرنے سے ہر ایک کو ایک ہی سگنل ملتا ہے، اور بغیر رنگ کے ٹی وی صرف برائٹنس کا حصہ استعمال کرتے ہیں۔

لہذا ایڈیٹر سے ایک نمبر کو ہٹانا تمام رنگوں کو مکمل طور پر برباد کر دیتا ہے۔ اجزاء کو YYYY Cb Cr کی شکل میں ذخیرہ کیا جاتا ہے (حقیقت میں، ضروری نہیں کہ اس ترتیب میں - اسٹوریج آرڈر فائل ہیڈر میں بیان کیا گیا ہے)۔ پہلے نمبر کو ہٹانے سے Cb کی پہلی قدر کو Y، Cr کو Cb کے طور پر سمجھا جائے گا، اور عام طور پر آپ پر ایک ڈومینو اثر پڑے گا جو تصویر کے تمام رنگوں کو بدل دیتا ہے۔

JPEG تفصیلات آپ کو YCbCr استعمال کرنے پر مجبور نہیں کرتی ہیں۔ لیکن زیادہ تر فائلیں اسے استعمال کرتی ہیں کیونکہ یہ آر جی بی سے بہتر نمونہ دار تصاویر تیار کرتی ہے۔ لیکن آپ کو اس کے لئے میرا لفظ لینے کی ضرورت نہیں ہے۔ نیچے دیے گئے جدول میں خود ہی دیکھیں کہ ہر ایک جزو کا ذیلی نمونہ 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 تصاویر کی بنیاد بناتے ہیں۔ اگر آپ لکیری الجبرا سے ناواقف ہیں، تو اس کا مطلب ہے کہ ان 8 نمونوں سے کوئی بھی 8x64 تصویر بنائی جا سکتی ہے۔ ڈی سی ٹی تصویروں کو 8x8 بلاکس میں تقسیم کرنے اور ہر بلاک کو ان 64 گتانکوں کے مجموعہ میں تبدیل کرنے کا عمل ہے۔

یہ جادو کی طرح لگتا ہے کہ کوئی بھی تصویر 64 مخصوص نمونوں پر مشتمل ہو سکتی ہے۔ تاہم، یہ کہنے کے مترادف ہے کہ زمین پر کسی بھی جگہ کو دو نمبروں سے بیان کیا جا سکتا ہے - عرض البلد اور طول البلد [نصف کرہ / تقریباً ترجمہ۔] ہم اکثر زمین کی سطح کو دو جہتی سمجھتے ہیں، اس لیے ہمیں صرف دو نمبروں کی ضرورت ہے۔ ایک 8x8 تصویر میں 64 جہتیں ہیں، لہذا ہمیں 64 نمبروں کی ضرورت ہے۔

یہ ابھی تک واضح نہیں ہے کہ یہ کمپریشن کے معاملے میں ہماری مدد کیسے کرتا ہے۔ اگر ہمیں 64x8 امیج کی نمائندگی کرنے کے لیے 8 نمبرز کی ضرورت ہے، تو یہ صرف 64 چمک کے اجزاء کو ذخیرہ کرنے سے بہتر کیوں ہوگا؟ ہم یہ اسی وجہ سے کرتے ہیں کہ ہم نے تین RGB نمبروں کو تین YCbCr نمبروں میں تبدیل کیا: یہ ہمیں ٹھیک ٹھیک تفصیلات کو ہٹانے کی اجازت دیتا ہے۔

یہ دیکھنا مشکل ہے کہ اس مرحلے پر کس تفصیل کو ہٹایا گیا ہے کیونکہ JPEG DCT کو 8x8 بلاکس پر لاگو کرتا ہے۔ تاہم، کوئی بھی ہمیں پوری تصویر پر لاگو کرنے سے منع نہیں کرتا ہے۔ پوری تصویر پر لاگو Y جزو کے لیے DCT کیسا لگتا ہے:

JPEG فارمیٹ کیسے کام کرتا ہے۔

تصویر میں عملی طور پر کوئی قابل توجہ تبدیلیوں کے بغیر 60 سے زیادہ نمبرز کو آخر سے ہٹایا جا سکتا ہے۔

JPEG فارمیٹ کیسے کام کرتا ہے۔

تاہم، یاد رکھیں کہ اگر ہم پہلے پانچ نمبروں کو صفر کر دیں تو فرق واضح ہو جائے گا۔

JPEG فارمیٹ کیسے کام کرتا ہے۔

شروع میں نمبر تصویر میں کم تعدد تبدیلیوں کی نمائندگی کرتے ہیں، جسے ہماری آنکھیں بہترین طریقے سے اٹھاتی ہیں۔ آخر کی طرف نمبرز اعلی تعدد میں تبدیلیوں کی نشاندہی کرتے ہیں جن کا نوٹس لینا زیادہ مشکل ہے۔ "یہ دیکھنے کے لیے جو آنکھ نہیں دیکھ سکتی،" ہم پہلے 5000 نمبروں کو صفر کر کے ان ہائی فریکوئنسی تفصیلات کو الگ کر سکتے ہیں۔

JPEG فارمیٹ کیسے کام کرتا ہے۔

ہم تصویر کے وہ تمام حصے دیکھتے ہیں جہاں پکسل سے پکسل تک سب سے بڑی تبدیلی واقع ہوتی ہے۔ بلی کی آنکھیں، اس کی سرگوشیاں، ٹیری کمبل اور نیچے بائیں کونے میں سائے نمایاں ہیں۔ آپ پہلے 10 نمبروں کو صفر کر کے مزید آگے جا سکتے ہیں:

JPEG فارمیٹ کیسے کام کرتا ہے۔

20 000:

JPEG فارمیٹ کیسے کام کرتا ہے۔

40 000:

JPEG فارمیٹ کیسے کام کرتا ہے۔

60 000:

JPEG فارمیٹ کیسے کام کرتا ہے۔

یہ اعلی تعدد تفصیلات کو کمپریشن مرحلے کے دوران JPEG کے ذریعہ ہٹا دیا جاتا ہے۔ رنگوں کو DCT کوفیشینٹس میں تبدیل کرنے میں کوئی نقصان نہیں ہے۔ نقصان نمونے لینے کے مرحلے پر ہوتا ہے، جہاں اعلی تعدد یا صفر کے قریب اقدار کو ہٹا دیا جاتا ہے۔ جب آپ جے پی ای جی سیونگ کوالٹی کو کم کرتے ہیں، تو پروگرام ہٹائی گئی قدروں کی تعداد کے لیے حد بڑھاتا ہے، جس سے فائل کا سائز کم ہو جاتا ہے، لیکن تصویر زیادہ پکسلیٹ ہوتی ہے۔ یہی وجہ ہے کہ پہلے حصے کی تصویر جو کہ 57 گنا چھوٹی تھی، اس طرح دکھائی دے رہی تھی۔ ہر 8x8 بلاک کی نمائندگی اعلیٰ معیار کے ورژن کے مقابلے میں بہت کم DCT کوفیشینٹس کے ذریعے کی گئی تھی۔

آپ تصاویر کی بتدریج سٹریمنگ جیسا ٹھنڈا اثر بنا سکتے ہیں۔ آپ ایک دھندلی تصویر ڈسپلے کر سکتے ہیں جو زیادہ سے زیادہ مفصل ہو جاتی ہے کیونکہ زیادہ سے زیادہ گتانک ڈاؤن لوڈ ہوتے ہیں۔

یہاں، صرف تفریح ​​کے لیے، آپ کو صرف 24 نمبروں کا استعمال کرتے ہوئے ملتا ہے:

JPEG فارمیٹ کیسے کام کرتا ہے۔

یا صرف 5000:

JPEG فارمیٹ کیسے کام کرتا ہے۔

بہت دھندلا ہے، لیکن کسی نہ کسی طرح پہچانا جا سکتا ہے!

3. لینتھ انکوڈنگ، ڈیلٹا اور ہف مین چلائیں۔

اب تک، کمپریشن کے تمام مراحل نقصان دہ رہے ہیں۔ آخری مرحلہ، اس کے برعکس، بغیر کسی نقصان کے آگے بڑھتا ہے۔ یہ معلومات کو حذف نہیں کرتا ہے، لیکن یہ فائل کے سائز کو نمایاں طور پر کم کرتا ہے۔

آپ معلومات کو پھینکے بغیر کسی چیز کو کیسے سکیڑ سکتے ہیں؟ تصور کریں کہ ہم ایک سادہ سیاہ مستطیل 700 x 437 کو کیسے بیان کریں گے۔

جے پی ای جی اس کے لیے 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 ڈی سی ٹی کوفیشینٹس میں سے ایک صرف ایک مستقل لہر کا فعل (ٹھوس رنگ) ہے۔ یہ لوما اجزاء کے لیے ہر بلاک کی اوسط چمک، یا Cb اجزاء کے لیے اوسط نیلا پن، وغیرہ کی نمائندگی کرتا ہے۔ ہر ڈی سی ٹی بلاک کی پہلی ویلیو کو ڈی سی ویلیو کہا جاتا ہے، اور ہر ڈی سی ویلیو ڈیلٹا کو پچھلے بلاکس کے حوالے سے انکوڈ کیا جاتا ہے۔ لہذا، پہلے بلاک کی چمک کو تبدیل کرنے سے تمام بلاکس متاثر ہوں گے۔

حتمی معمہ باقی ہے: واحد کو تبدیل کرنے سے پوری تصویر کیسے خراب ہو جاتی ہے؟ اب تک، کمپریشن لیول میں ایسی خصوصیات نہیں ہیں۔ جواب JPEG ہیڈر میں ہے۔ پہلے 500 بائٹس میں تصویر کے بارے میں میٹا ڈیٹا ہوتا ہے - چوڑائی، اونچائی وغیرہ، اور ہم نے ابھی تک ان کے ساتھ کام نہیں کیا ہے۔

ہیڈر کے بغیر JPEG کو ڈی کوڈ کرنا تقریباً ناممکن (یا بہت مشکل) ہے۔ ایسا لگے گا جیسے میں آپ کو تصویر بیان کرنے کی کوشش کر رہا ہوں، اور اپنے تاثرات پہنچانے کے لیے الفاظ ایجاد کرنے لگا ہوں۔ تفصیل شاید کافی کم ہو گی، کیونکہ میں بالکل وہی معنی کے ساتھ الفاظ ایجاد کر سکتا ہوں جو میں بیان کرنا چاہتا ہوں، لیکن باقی سب کے لیے وہ معنی نہیں رکھتے۔

یہ احمقانہ لگتا ہے، لیکن ایسا ہی ہوتا ہے۔ ہر JPEG امیج کو اس کے مخصوص کوڈز کے ساتھ کمپریس کیا جاتا ہے۔ کوڈ لغت ہیڈر میں محفوظ ہے۔ اس تکنیک کو Huffman code کہا جاتا ہے اور ذخیرہ الفاظ کو Huffman table کہا جاتا ہے۔ ہیڈر میں، ٹیبل کو دو بائٹس کے ساتھ نشان زد کیا گیا ہے - 255 اور پھر 196۔ ہر رنگ کے اجزاء کی اپنی ٹیبل ہو سکتی ہے۔

جدولوں میں تبدیلی کسی بھی تصویر کو یکسر متاثر کرے گی۔ ایک اچھی مثال 15ویں لائن کو 1 میں تبدیل کرنا ہے۔

JPEG فارمیٹ کیسے کام کرتا ہے۔

ایسا اس لیے ہوتا ہے کیونکہ جدولیں یہ بتاتی ہیں کہ انفرادی بٹس کو کس طرح پڑھنا چاہیے۔ اب تک ہم نے صرف اعشاریہ کی شکل میں بائنری نمبرز کے ساتھ کام کیا ہے۔ لیکن یہ ہم سے یہ حقیقت چھپاتا ہے کہ اگر آپ نمبر 1 کو بائٹ میں محفوظ کرنا چاہتے ہیں تو یہ 00000001 کی طرح نظر آئے گا، کیونکہ ہر بائٹ میں بالکل آٹھ بٹس ہونے چاہئیں، چاہے ان میں سے صرف ایک کی ضرورت ہو۔

اگر آپ کے پاس بہت کم تعداد ہے تو یہ ممکنہ طور پر جگہ کا ایک بڑا ضیاع ہے۔ ہف مین کوڈ ایک ایسی تکنیک ہے جو ہمیں اس ضرورت کو نرم کرنے کی اجازت دیتی ہے کہ ہر نمبر کو آٹھ بٹس پر قبضہ کرنا چاہیے۔ اس کا مطلب ہے کہ اگر آپ دو بائٹس دیکھتے ہیں:

234 115

پھر، Huffman ٹیبل پر منحصر ہے، یہ تین نمبر ہو سکتے ہیں۔ انہیں نکالنے کے لیے، آپ کو پہلے ان کو انفرادی بٹس میں تقسیم کرنا ہوگا:

11101010 01110011

پھر ہم ان کو گروپ کرنے کا طریقہ جاننے کے لیے ٹیبل کو دیکھتے ہیں۔ مثال کے طور پر، یہ پہلے چھ بٹس، (111010)، یا 58 اعشاریہ، اس کے بعد پانچ بٹس (10011)، یا 19، اور آخر میں آخری چار بٹس (0011)، یا 3 ہو سکتے ہیں۔

لہذا، کمپریشن کے اس مرحلے پر بائٹس کو سمجھنا بہت مشکل ہے۔ بائٹس اس کی نمائندگی نہیں کرتے جو وہ نظر آتے ہیں۔ میں اس مضمون میں ٹیبل کے ساتھ کام کرنے کی تفصیلات میں نہیں جاؤں گا، لیکن مواد اس مسئلے پر آن لائن کافی.

ایک دلچسپ چال جو آپ اس علم کے ساتھ کر سکتے ہیں وہ ہے ہیڈر کو JPEG سے الگ کرنا اور اسے الگ سے ذخیرہ کرنا۔ حقیقت میں، یہ پتہ چلتا ہے کہ صرف آپ فائل کو پڑھ سکتے ہیں. فیس بک فائلوں کو اور بھی چھوٹا بنانے کے لیے ایسا کرتا ہے۔

اور کیا کیا جا سکتا ہے ہف مین ٹیبل کو تھوڑا سا تبدیل کرنا ہے۔ دوسروں کے لیے یہ ٹوٹی ہوئی تصویر کی طرح نظر آئے گا۔ اور اسے ٹھیک کرنے کا جادوئی طریقہ صرف آپ کو معلوم ہوگا۔

آئیے خلاصہ کرتے ہیں: تو جے پی ای جی کو ڈی کوڈ کرنے کی کیا ضرورت ہے؟ ضروری:

  1. ہیڈر سے ہف مین ٹیبل نکالیں اور بٹس کو ڈی کوڈ کریں۔
  2. ہر رنگ کے لیے مجرد کوزائن ٹرانسفارم کوفیشینٹس نکالیں اور ہر 8x8 بلاک کے لیے چمکدار جزو، الٹا رن لینتھ اور ڈیلٹا انکوڈنگ ٹرانسفارمز کو انجام دیں۔
  3. ہر 8x8 بلاک کے لیے پکسل ویلیو حاصل کرنے کے لیے گتانکوں پر مبنی کوزائنز کو یکجا کریں۔
  4. اگر سب سیمپلنگ کی گئی تھی تو رنگ کے اجزاء کو اسکیل کریں (یہ معلومات ہیڈر میں ہے)۔
  5. ہر پکسل کے نتیجے میں آنے والی YCbCr قدروں کو RGB میں تبدیل کریں۔
  6. اسکرین پر تصویر دکھائیں!

صرف بلی کے ساتھ تصویر دیکھنے کے لیے سنجیدہ کام! تاہم، مجھے اس کے بارے میں جو چیز پسند ہے وہ یہ ہے کہ یہ ظاہر کرتا ہے کہ انسانی مرکوز JPEG ٹیکنالوجی کتنی ہے۔ یہ ہمارے خیال کی خصوصیات پر مبنی ہے، جو ہمیں روایتی ٹیکنالوجیز کے مقابلے میں بہت بہتر کمپریشن حاصل کرنے کی اجازت دیتا ہے۔ اور اب جب کہ ہم سمجھتے ہیں کہ JPEG کیسے کام کرتا ہے، ہم تصور کر سکتے ہیں کہ ان ٹیکنالوجیز کو دوسرے علاقوں میں کیسے منتقل کیا جا سکتا ہے۔ مثال کے طور پر، ویڈیو میں ڈیلٹا انکوڈنگ فائل کے سائز میں نمایاں کمی فراہم کر سکتی ہے، کیونکہ اکثر ایسے پورے علاقے ہوتے ہیں جو فریم سے دوسرے فریم میں تبدیل نہیں ہوتے ہیں (مثال کے طور پر، پس منظر)۔

مضمون میں استعمال شدہ کوڈ, کھلا ہے، اور اس میں ہدایات شامل ہیں کہ تصویروں کو اپنی اپنی تصویروں سے کیسے بدلیں۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں