আপনার AR ফাউন্ডেশন অ্যান্ড্রয়েড অ্যাপে Raw Depth ব্যবহার করুন

Raw Depth API একটি ক্যামেরা ইমেজের জন্য গভীরতার ডেটা প্রদান করে যার সম্পূর্ণ ডেপথ API ডেটার চেয়ে বেশি নির্ভুলতা রয়েছে, কিন্তু সবসময় প্রতিটি পিক্সেলকে কভার করে না। কাঁচা গভীরতার চিত্রগুলি, তাদের মিলিত আত্মবিশ্বাসের চিত্রগুলির সাথে, আরও প্রক্রিয়া করা যেতে পারে, অ্যাপগুলিকে শুধুমাত্র গভীরতার ডেটা ব্যবহার করার অনুমতি দেয় যা তাদের ব্যক্তিগত ব্যবহারের ক্ষেত্রে যথেষ্ট নির্ভুলতা রয়েছে৷

ডিভাইস সামঞ্জস্য

Depth API সমর্থন করে এমন সমস্ত ডিভাইসে Raw Depth উপলব্ধ। সম্পূর্ণ গভীরতা API-এর মতো Raw Depth API-এর জন্য একটি সমর্থিত হার্ডওয়্যার গভীরতা সেন্সরের প্রয়োজন হয় না, যেমন একটি টাইম-অফ-ফ্লাইট (ToF) সেন্সর। যাইহোক, Raw Depth API এবং full Depth API উভয়ই একটি ডিভাইসে থাকতে পারে এমন কোনো সমর্থিত হার্ডওয়্যার সেন্সর ব্যবহার করে।

Raw Depth API বনাম সম্পূর্ণ Depth API

Raw Depth API উচ্চতর নির্ভুলতার সাথে গভীরতার অনুমান প্রদান করে, তবে অশোধিত গভীরতার চিত্রগুলি ক্যামেরা চিত্রের সমস্ত পিক্সেলের জন্য গভীরতার অনুমান অন্তর্ভুক্ত নাও করতে পারে৷ বিপরীতে, পূর্ণ গভীরতা API প্রতিটি পিক্সেলের জন্য আনুমানিক গভীরতা প্রদান করে, কিন্তু গভীরতার অনুমানের মসৃণতা এবং ইন্টারপোলেশনের কারণে প্রতি-পিক্সেল গভীরতার ডেটা কম সঠিক হতে পারে। উভয় API জুড়ে গভীরতার চিত্রের বিন্যাস এবং আকার একই। শুধুমাত্র বিষয়বস্তু ভিন্ন.

নিচের সারণীটি রান্নাঘরের একটি চেয়ার এবং টেবিলের একটি চিত্র ব্যবহার করে Raw Depth API এবং full Depth API-এর মধ্যে পার্থক্যগুলিকে ব্যাখ্যা করে৷

API রিটার্নস ক্যামেরা ছবি গভীরতার চিত্র আত্মবিশ্বাসের ছবি
Raw Depth API
  • একটি অপরিশোধিত গভীরতার চিত্র যা ক্যামেরার ছবিতে কিছু পিক্সেলের জন্য খুব সঠিক গভীরতার অনুমান ধারণ করে।
  • একটি আত্মবিশ্বাসের ছবি যা প্রতিটি কাঁচা গভীরতার ছবি পিক্সেলের জন্য আত্মবিশ্বাস দেয়। যে ক্যামেরা ইমেজ পিক্সেলগুলিতে গভীরতার অনুমান নেই সেগুলির আত্মবিশ্বাস শূন্য থাকে৷
সম্পূর্ণ গভীরতা API
  • একটি একক "মসৃণ" গভীরতার চিত্র যাতে প্রতিটি পিক্সেলের জন্য একটি গভীরতার অনুমান থাকে৷
  • এই API এর সাথে কোন আস্থার চিত্র প্রদান করা হয় না।
N/A

আত্মবিশ্বাসের ছবি

Raw Depth API দ্বারা প্রত্যাবর্তিত আত্মবিশ্বাসের চিত্রগুলিতে, লাইটার পিক্সেলগুলির আত্মবিশ্বাসের মান বেশি, সাদা পিক্সেলগুলি সম্পূর্ণ আত্মবিশ্বাসের প্রতিনিধিত্ব করে এবং কালো পিক্সেলগুলি অনাস্থার প্রতিনিধিত্ব করে৷ সাধারনত, ক্যামেরা ইমেজে যেসব অঞ্চলে বেশি টেক্সচার আছে, যেমন একটি গাছ, সেসব অঞ্চলের তুলনায় বেশি কাঁচা গভীরতার আত্মবিশ্বাস থাকবে, যেমন একটি ফাঁকা দেয়াল। কোন টেক্সচার ছাড়া পৃষ্ঠ সাধারণত শূন্য একটি আত্মবিশ্বাস ফলন.

যদি টার্গেট ডিভাইসে একটি সমর্থিত হার্ডওয়্যার গভীরতা সেন্সর থাকে, তাহলে ক্যামেরার যথেষ্ট কাছাকাছি ইমেজের জায়গাগুলিতে আত্মবিশ্বাস সম্ভবত উচ্চতর হবে, এমনকি টেক্সচারহীন পৃষ্ঠগুলিতেও।

খরচ গণনা

Raw Depth API-এর কম্পিউট খরচ সম্পূর্ণ ডেপথ API-এর কম্পিউট খরচের প্রায় অর্ধেক।

ব্যবহারের ক্ষেত্রে

Raw Depth API-এর সাহায্যে, আপনি গভীরতার ছবি পেতে পারেন যা দৃশ্যের বস্তুর জ্যামিতির আরও বিস্তারিত উপস্থাপনা প্রদান করে। AR অভিজ্ঞতা তৈরি করার সময় কাঁচা গভীরতার ডেটা উপযোগী হতে পারে যেখানে জ্যামিতি-বোঝার কাজগুলির জন্য গভীরতার নির্ভুলতা এবং বিস্তারিত প্রয়োজন। কিছু ব্যবহারের ক্ষেত্রে অন্তর্ভুক্ত:

  • 3D পুনর্গঠন
  • মাপা
  • আকৃতি সনাক্তকরণ

পূর্বশর্ত

এগিয়ে যাওয়ার আগে নিশ্চিত করুন যে আপনি মৌলিক AR ধারণা এবং কীভাবে একটি ARCore সেশন কনফিগার করবেন তা বুঝতে পেরেছেন।

গভীরতা সক্ষম করুন

একটি নতুন ARCore সেশনে , ব্যবহারকারীর ডিভাইস Depth সমর্থন করে কিনা তা পরীক্ষা করুন৷ প্রসেসিং পাওয়ার সীমাবদ্ধতার কারণে সমস্ত ARCore-সামঞ্জস্যপূর্ণ ডিভাইস ডেপথ API সমর্থন করে না। সম্পদ সংরক্ষণ করতে, ARCore-এ ডিফল্টরূপে গভীরতা অক্ষম করা হয়। আপনার অ্যাপ ডেপথ এপিআই ব্যবহার করতে গভীরতা মোড সক্ষম করুন।

var occlusionManager = // Typically acquired from the Camera game object.

// Check whether the user's device supports the Depth API.
if (occlusionManager.descriptor?.supportsEnvironmentDepthImage)
{
    // If depth mode is available on the user's device, perform
    // the steps you want here.
}

সর্বশেষ কাঁচা গভীরতা ইমেজ অর্জন

AROcclusionManager.TryAcquireEnvironmentDepthCpuImage() কে কল করুন এবং CPU-তে সর্বশেষ কাঁচা গভীরতার চিত্র অর্জন করতে AROcclusionManager.environmentDepthTemporalSmoothingRequested ব্যবহার করুন।

সর্বশেষ কাঁচা গভীরতা আত্মবিশ্বাস ইমেজ অর্জন

AROcclusionManager.TryAcquireEnvironmentDepthConfidenceCpuImage() কে কল করুন এবং CPU-তে আত্মবিশ্বাসের চিত্র অর্জন করতে AROcclusionManager.environmentDepthTemporalSmoothingRequested ব্যবহার করুন।

// Attempt to get the latest environment depth image.
if (occlusionManager && occlusionManager.TryAcquireEnvironmentDepthConfidenceCpuImage(out XRCpuImage image))
{
    using (image)
    {
        UpdateRawImage(m_RawEnvironmentDepthConfidenceImage, image);
    }
}
else
{
    m_RawEnvironmentDepthConfidenceImage.enabled = false;
}
,

Raw Depth API একটি ক্যামেরা ইমেজের জন্য গভীরতার ডেটা প্রদান করে যার সম্পূর্ণ ডেপথ API ডেটার চেয়ে বেশি নির্ভুলতা রয়েছে, কিন্তু সবসময় প্রতিটি পিক্সেলকে কভার করে না। কাঁচা গভীরতার চিত্রগুলি, তাদের মিলিত আত্মবিশ্বাসের চিত্রগুলির সাথে, আরও প্রক্রিয়া করা যেতে পারে, অ্যাপগুলিকে শুধুমাত্র গভীরতার ডেটা ব্যবহার করার অনুমতি দেয় যা তাদের ব্যক্তিগত ব্যবহারের ক্ষেত্রে যথেষ্ট নির্ভুলতা রয়েছে৷

ডিভাইস সামঞ্জস্য

Depth API সমর্থন করে এমন সমস্ত ডিভাইসে Raw Depth উপলব্ধ। সম্পূর্ণ গভীরতা API-এর মতো Raw Depth API-এর জন্য একটি সমর্থিত হার্ডওয়্যার গভীরতা সেন্সরের প্রয়োজন হয় না, যেমন একটি টাইম-অফ-ফ্লাইট (ToF) সেন্সর। যাইহোক, Raw Depth API এবং full Depth API উভয়ই একটি ডিভাইসে থাকতে পারে এমন কোনো সমর্থিত হার্ডওয়্যার সেন্সর ব্যবহার করে।

Raw Depth API বনাম সম্পূর্ণ Depth API

Raw Depth API উচ্চতর নির্ভুলতার সাথে গভীরতার অনুমান প্রদান করে, তবে অশোধিত গভীরতার চিত্রগুলি ক্যামেরা চিত্রের সমস্ত পিক্সেলের জন্য গভীরতার অনুমান অন্তর্ভুক্ত নাও করতে পারে৷ বিপরীতে, পূর্ণ গভীরতা API প্রতিটি পিক্সেলের জন্য আনুমানিক গভীরতা প্রদান করে, কিন্তু গভীরতার অনুমানের মসৃণতা এবং ইন্টারপোলেশনের কারণে প্রতি-পিক্সেল গভীরতার ডেটা কম সঠিক হতে পারে। উভয় API জুড়ে গভীরতার চিত্রের বিন্যাস এবং আকার একই। শুধুমাত্র বিষয়বস্তু ভিন্ন.

নিচের সারণীটি রান্নাঘরের একটি চেয়ার এবং টেবিলের একটি চিত্র ব্যবহার করে Raw Depth API এবং full Depth API-এর মধ্যে পার্থক্যগুলিকে ব্যাখ্যা করে৷

API রিটার্নস ক্যামেরা ছবি গভীরতার চিত্র আত্মবিশ্বাসের ছবি
Raw Depth API
  • একটি অপরিশোধিত গভীরতার চিত্র যা ক্যামেরার ছবিতে কিছু পিক্সেলের জন্য খুব সঠিক গভীরতার অনুমান ধারণ করে।
  • একটি আত্মবিশ্বাসের ছবি যা প্রতিটি কাঁচা গভীরতার ছবি পিক্সেলের জন্য আত্মবিশ্বাস দেয়। যে ক্যামেরা ইমেজ পিক্সেলগুলিতে গভীরতার অনুমান নেই সেগুলির আত্মবিশ্বাস শূন্য থাকে৷
সম্পূর্ণ গভীরতা API
  • একটি একক "মসৃণ" গভীরতার চিত্র যাতে প্রতিটি পিক্সেলের জন্য একটি গভীরতার অনুমান থাকে৷
  • এই API এর সাথে কোন আস্থার চিত্র প্রদান করা হয় না।
N/A

আত্মবিশ্বাসের ছবি

Raw Depth API দ্বারা প্রত্যাবর্তিত আত্মবিশ্বাসের চিত্রগুলিতে, লাইটার পিক্সেলগুলির আত্মবিশ্বাসের মান বেশি, সাদা পিক্সেলগুলি সম্পূর্ণ আত্মবিশ্বাসের প্রতিনিধিত্ব করে এবং কালো পিক্সেলগুলি অনাস্থার প্রতিনিধিত্ব করে৷ সাধারনত, ক্যামেরা ইমেজে যেসব অঞ্চলে বেশি টেক্সচার আছে, যেমন একটি গাছ, সেসব অঞ্চলের তুলনায় বেশি কাঁচা গভীরতার আত্মবিশ্বাস থাকবে, যেমন একটি ফাঁকা দেয়াল। কোন টেক্সচার ছাড়া পৃষ্ঠ সাধারণত শূন্য একটি আত্মবিশ্বাস ফলন.

যদি টার্গেট ডিভাইসে একটি সমর্থিত হার্ডওয়্যার গভীরতা সেন্সর থাকে, তাহলে ক্যামেরার যথেষ্ট কাছাকাছি ইমেজের জায়গাগুলিতে আত্মবিশ্বাস সম্ভবত উচ্চতর হবে, এমনকি টেক্সচারহীন পৃষ্ঠগুলিতেও।

খরচ গণনা

Raw Depth API-এর কম্পিউট খরচ সম্পূর্ণ ডেপথ API-এর কম্পিউট খরচের প্রায় অর্ধেক।

ব্যবহারের ক্ষেত্রে

Raw Depth API-এর সাহায্যে, আপনি গভীরতার ছবি পেতে পারেন যা দৃশ্যের বস্তুর জ্যামিতির আরও বিস্তারিত উপস্থাপনা প্রদান করে। AR অভিজ্ঞতা তৈরি করার সময় কাঁচা গভীরতার ডেটা উপযোগী হতে পারে যেখানে জ্যামিতি-বোঝার কাজগুলির জন্য গভীরতার নির্ভুলতা এবং বিস্তারিত প্রয়োজন। কিছু ব্যবহারের ক্ষেত্রে অন্তর্ভুক্ত:

  • 3D পুনর্গঠন
  • মাপা
  • আকৃতি সনাক্তকরণ

পূর্বশর্ত

এগিয়ে যাওয়ার আগে নিশ্চিত করুন যে আপনি মৌলিক AR ধারণা এবং কীভাবে একটি ARCore সেশন কনফিগার করবেন তা বুঝতে পেরেছেন।

গভীরতা সক্ষম করুন

একটি নতুন ARCore সেশনে , ব্যবহারকারীর ডিভাইস Depth সমর্থন করে কিনা তা পরীক্ষা করুন৷ প্রসেসিং পাওয়ার সীমাবদ্ধতার কারণে সমস্ত ARCore-সামঞ্জস্যপূর্ণ ডিভাইস ডেপথ API সমর্থন করে না। সম্পদ সংরক্ষণ করতে, ARCore-এ ডিফল্টরূপে গভীরতা অক্ষম করা হয়। আপনার অ্যাপ ডেপথ এপিআই ব্যবহার করতে গভীরতা মোড সক্ষম করুন।

var occlusionManager = // Typically acquired from the Camera game object.

// Check whether the user's device supports the Depth API.
if (occlusionManager.descriptor?.supportsEnvironmentDepthImage)
{
    // If depth mode is available on the user's device, perform
    // the steps you want here.
}

সর্বশেষ কাঁচা গভীরতা ইমেজ অর্জন

AROcclusionManager.TryAcquireEnvironmentDepthCpuImage() কে কল করুন এবং CPU-তে সর্বশেষ কাঁচা গভীরতার চিত্র অর্জন করতে AROcclusionManager.environmentDepthTemporalSmoothingRequested ব্যবহার করুন।

সর্বশেষ কাঁচা গভীরতা আত্মবিশ্বাস ইমেজ অর্জন

AROcclusionManager.TryAcquireEnvironmentDepthConfidenceCpuImage() কে কল করুন এবং CPU-তে আত্মবিশ্বাসের চিত্র অর্জন করতে AROcclusionManager.environmentDepthTemporalSmoothingRequested ব্যবহার করুন।

// Attempt to get the latest environment depth image.
if (occlusionManager && occlusionManager.TryAcquireEnvironmentDepthConfidenceCpuImage(out XRCpuImage image))
{
    using (image)
    {
        UpdateRawImage(m_RawEnvironmentDepthConfidenceImage, image);
    }
}
else
{
    m_RawEnvironmentDepthConfidenceImage.enabled = false;
}