کوئی بھی راسٹر تصویر فارم میں نمائندگی کی جا سکتی ہے۔ دو جہتی میٹرکس. جب رنگوں کی بات آتی ہے تو، خیال کو کسی تصویر کو دیکھ کر تیار کیا جا سکتا ہے۔ تین جہتی میٹرکس، جس میں ہر رنگ کے ڈیٹا کو ذخیرہ کرنے کے لیے اضافی جہتیں استعمال کی جاتی ہیں۔
اگر ہم حتمی رنگ کو نام نہاد کا مجموعہ سمجھتے ہیں۔ بنیادی رنگ (سرخ، سبز اور نیلے)، ہمارے تین جہتی میٹرکس میں ہم تین طیاروں کی وضاحت کرتے ہیں: پہلا سرخ کے لیے، دوسرا سبز کے لیے اور آخری نیلے کے لیے۔
ہم اس میٹرکس کے ہر نقطہ کو پکسل (تصویری عنصر) کہیں گے۔ ہر پکسل میں ہر رنگ کی شدت (عام طور پر عددی قدر کے طور پر) کے بارے میں معلومات ہوتی ہیں۔ مثال کے طور پر، سرخ پکسل اس کا مطلب ہے کہ اس میں 0 سبز، 0 نیلا اور زیادہ سے زیادہ سرخ ہے۔ گلابی پکسل تین رنگوں کے امتزاج سے بنایا جا سکتا ہے۔ 0 سے 255 تک کی عددی رینج کا استعمال کرتے ہوئے، ایک گلابی پکسل کی تعریف اس طرح کی گئی ہے سرخ = 255, سبز = 192 и نیلا = 203.
رنگوں کی نمائندگی کرنے کے لئے بہت سے دوسرے ماڈل ہیں جو ایک تصویر بناتے ہیں. مثال کے طور پر، آپ انڈیکسڈ پیلیٹ استعمال کر سکتے ہیں، جس میں ہر پکسل کی نمائندگی کے لیے صرف ایک بائٹ کی ضرورت ہوتی ہے، بجائے اس کے کہ RGB ماڈل استعمال کرتے وقت تین کی ضرورت ہو۔ ایسے ماڈل میں، ہر رنگ کی نمائندگی کے لیے 2D میٹرکس کے بجائے 3D میٹرکس کا استعمال ممکن ہے۔ یہ میموری کو بچاتا ہے، لیکن ایک چھوٹا رنگ پہلو دیتا ہے۔
RGB
مثال کے طور پر نیچے دی گئی اس تصویر پر ایک نظر ڈالیں۔ پہلا چہرہ مکمل طور پر پینٹ کیا گیا ہے۔ دوسرے سرخ، سبز اور نیلے ہوائی جہاز ہیں (متعلقہ رنگوں کی شدت گرے اسکیل میں دکھائی گئی ہے)۔
ہم دیکھتے ہیں کہ اصل میں سرخ رنگ کے شیڈز انہی جگہوں پر ہوں گے جہاں دوسرے چہرے کے روشن ترین حصے دیکھے جاتے ہیں۔ جبکہ نیلے رنگ کی شراکت بنیادی طور پر صرف ماریو کی آنکھوں (آخری چہرے) اور اس کے لباس کے عناصر میں دیکھی جا سکتی ہے۔ نوٹس کریں کہ تینوں رنگین طیارے کہاں کم سے کم حصہ ڈالتے ہیں (تصاویر کے سیاہ ترین حصے) - ماریو کی مونچھیں۔
ہر رنگ کی شدت کو ذخیرہ کرنے کے لیے، بٹس کی ایک مخصوص تعداد کی ضرورت ہوتی ہے - اس مقدار کو کہا جاتا ہے۔ تھوڑا سا گہرائی. ہم کہتے ہیں کہ 8 بٹس خرچ کیے جاتے ہیں (0 سے 255 تک کی قدر کی بنیاد پر) ہر رنگ کے طیارے پر۔ پھر ہمارے پاس 24 بٹس (8 بٹس * 3 R/G/B طیارے) کی رنگین گہرائی ہے۔
تصویر کی ایک اور خاصیت ہے۔ اجازت، جو ایک جہت میں پکسلز کی تعداد ہے۔ اکثر کے طور پر اشارہ کیا جاتا ہے۔ چوڑائی × اونچائیجیسا کہ ذیل میں 4 بائی 4 مثال کی تصویر میں ہے۔
امیجز/ویڈیوز کے ساتھ کام کرتے وقت ایک اور پراپرٹی جس سے ہم نمٹتے ہیں۔ پہلو کا تناسب، کسی تصویر یا پکسل کی چوڑائی اور اونچائی کے درمیان عام متناسب تعلق کو بیان کرنا۔
جب وہ کہتے ہیں کہ کوئی خاص فلم یا تصویر 16 x 9 سائز کی ہے، تو ان کا عام طور پر مطلب ہوتا ہے۔ ڈسپلے پہلو تناسب (ڈار - سے پہلو کا تناسب دکھائیں)۔ تاہم، بعض اوقات انفرادی پکسلز کی مختلف شکلیں ہوسکتی ہیں - اس معاملے میں ہم بات کر رہے ہیں۔ پکسل تناسب (برابر - سے پکسل کا پہلو تناسب).
میزبان کے لیے نوٹ: ڈی وی ڈی سے مساوی DAR 4 سے 3
اگرچہ اصل ڈی وی ڈی ریزولوشن 704x480 ہے، لیکن یہ اب بھی 4:3 پہلو کا تناسب برقرار رکھتا ہے کیونکہ PAR 10:11 (704x10 / 480x11) ہے۔
اور آخر میں، ہم تعین کر سکتے ہیں ویڈیو کی ایک ترتیب کی طرح n مدت کے لئے فریم وقت، جسے ایک اضافی جہت سمجھا جا سکتا ہے۔ اے n پھر فریم ریٹ ہے یا فریموں کی تعداد فی سیکنڈ (FPS - سے فریم فی سیکنڈ).
ویڈیو دکھانے کے لیے بٹس فی سیکنڈ کی تعداد اس کی ہے۔ ٹرانسمیشن کی رفتار - بٹریٹ.
مثال کے طور پر، ایک 30 fps، 24 bps، 480x240 ویڈیو کے لیے 82,944,000 bps یا 82,944 Mbps (30x480x240x24) کی ضرورت ہوگی - لیکن اگر کوئی کمپریشن طریقہ استعمال نہ کیا جائے۔
اگر منتقلی کی رفتار تقریبا مسلسل، پھر اسے کہا جاتا ہے۔ مسلسل ٹرانسمیشن کی رفتار (CBR - سے مسلسل بٹ کی شرح)۔ لیکن یہ بھی مختلف ہوسکتا ہے، اس صورت میں اسے کہا جاتا ہے متغیر بوڈ کی شرح (وی بی آر۔ - سے متغیر بٹ ریٹ).
یہ گراف محدود VBR دکھاتا ہے، جہاں مکمل طور پر سیاہ فریم کی صورت میں بہت زیادہ بٹس ضائع نہیں ہوتے۔
انجینئرز نے ابتدائی طور پر اضافی بینڈوتھ کا استعمال کیے بغیر ویڈیو ڈسپلے کے فریم ریٹ کو دوگنا کرنے کا طریقہ تیار کیا۔ یہ طریقہ کے طور پر جانا جاتا ہے منسلک ویڈیو; بنیادی طور پر، یہ پہلے "فریم" میں آدھی اسکرین اور باقی نصف اگلے "فریم" میں بھیجتا ہے۔
فی الحال، مناظر زیادہ تر استعمال کرتے ہوئے پیش کیے جاتے ہیں۔ ترقی پسند اسکیننگ ٹیکنالوجیز. یہ حرکت پذیر تصاویر کو ظاہر کرنے، ذخیرہ کرنے یا منتقل کرنے کا ایک طریقہ ہے جس میں ہر فریم کی تمام لائنیں ترتیب وار کھینچی جاتی ہیں۔
خیر! اب ہم اس بات سے واقف ہیں کہ تصویر کو ڈیجیٹل طور پر کیسے دکھایا جاتا ہے، اس کے رنگ کیسے ترتیب دیئے جاتے ہیں، اگر بٹ ریٹ مستقل (CBR) یا متغیر (VBR) ہے تو ہم ویڈیو دکھانے کے لیے کتنے بٹس فی سیکنڈ خرچ کرتے ہیں۔ ہم دیئے گئے فریم ریٹ کا استعمال کرتے ہوئے دیئے گئے ریزولوشن کے بارے میں جانتے ہیں، ہم بہت سی دوسری اصطلاحات سے واقف ہیں، جیسے انٹر لیسڈ ویڈیو، PAR اور کچھ دیگر۔
فالتو پن کو دور کرنا
یہ معلوم ہے کہ کمپریشن کے بغیر ویڈیو کو عام طور پر استعمال نہیں کیا جا سکتا۔ 720p ریزولوشن اور 30 فریم فی سیکنڈ پر ایک گھنٹہ طویل ویڈیو 278 جی بی لے گی۔ ہم 1280 x 720 x 24 x 30 x 3600 (چوڑائی، اونچائی، بٹس فی پکسل، FPS اور وقت کو سیکنڈ میں) ضرب دے کر اس قدر پر پہنچتے ہیں۔
استعمال کریں بے نقصان کمپریشن الگورتھمDEFLATE کی طرح (PKZIP، Gzip اور PNG میں استعمال کیا جاتا ہے)، مطلوبہ بینڈوتھ کو کافی کم نہیں کرے گا۔ ہمیں ویڈیو کو کمپریس کرنے کے دوسرے طریقے تلاش کرنے ہوں گے۔
ایسا کرنے کے لیے، آپ ہمارے وژن کی خصوصیات کو استعمال کر سکتے ہیں۔ ہم رنگ سے زیادہ چمک کی تمیز کرنے میں بہتر ہیں۔ ایک ویڈیو ترتیب وار تصاویر کا ایک سلسلہ ہے جو وقت کے ساتھ ساتھ دہرایا جاتا ہے۔ ایک ہی منظر کے ملحقہ فریموں کے درمیان چھوٹے فرق ہیں۔ مزید برآں، ہر فریم میں ایک ہی (یا ملتے جلتے) رنگ کا استعمال کرتے ہوئے بہت سے علاقے ہوتے ہیں۔
رنگ، چمک اور ہماری آنکھیں
ہماری آنکھیں رنگ کی نسبت چمک کے لیے زیادہ حساس ہیں۔ اس تصویر کو دیکھ کر آپ خود ہی دیکھ سکتے ہیں۔
اگر آپ کو تصویر کے بائیں نصف حصے پر چوکوں کے رنگ نظر نہیں آتے ہیں۔ A и B اصل میں وہی ہیں، پھر یہ عام بات ہے۔ ہمارا دماغ ہمیں رنگ کی بجائے روشنی اور سایہ پر زیادہ توجہ دینے پر مجبور کرتا ہے۔ نامزد چوکوں کے درمیان دائیں جانب ایک ہی رنگ کا ایک جمپر ہے - اس لیے ہم (یعنی ہمارا دماغ) آسانی سے اس بات کا تعین کر لیتے ہیں کہ درحقیقت وہ ایک ہی رنگ کے ہیں۔
آئیے دیکھتے ہیں (ایک آسان طریقے سے) ہماری آنکھیں کیسے کام کرتی ہیں۔ آنکھ ایک پیچیدہ عضو ہے جو کئی حصوں پر مشتمل ہوتا ہے۔ تاہم، ہم شنک اور سلاخوں میں سب سے زیادہ دلچسپی رکھتے ہیں. آنکھ میں تقریباً 120 ملین سلاخیں اور 6 ملین شنک ہوتے ہیں۔
آئیے آنکھ کے کچھ حصوں کے الگ الگ افعال کے طور پر رنگ اور چمک کے تصور پر غور کریں (حقیقت میں، سب کچھ کچھ زیادہ پیچیدہ ہے، لیکن ہم اسے آسان کریں گے). چھڑی کے خلیات بنیادی طور پر چمک کے لئے ذمہ دار ہیں، جبکہ شنک خلیات رنگ کے لئے ذمہ دار ہیں. شنک کو تین اقسام میں تقسیم کیا گیا ہے، ان میں موجود روغن کی بنیاد پر: S-cones (نیلا)، M-cones (سبز) اور L-cones (سرخ)۔
چونکہ ہمارے پاس شنک (رنگ) کے مقابلے میں بہت زیادہ سلاخیں (چمک) ہیں، اس لیے ہم یہ نتیجہ اخذ کر سکتے ہیں کہ ہم رنگوں کے مقابلے سیاہ اور روشنی کے درمیان تبدیلیوں میں فرق کرنے کے زیادہ اہل ہیں۔
متضاد حساسیت کی خصوصیات
تجرباتی نفسیات اور بہت سے دوسرے شعبوں کے محققین نے انسانی وژن کے بہت سے نظریات تیار کیے ہیں۔ اور ان میں سے ایک کہا جاتا ہے۔ متضاد حساسیت کے افعال. ان کا تعلق مقامی اور وقتی روشنی سے ہے۔ مختصراً، یہ اس بارے میں ہے کہ مبصر کے نوٹس لینے سے پہلے کتنی تبدیلیاں درکار ہیں۔ لفظ "فنکشن" کی جمع کو نوٹ کریں۔ یہ اس حقیقت کی وجہ سے ہے کہ ہم نہ صرف سیاہ اور سفید تصویروں کے لیے بلکہ رنگین تصویروں کے لیے بھی متضاد حساسیت کے افعال کی پیمائش کر سکتے ہیں۔ ان تجربات کے نتائج سے پتہ چلتا ہے کہ زیادہ تر معاملات میں ہماری آنکھیں رنگ کی نسبت چمک کے لیے زیادہ حساس ہوتی ہیں۔
چونکہ ہم جانتے ہیں کہ ہم تصویر کی چمک کے لیے زیادہ حساس ہیں، اس لیے ہم اس حقیقت کو استعمال کرنے کی کوشش کر سکتے ہیں۔
رنگین ماڈل
ہم نے تھوڑا سا اندازہ لگایا کہ آر جی بی اسکیم کا استعمال کرتے ہوئے رنگین تصاویر کے ساتھ کیسے کام کیا جائے۔ دوسرے ماڈلز بھی ہیں۔ ایک ماڈل ہے جو چمک کو کروما سے الگ کرتا ہے اور اسے کہا جاتا ہے۔ YCbCr. ویسے، دوسرے ماڈل ہیں جو اسی طرح کی تقسیم کرتے ہیں، لیکن ہم صرف اس پر غور کریں گے.
اس رنگ کے ماڈل میں Y چمک کی نمائندگی کرتا ہے، اور دو رنگین چینلز بھی استعمال کرتا ہے: Cb (امیر نیلے) اور Cr (امیر سرخ) YCbCr RGB سے اخذ کیا جا سکتا ہے، اور ریورس کنورژن بھی ممکن ہے۔ اس ماڈل کا استعمال کرتے ہوئے ہم مکمل رنگین تصاویر بنا سکتے ہیں جیسا کہ ہم ذیل میں دیکھتے ہیں۔
YCbCr اور RGB کے درمیان تبدیل کریں۔
کوئی اعتراض کرے گا: اگر سبز استعمال نہ کیا جائے تو تمام رنگ حاصل کرنا کیسے ممکن ہے؟
اس سوال کا جواب دینے کے لیے، آئیے RGB کو YCbCr میں تبدیل کریں۔ آئیے معیار میں اپنائے گئے گتانک کا استعمال کریں۔ بی ٹی 601، جس کی یونٹ نے سفارش کی تھی۔ ITU-R. یہ تقسیم ڈیجیٹل ویڈیو کے معیارات کا تعین کرتی ہے۔ مثال کے طور پر: 4K کیا ہے؟ فریم ریٹ، ریزولوشن، کلر ماڈل کیا ہونا چاہیے؟
سب سے پہلے چمک کا حساب لگاتے ہیں۔ آئیے آئی ٹی یو کے ذریعہ تجویز کردہ مستقل استعمال کریں اور آر جی بی اقدار کو تبدیل کریں۔
Y 0.299 =R + 0.587G + 0.114B
چمک کے بعد، ہم نیلے اور سرخ رنگوں کو الگ کریں گے:
Cb = 0.564(B - Y)
Cr = 0.713(R - Y)
اور ہم YCbCr کا استعمال کرتے ہوئے واپس بدل سکتے ہیں اور سبز بھی حاصل کر سکتے ہیں:
R = Y + 1.402Cr
B = Y + 1.772Cb
G = Y - 0.344Cb - 0.714Cr
عام طور پر، ڈسپلے (مانیٹر، ٹی وی، اسکرین، وغیرہ) صرف RGB ماڈل استعمال کرتے ہیں۔ لیکن اس ماڈل کو مختلف طریقوں سے منظم کیا جا سکتا ہے:
رنگ سب سیمپلنگ
روشنی اور کرومینینس کے امتزاج کے طور پر پیش کی گئی تصویر کے ساتھ، ہم معلومات کو منتخب طور پر ہٹا کر کرومینینس کے مقابلے میں انسانی بصری نظام کی روشنی کے لیے زیادہ حساسیت کا فائدہ اٹھا سکتے ہیں۔ کروما سب سیمپلنگ تصویروں کو انکوڈنگ کرنے کا ایک طریقہ ہے جس میں لومیننس کے مقابلے کروما کے لیے کم ریزولوشن استعمال کیا جاتا ہے۔
کلر ریزولوشن کو کتنا کم کرنا جائز ہے؟! اس سے پتہ چلتا ہے کہ پہلے سے ہی کچھ خاکے موجود ہیں جو بیان کرتے ہیں کہ ریزولوشن اور انضمام کو کیسے ہینڈل کیا جائے (نتیجے کا رنگ = Y + Cb + Cr)۔
ان اسکیموں کے نام سے جانا جاتا ہے۔ نمونے لینے کے نظام اور 3 گنا تناسب کے طور پر ظاہر کیا جاتا ہے - a:x:y، جو روشنی اور رنگ کے فرق کے سگنل کے نمونوں کی تعداد کا تعین کرتا ہے۔
a - افقی نمونے لینے کا معیار (عام طور پر 4 کے برابر) x - پکسلز کی پہلی قطار میں کروما نمونوں کی تعداد (افقی ریزولوشن کے نسبت a) y - پکسلز کی پہلی اور دوسری قطاروں کے درمیان کروما نمونوں میں تبدیلیوں کی تعداد۔
استثناء ہے۔ 4:1:0، ہر 4-by-4 luminance ریزولوشن بلاک میں ایک کروما نمونہ فراہم کرنا۔
جدید کوڈیکس میں استعمال ہونے والی عام اسکیمیں:
4:4:4 (کوئی ڈاون سیمپلنگ نہیں)
4:2:2
4:1:1
4:2:0
4:1:0
3:1:1
YCbCr 4:2:0 - فیوژن کی مثال
یہاں YCbCr 4:2:0 کا استعمال کرتے ہوئے ایک ضم شدہ تصویر ہے۔ نوٹ کریں کہ ہم صرف 12 بٹس فی پکسل خرچ کر رہے ہیں۔
یہ وہی تصویر نظر آتی ہے، جو رنگین ذیلی نمونوں کی اہم اقسام کے ساتھ انکوڈ شدہ ہے۔ پہلی قطار حتمی YCbCr ہے، نیچے کی قطار کروما ریزولوشن دکھاتی ہے۔ معیار میں معمولی نقصان پر غور کرتے ہوئے بہت اچھے نتائج۔
یاد رکھیں جب ہم نے 278p ریزولوشن اور 720 فریم فی سیکنڈ پر ایک گھنٹہ طویل ویڈیو فائل کو ذخیرہ کرنے کے لیے 30 GB اسٹوریج کی جگہ گنی؟ اگر ہم YCbCr 4:2:0 استعمال کرتے ہیں، تو یہ سائز نصف سے کم ہو جائے گا - 139 GB۔ ابھی تک، یہ اب بھی قابل قبول نتیجہ سے دور ہے۔
آپ FFmpeg کا استعمال کرتے ہوئے خود YCbCr ہسٹوگرام حاصل کر سکتے ہیں۔ اس تصویر میں، نیلے رنگ کا سرخ پر غلبہ ہے، جو ہسٹوگرام میں ہی واضح طور پر نظر آتا ہے۔
رنگ، چمک، رنگ پہلو - ویڈیو جائزہ
ہم اس زبردست ویڈیو کو دیکھنے کی تجویز کرتے ہیں۔ یہ بتاتا ہے کہ چمک کیا ہے، اور عام طور پر تمام نقطوں پر نقطے ہیں۔ ё چمک اور رنگ کے بارے میں
فریم کی اقسام
آئیے آگے بڑھیں۔ آئیے وقت کی فالتو پن کو ختم کرنے کی کوشش کرتے ہیں۔ لیکن پہلے، آئیے کچھ بنیادی اصطلاحات کی وضاحت کرتے ہیں۔ ہم کہتے ہیں کہ ہمارے پاس 30 فریم فی سیکنڈ والی فلم ہے، اس کے پہلے 4 فریمز یہ ہیں:
ہم فریموں میں بہت ساری تکرار دیکھ سکتے ہیں: مثال کے طور پر، ایک نیلے رنگ کا پس منظر جو فریم سے دوسرے فریم میں تبدیل نہیں ہوتا ہے۔ اس مسئلے کو حل کرنے کے لیے، ہم تجریدی طور پر انہیں تین قسم کے فریموں میں تقسیم کر سکتے ہیں۔
آئی فریم (Iاینٹرو فریم)
آئی فریم (حوالہ فریم، کلیدی فریم، اندرونی فریم) خود ساختہ ہے۔ اس سے قطع نظر کہ آپ کیا تصور کرنا چاہتے ہیں، ایک I-فریم بنیادی طور پر ایک جامد تصویر ہے۔ پہلا فریم عام طور پر ایک I-فریم ہوتا ہے، لیکن ہم باقاعدگی سے I-فریمز کا مشاہدہ کریں گے یہاں تک کہ پہلے فریموں میں بھی نہیں۔
پی فریم (Pترمیم شدہ فریم)
پی فریم (پیش گوئی کرنے والا فریم) اس حقیقت کا فائدہ اٹھاتا ہے کہ تقریبا ہمیشہ موجودہ تصویر کو پچھلے فریم کا استعمال کرتے ہوئے دوبارہ تیار کیا جاسکتا ہے۔ مثال کے طور پر، دوسرے فریم میں صرف تبدیلی گیند کا آگے بڑھنا ہے۔ ہم صرف ان فریموں کے درمیان فرق کو استعمال کرتے ہوئے، صرف تھوڑا سا فریم 2 میں ترمیم کرکے فریم 1 حاصل کر سکتے ہیں۔ فریم 2 بنانے کے لیے، ہم پچھلے فریم 1 کا حوالہ دیتے ہیں۔
←
بی فریم (Bi-پیش گوئی کرنے والا فریم)
اس سے بھی بہتر کمپریشن فراہم کرنے کے لیے نہ صرف ماضی بلکہ مستقبل کے فریموں کے لنکس کے بارے میں کیا خیال ہے؟! یہ بنیادی طور پر ایک B-فریم (دو طرفہ فریم) ہے۔
← →
انٹرمیڈیٹ آؤٹ پٹ
یہ فریم قسمیں بہترین ممکنہ کمپریشن فراہم کرنے کے لیے استعمال ہوتی ہیں۔ ہم اگلے حصے میں دیکھیں گے کہ یہ کیسے ہوتا ہے۔ ابھی کے لیے، آئیے نوٹ کریں کہ استعمال ہونے والی میموری کے لحاظ سے سب سے زیادہ "مہنگا" آئی فریم ہے، پی فریم نمایاں طور پر سستا ہے، لیکن ویڈیو کے لیے سب سے زیادہ منافع بخش آپشن بی فریم ہے۔
وقتی فالتو پن (انٹر فریم پیشن گوئی)
آئیے دیکھتے ہیں کہ وقت کے ساتھ ساتھ تکرار کو کم سے کم کرنے کے لیے ہمارے پاس کون سے اختیارات ہیں۔ ہم کراس پیشین گوئی کے طریقوں کا استعمال کرتے ہوئے اس قسم کی فالتو پن کو حل کر سکتے ہیں۔
ہم فریم 0 اور 1 کی ترتیب کو انکوڈ کرنے کے لیے زیادہ سے زیادہ چند بٹس خرچ کرنے کی کوشش کریں گے۔
ہم پیدا کر سکتے ہیں گھٹاؤ، ہم صرف فریم 1 سے فریم 0 کو گھٹاتے ہیں۔ ہمیں فریم 1 ملتا ہے، صرف اس کے اور پچھلے فریم کے درمیان فرق کا استعمال کرتے ہیں، درحقیقت ہم صرف نتیجے میں باقی کو انکوڈ کرتے ہیں۔
لیکن کیا ہوگا اگر میں نے آپ کو بتایا کہ اس سے بھی بہتر طریقہ ہے جو اس سے بھی کم بٹس استعمال کرتا ہے؟! سب سے پہلے، آئیے فریم 0 کو بلاکس پر مشتمل ایک واضح گرڈ میں توڑ دیں۔ اور پھر ہم فریم 0 کے بلاکس کو فریم 1 کے ساتھ ملانے کی کوشش کریں گے۔ دوسرے لفظوں میں، ہم فریموں کے درمیان حرکت کا اندازہ لگائیں گے۔
ویکیپیڈیا سے - بلاک تحریک معاوضہ
بلاک موشن معاوضہ موجودہ فریم کو نان اوورلیپنگ بلاکس میں تقسیم کرتا ہے اور موشن کمپنسیشن ویکٹر بلاکس کی اصلیت کی اطلاع دیتا ہے (ایک عام غلط فہمی یہ ہے کہ پچھلا فریم کو نان اوورلیپنگ بلاکس میں تقسیم کیا گیا ہے، اور موشن کمپنسیشن ویکٹر بتاتے ہیں کہ وہ بلاکس کہاں جاتے ہیں۔ لیکن درحقیقت، یہ اس کے برعکس ہے - یہ پچھلا فریم نہیں ہے جس کا تجزیہ کیا گیا ہے، بلکہ اگلا؛ یہ واضح نہیں ہے کہ بلاکس کہاں حرکت کر رہے ہیں، لیکن وہ کہاں سے آئے ہیں)۔ عام طور پر سورس بلاکس سورس فریم میں اوورلیپ ہوتے ہیں۔ کچھ ویڈیو کمپریشن الگورتھم موجودہ فریم کو ایک سے نہیں بلکہ کئی پہلے منتقل کیے گئے فریموں سے جمع کرتے ہیں۔
تشخیص کے عمل کے دوران، ہم دیکھتے ہیں کہ گیند (x= 0، y=25) سے (x= 6، y=26)، اقدار x и y حرکت ویکٹر کا تعین کریں۔ بٹس کو محفوظ کرنے کے لیے ایک اور قدم جو ہم کر سکتے ہیں وہ ہے آخری بلاک پوزیشن اور پیشین گوئی کے درمیان صرف موشن ویکٹر کے فرق کو انکوڈ کرنا، اس لیے حتمی موشن ویکٹر ہوگا (x=6-0=6، y=26-25=1 )۔
ایک حقیقی صورت حال میں، اس گیند کو تقسیم کیا جائے گا n بلاکس، لیکن یہ معاملہ کے جوہر کو تبدیل نہیں کرتا.
فریم میں موجود اشیاء تین جہتوں میں حرکت کرتی ہیں، اس لیے جب گیند حرکت کرتی ہے، تو یہ بصری طور پر چھوٹی ہو سکتی ہے (یا دیکھنے والے کی طرف بڑھنے پر بڑی)۔ یہ عام بات ہے کہ بلاکس کے درمیان مکمل میچ نہیں ہوگا۔ یہاں ہمارے اندازے اور حقیقی تصویر کا ایک مشترکہ نقطہ نظر ہے۔
لیکن ہم دیکھتے ہیں کہ جب ہم حرکت کا تخمینہ استعمال کرتے ہیں، تو کوڈنگ کے لیے فریموں کے درمیان ڈیلٹا کا حساب لگانے کا آسان طریقہ استعمال کرنے کے مقابلے میں نمایاں طور پر کم ڈیٹا ہوتا ہے۔
حقیقی تحریک کا معاوضہ کیسا نظر آئے گا۔
یہ تکنیک ایک ساتھ تمام بلاکس پر لاگو ہوتی ہے۔ اکثر ہماری مشروط حرکت پذیر گیند ایک ساتھ کئی بلاکس میں تقسیم ہو جاتی ہے۔
آپ خود ان تصورات کا استعمال کرتے ہوئے محسوس کر سکتے ہیں۔ مشتری.
موشن ویکٹر دیکھنے کے لیے، آپ استعمال کرتے ہوئے ایک بیرونی پیشین گوئی ویڈیو بنا سکتے ہیں۔ ایف ایم پی ایم.
آپ بھی استعمال کر سکتے ہیں۔ انٹیل ویڈیو پرو تجزیہ کار (یہ ادا کیا جاتا ہے، لیکن ایک مفت آزمائش ہے جو صرف پہلے دس فریموں تک محدود ہے)۔
مقامی فالتو پن (اندرونی پیشن گوئی)
اگر ہم ایک ویڈیو میں ہر فریم کا تجزیہ کریں تو ہمیں بہت سے ایک دوسرے سے جڑے ہوئے علاقے ملیں گے۔
آئیے اس مثال کو دیکھتے ہیں۔ یہ منظر بنیادی طور پر نیلے اور سفید رنگوں پر مشتمل ہے۔
یہ ایک آئی فریم ہے۔ ہم پیشین گوئی کے لیے پچھلے فریم نہیں لے سکتے، لیکن ہم اسے سکیڑ سکتے ہیں۔ آئیے ریڈ بلاک کے انتخاب کو انکوڈ کرتے ہیں۔ اگر ہم اس کے پڑوسیوں کو دیکھتے ہیں، تو ہم دیکھتے ہیں کہ اس کے ارد گرد کچھ رنگوں کے رجحانات ہیں۔
ہم فرض کرتے ہیں کہ رنگ فریم میں عمودی طور پر پھیلتے ہیں۔ جس کا مطلب ہے کہ نامعلوم پکسلز کا رنگ اس کے پڑوسیوں کی قدروں پر مشتمل ہوگا۔
ایسی پیشن گوئی غلط ثابت ہو سکتی ہے۔ یہ اس وجہ سے ہے کہ آپ کو اس طریقہ (اندرونی پیشن گوئی) کو لاگو کرنے کی ضرورت ہے، اور پھر حقیقی اقدار کو منہا کرنا ہوگا۔ یہ ہمیں ایک بقایا بلاک دے گا، جس کے نتیجے میں اصل کے مقابلے میں بہت زیادہ کمپریسڈ میٹرکس ہوگا۔
اگر آپ اندرونی پیشین گوئیوں کے ساتھ مشق کرنا چاہتے ہیں، تو آپ ffmpeg کا استعمال کرتے ہوئے میکرو بلاکس اور ان کی پیشین گوئیوں کی ویڈیو بنا سکتے ہیں۔ ہر بلاک رنگ کے معنی کو سمجھنے کے لیے، آپ کو ffmpeg دستاویزات کو پڑھنا ہوگا۔
یا آپ Intel Video Pro Analyzer استعمال کر سکتے ہیں (جیسا کہ میں نے اوپر بتایا ہے، مفت ٹرائل ورژن پہلے 10 فریموں تک محدود ہے، لیکن یہ آپ کے لیے پہلے کافی ہو گا)۔