আমাদের কথা খুঁজে নিন

   

মেশিনকে দেয়া একজোড়া ভাল চোখ - 2: দ্্বিমাত্রিক থেকে ত্রিমাত্রিক

যার ঘড়ি সে তৈয়ার করে, ঘড়ির ভিতর লুকাইছে

**(এই লেখাটা 'মেশিনকে দেয়া একজোড়া ভাল চোখ - 1' এর পরবর্তী অংশ; একটু কঠিন আলোচনা আছে এখানে, তাই যতটুকু সম্ভব সহজ করে লেখার চেষ্টা করলাম। হয়ত উলটে আরও কঠিন হয়ে গেছে ( .... ) //////////////////////////////////////////////// আগের পর্বের প্রশ্নটা ছিল কিভাবে 3D measurement accuracy বাড়ানো যায় প্যাসিভ সিস্টেমে, অর্থাৎ শুধু ক্যামেরা ব্যাবহারকারী সিস্টেমে। ব্যাপারটা বুঝতে হলে আগে শুধু ক্যামেরা ব্যাবহার করে কিভাবে ত্রিমাত্রিক পরিমাপ (3D measurement ) করা যায় তা একটু বুঝতে হবে। ক্যামেরার সাহায্যে আমরা দ্্বিমাত্রিক ছবি পাই। সুতরাং, শুধু ক্যামেরা ব্যাবহার করে 3D measurement এর মানে হলো দ্্বিমাত্রিক তথ্য থেকে ত্রিমাত্রিক তথ্য বের করা।

কয়েক রকম উপায় আছে এই 2D to 3D এর জন্য; তবে সবচেয়ে কার্যকরী এবং কম এররের জন্য যে উপায় বা মেথডটি পরিচিত তা হলো Stereo vision; এটা সম্পর্কে প্রথমে একটু জানা যাক। আসুন একটা সহজপরীক্ষা করি; পরীক্ষার জন্য আপনার দু'চোখ আর ডান/বাম যেকোন হাতের একটা আঙুলই যথেষ্ট। (সরি, সুমন চৌধুরি, আপনার একটু অসুবিধা হতে পারে ... হে হে হে ... ...চোখের রেস্ট নেন ) আপনার দুচোখের সামনে মোটামুটি নাক বরাবর যে কোন একটি পজিশনে আঙুলকে ধরুন; (আপনার চোখের সামনে মোটামুটি 3 মিটার দুরত্বে একটা দেয়াল থাকে সবচেয়ে ভাল। ) নিচের কাজদুটি করুন (ক. আর খ.) ক. এখন প্রথমে বাম চোখ বন্ধ করে আঙুলটিকে দেখুন; খ. তারপর ডানচোখ বন্ধ ও বামচোখ খুলুন এবং আঙুলটিকে দেখুন; আঙুলটি কি ডানদিকে সরে যায়নি? আবার (ক.) রিপিট করুন; আঙুলকি বামদিকে সরে আসেনি? আসলে আমাদের দুইচোখে যেকোন বস্তুর দুটো ছবি তৈরী হয়; ছবি দুটোকে ব্যাবহার করে মস্তিষ্ক হিসেব করে একটা বস্তু কতদুরে আছে। এখন ধরুন,ডানচোখে দেখা আঙুলের অবস্থান আর বামচোখে দেখা আঙুলের অবস্থানের মাঝে দুরত্বটা 5 সে.মি. ।

এই দুরত্বটাকে বলে 'ডিসপ্যারিটি'। পরীক্ষাটা কিন্তু এখনও শেষ হয়নি আপনার আঙুলটিকে এখন সামনে পিছে এনে উপরের (ক.) আর (খ.) রিপিট করে দেখুনতো 'ডিসপ্যারিটি'র কি দশা হয়? আঙুলকে চোখের কাছে এনে দেখুন। ডিসপ্যারিটি বাড়ল, না কমল? বাড়ল, তাইনা? আঙুলকে চোখ থেকে দূরে নিয়ে যান; ডিসপ্যারিটির কি হলো? কমল, তাইনা? এখন যেটা বলা যায়, তা হলো কোন বস্তুর ক্ষেত্রে এই ডিসপ্যারিটি যদি বেশী হয়, তাহলে তা কাছে আছে; আর ডিসপ্যারিটি যদি কম হয় তাহলে তা দূরে আছে; সুতরাং , ডিসপ্যারিটি থেকে দুরত্বের একটা ধারনা পাও য়া যায়; এখন ভেবে দেখুন, ডিসপ্যারিটি কি দ্্বিমাত্রিক না? দুই চোখে যে দুটি ছবি তৈরি হলো, তাতে আঙুলটির অবস্থানের দুরত্বটাই ছিল ডিসপ্যারিটি। আর এই দ্্বিমাত্রিক ডিসপ্যারিটি থেকে আমরা বস্তুর দূরত্ব জানতে পারি, এবং দূরত্বটা হলো ত্রিমাত্রিক। হয়ে গেল 2D to 3D ... কঠিন হয়ে গেল? আরেকবার পড়ুন; সহজ হবে আশা করি তাহলে, এখন দুরত্ব জানতে হলে আমাদের কি জানতে হবে? জানতে হবে -1. দুই চোখে গঠিত ছবি বা ইমেজের কোথায় কোথায় আঙুলটি অবস্থিত।

জানতে হবে -2. জ্যামিতিক হিসেবের জন্য, দুইচোখের দূরত্ব, দুই চোখের রেটিনাল প্লেনের মধ্যকার কোণ, চোখের লেন্সের ফোকাল লেংথ (এটা একটা বস্তু চোখের রেটিনায় কতভাগ ছোট হয়ে ইমেজড হয় তা হিসেবে সহায়তা করে) -- এসব এবং আরো কিছু প্যারামিটার Stereo visionটা ঠিক চোখের এই নীতি মেনেই চলে (সহজভাবে বললে); Stereo vision এ দুটো ক্যামেরা লাগবে (অথবা একটা ক্যামেরাকে দুই জায়গায় রেখে দুবার একই জিনিসের ছবি তোলা লাগবে); ক্যামেরা দুটো হলো চোখ; ক্যামেরাদুটোকে সেট করার পর তাদের মধ্যকার দূরত্ব, ক্যামেরাগুলোর রেটিনাল প্লেনদুটোর মধ্যকার কোণ, ক্যামেরাগুলোর ফোকাল লেংথ ও আরও কিছু প্যারামিটার (উপরের জানতে হবে -2) হিসেব করতে হবে -- এটা হলো 'টাস্ক 1' । ক্যামেরা ক্যালিব্রেশান পদ্ধতির মাধ্যমে এটা করা যায়; বর্তমানে এরজন্য ভাল অনেক সফটওয়্যার টুলকিটস আছে; তাই 'টাস্ক 1' -- খতম!! (ডিটেইলস জানতে চাইলে আওয়াজ দেবেন, রিফারেন্স পেপারের লিংক দেব) তারপর ছবি তোলা হয়; ধরুন একটা 'লাল বিন্দু' আর একটা 'নীল বিন্দু'র ছবিই তোলা হলো। এখন বামের ক্যামেরা আর ডানের ক্যামেরায় তোলা ছবিদুটোতে বিন্দুগুলো কোথায় আছে তা খুঁজে বের করতে হবে -- এটা 'টাস্ক 2'; তাহলে বিন্দুগুলোর ডিসপ্যারিটি জানা যাবে; ধরুন বামপাশের ছবিতে লাল বিন্দু আছে (100,100)নম্বর পিক্সেলে ... ডানপাশে তা আছে (200,150) নম্বর পিক্সেলে; তাহলে 'লাল বিন্দু' টার ডিসপ্যারিটি হলো (100,50) অর্থাৎ sqrt(100x100+50x50), sqrt হলো square root। যেমন, 4 এর square root হলো 2, 9 এর square root হলো 3। ধরুন, নীল বিন্দুর ডিসপ্যারিটি হলো (110,50); তারমানে নীল বিন্দুটির ডিসপ্যারিটি বেশী; তাহলে, কোন বিন্দুটি বেশী দূরে আছে? লাল না নীল? লাল, তাইনা? কারণ ডিসপ্যারিটি যত কম, দূরত্ব তত বেশী।

এখন দেখুন, ডিসপ্যারিটি জানতে পারলে আমরা একটা বিন্দু দূরে না কাছে তা বলতে পারি; এখন Exactly কত দূরে বা কাছে তা জানতে হলে ঐ 'জানতে হবে -2' এর প্যারামিটারগুলোও জানতে হবে। তাহলে একটা বিন্দুর আসল দূরত্ব বলা যাবে; তাহলে দেখা যাচ্ছে, আমাদের দুটো টাস্ক: টাস্ক 1: ক্যামেরা ক্যালিব্রেশানের মাধ্যমে 'জানতে হবে -2' এর প্যারামিটারগুলো জানা --- এটা খতম!! টাস্ক 2: যেকোন বিন্দু বাম আর ডানের ক্যামেরায় কত নম্বর পিক্সেলে ইমেজড হয়েছে তা জানা; এই ব্যাপারটাকে stereo vision এ বলা হয় 'করেসপন্ডেন্স সার্চ'। এই টাস্ক 2 ('করেসপন্ডেন্স সার্চ') টাই ঝামেলা!! এখানে কম্পিউটার গাধাটা মানুষের মতো স্মার্ট না বলেই নানান উপায় (কূলীনরা বলি এ্যালগরিদম) বের করতে হয়! আর এই কাজটাতে এরর বেশী থাকে বলেই সাধারণত প্যাসিভ সিস্টেমগুলো ভাল পারফর্ম করতে পারেনা!! আমার পি.এইচ.ডি গবেষণায় আমি প্রস্তাব রেখেছি যে ইমেজের শুধুPhase information ব্যাবহার করলে অনেক কম এররে এই 'করেসপন্ডেন্স সার্চ' করা সম্ভব। সেটা অনেক জটিল কাহিনী। পরের লেখায় হাল্কা একটা ধারনা দিতে চেষ্টা করব।

(সহজ করে লেখা যে কি কঠিন, হাড়ে হাড়ে টের পাচ্ছি ... )

অনলাইনে ছড়িয়ে ছিটিয়ে থাকা কথা গুলোকেই সহজে জানবার সুবিধার জন্য একত্রিত করে আমাদের কথা । এখানে সংগৃহিত কথা গুলোর সত্ব (copyright) সম্পূর্ণভাবে সোর্স সাইটের লেখকের এবং আমাদের কথাতে প্রতিটা কথাতেই সোর্স সাইটের রেফারেন্স লিংক উধৃত আছে ।