কম্পিউটার কীভাবে গাছকে ত্রিমাত্রিকভাবে দেখে
Published:
আগের লেখায় হাতে গাছ মাপার সমস্যাগুলো বলেছিলাম: এটি বড় পরিসরে চলে না, অসঙ্গত, আর সবচেয়ে নির্ভুল পদ্ধতিগুলো গাছটিকেই নষ্ট করে ফেলে। স্বাভাবিক সমাধান হলো গাছের বদলে ছবি তোলা, আর ছবিটাই মাপা।
কিন্তু ছবি তো সমতল। গাছ নয়। তাহলে একটি থেকে অন্যটিতে পৌঁছানো যায় কীভাবে?
দুই চোখ, এক দূরত্ব
শুরু করা যাক এমন কিছু দিয়ে যা আপনি না ভেবেই করেন। মুখের সামনে একটি আঙুল তুলে ধরুন, একবার এক চোখ বন্ধ করুন, তারপর অন্যটি। পেছনের দৃশ্যের সাপেক্ষে আঙুলটি যেন লাফ দিয়ে সরে যায়।
ওই লাফটাই পুরো ব্যাপারটার মূল।
আপনার দুই চোখ প্রায় ছয় সেন্টিমিটার দূরত্ব থেকে পৃথিবী দেখে, ফলে প্রতিটি চোখ সামান্য আলাদা ছবি পায়। কাছের জিনিস দুই দৃশ্যের মাঝে অনেকটা সরে; দূরের জিনিস প্রায় সরেই না। মস্তিষ্ক এই সরে যাওয়ার পরিমাণ পড়ে নিয়ে গভীরতার বোধ তৈরি করে।
কম্পিউটারও একই কৌশল খাটায়, তবে একটি সুবিধাসহ: দুটি দৃশ্য একই মুহূর্তে আসতে হবে না, আর নির্দিষ্ট এক জোড়া চোখ থেকেই আসতে হবে এমনও নয়। একটি ক্যামেরাকে সরিয়ে নতুন জায়গায় নিলেই দ্বিতীয় দৃশ্যটি পাওয়া যায়।
গাছের চারপাশে হাঁটুন
তাহলে পদ্ধতিটি দাঁড়ায়: গাছের চারপাশে হাঁটতে হাঁটতে নানা অবস্থান থেকে বহু ছবি তোলা।
এবার সফটওয়্যার খোঁজে ফিচার — ছোট, স্বতন্ত্র অংশ, যা অন্য ছবিতেও চেনা যাবে। পাতার ডগা, কাণ্ডের একটি খাঁজ, মাটির গায়ে দাগের বিন্দু। যা যথেষ্ট আলাদা, দুবার চিনে নেওয়ার মতো।
তারপর শুরু হয় মেলানোর খেলা। ১২ নম্বর ছবির এই অংশটি — ১৩ নম্বর ছবির ওই অংশটির সঙ্গে কি একই ভৌত বিন্দু? হাজার হাজার ফিচার আর শত শত ছবির জন্য এটি করুন, আর তখনই অসাধারণ কিছু বেরিয়ে আসে।
প্রতিটি মিল একটি শর্ত আরোপ করে। যদি একটি বিন্দু এক ছবিতে এখানে আর অন্য ছবিতে ওখানে পড়ে, তবে ক্যামেরা দুটিকে পরস্পরের ও ওই বিন্দুর সাপেক্ষে নির্দিষ্ট অবস্থানেই থাকতে হবে — নইলে হিসাব মেলে না। যথেষ্ট শর্ত জমলে কেবল একটিমাত্র বিন্যাসই সবগুলো মেটায়। সফটওয়্যার সেই বিন্যাসটি বের করে, একই সঙ্গে জেনে নেয় প্রতিটি ছবি কোথা থেকে তোলা আর প্রতিটি বিন্দু স্থানে কোথায়।
এটাই Structure-from-Motion: ক্যামেরার গতিবিধি থেকে গঠন উদ্ধার। ফল হলো একটি বিন্দুমেঘ (point cloud) — ত্রিমাত্রিক শূন্যে ভাসমান হাজারো বিন্দু, যারা মিলে গাছটির আকৃতি আঁকে।
গোলমালটা এখানে
এবার সেই অংশ, যা শুনে অনেকে অবাক হন — এবং যার জন্যই আমার গবেষণা।
ওই পুনর্গঠন সব দিক থেকে বিশ্বস্ত, কেবল একটি বাদে। অনুপাত ঠিক, আকৃতি ঠিক, জ্যামিতি ঠিক। আকার নির্ধারিত নয়।
কেন, ভেবে দেখুন। প্রক্রিয়ার প্রতিটি শর্ত এসেছে ছবির সঙ্গে ছবির তুলনা থেকে। কোথাও কোনো ছবিকে স্কেলের সঙ্গে মেলানো হয়নি। দূর থেকে তোলা বড় গাছ আর কাছ থেকে তোলা ছোট গাছ হুবহু একই ছবি দেয় — তাই ছবির ভেতরে এমন কিছুই নেই যা দুটিকে আলাদা করতে পারে।
ফলে পুনর্গঠনটি আসে ইচ্ছামাফিক এককে। এটি গাছের নিখুঁত মডেল, কিন্তু অজানা স্কেলে; আর “অজানা” মানে প্রতিবার পুনর্গঠনে তা ভিন্ন হতে পারে। একই গাছ, মঙ্গলবার আর শুক্রবার, দুই স্কেল — আর সেই স্কেল স্থির না করা পর্যন্ত সেন্টিমিটারে কোনো পরিমাপেরই অর্থ নেই।
চিরাচরিত সমাধান হলো দৃশ্যের ভেতর জানা মাপের কোনো বস্তু রাখা, যেমন একটি চেকারবোর্ড, আর তার সাপেক্ষে সফটওয়্যারকে ক্যালিব্রেট করা। এটি কাজ করে। এর মানে এই-ও যে চালু গ্রিনহাউসে কাউকে প্রতিটি সেশনে ওই বস্তুটি রাখতে ও রক্ষণাবেক্ষণ করতে হবে — চিরকাল।
বিকল্প হলো স্কেলের প্রয়োজনটাই ঘুচিয়ে ফেলা। পরের লেখা ঠিক সেটি নিয়েই।
এই ধারাবাহিকের পরের পর্ব: Gaussian Splat কী, আর পাতাভরা গাছের জন্য তা মেশ-এর চেয়ে ভালো কেন।
