সুচিপত্র:

রাস্পবেরি পাই বস্তু গণনা: 5 টি ধাপ
রাস্পবেরি পাই বস্তু গণনা: 5 টি ধাপ

ভিডিও: রাস্পবেরি পাই বস্তু গণনা: 5 টি ধাপ

ভিডিও: রাস্পবেরি পাই বস্তু গণনা: 5 টি ধাপ
ভিডিও: পড়া মনে রাখার ৫ বৈজ্ঞানিক উপায় 2024, জুন
Anonim
রাস্পবেরি পাই বস্তু গণনা
রাস্পবেরি পাই বস্তু গণনা

কম্পিউটার ভিশন, নিlessসন্দেহে, একটি চমত্কার জিনিস! এটি ব্যবহার করে, একটি কম্পিউটার "দেখতে" এবং চারপাশের পরিবেশকে আরও ভালভাবে অনুভব করার ক্ষমতা অর্জন করে, যা জটিল, দরকারী এবং শীতল অ্যাপ্লিকেশনগুলির বিকাশের অনুমতি দেয়। কম্পিউটার সনাক্তকরণ এবং স্বীকৃতি, অবজেক্ট ট্র্যাকিং এবং অবজেক্ট ডিটেকশনের মতো অ্যাপ্লিকেশনগুলি আমাদের দৈনন্দিন ক্রিয়াকলাপে আরও বেশি করে উপস্থিত, কম্পিউটার ভিশন অ্যাডভান্সের জন্য ধন্যবাদ।

কম্পিউটার ভিশন ফ্রেমওয়ার্ক এবং টুলগুলি কতটা উন্নত এবং অ্যাক্সেসযোগ্য তা বিবেচনা করে, এই নিবন্ধে বর্ণিত অ্যাপ্লিকেশনটি ভালভাবে খাপ খায়: সরল রাস্পবেরি পিআই এবং ওপেনসিভি নামে একটি খরচ-মুক্ত এবং ওপেন-সোর্স কম্পিউটার ভিশন ফ্রেমওয়ার্ক ব্যবহার করে চলাফেরায় বস্তু গণনা করা, আরো সঠিকভাবে কতটা বস্তু একটি নির্দিষ্ট পর্যবেক্ষণ অঞ্চলের ভিতরে এবং বাইরে যায়।

ধাপ 1: গভীরতর হওয়া: একটি চিত্র প্রবাহে বস্তুর চলাচল কীভাবে সনাক্ত করা যায়?

গভীরতর হচ্ছে: কিভাবে একটি ছবি প্রবাহে বস্তুর গতিবিধি সনাক্ত করা যায়?
গভীরতর হচ্ছে: কিভাবে একটি ছবি প্রবাহে বস্তুর গতিবিধি সনাক্ত করা যায়?

এখন ইমেজ প্রসেসিং স্টাফের গভীরে যাওয়ার সময় এসেছে:

কিভাবে কিছু ওয়েবক্যাম স্ট্রিম ইমেজ পেতে এবং সনাক্ত করা যায় যে কিছু সেখানে সরানো হয়েছে।

এটি পাঁচটি ধাপে গঠিত:

ধাপ 1: বস্তুর চলাফেরায় হাইলাইট করা

শাস্ত্রীয় পদার্থবিজ্ঞানে যেমন সংজ্ঞায়িত করা হয়েছে, কোন কিছু নড়াচড়া করছে বা স্থির আছে কিনা তা বোঝার জন্য একটি রেফারেন্স প্রয়োজন। এখানে, কিছু সরানো হয়েছে তা নির্ধারণ করার জন্য, এটি বেশ একই রকম: প্রতিটি একক ওয়েবক্যাম স্ট্রিম ক্যাপচার ফ্রেমকে একটি রেফারেন্স ফ্রেমের সাথে তুলনা করা হবে। যদি কিছু ভিন্ন হয়, কিছু সরানো হয়েছে। এটা যেমন সহজ শোনাচ্ছে।

এই রেফারেন্স ফ্রেমটি সবচেয়ে নিখুঁত অবস্থায় ক্যাপচার করতে হবে (উদাহরণস্বরূপ, কিছুই চলমান নয়)। ইমেজ প্রসেসিং এর জগতে, একটি ক্যাপচার করা ফ্রেম এবং একটি রেফারেন্স ফ্রেমের মধ্যে এই তুলনাটি ব্যাকগ্রাউন্ড বিয়োগ নামক একটি টেকনিক নিয়ে গঠিত। ব্যাকগ্রাউন্ড সাবট্রেশন ক্যাপচার করা ফ্রেম এবং রেফারেন্স ফ্রেম থেকে পিক্সেল-টু-পিক্সেল রঙের তথ্য আক্ষরিকভাবে বিয়োগ করে থাকে। সুতরাং, এই প্রসেস থেকে প্রাপ্ত ইমেজটি এই দুই ফ্রেমের মধ্যে কি আলাদা (বা, কি সরানো হয়েছে / কি মুভমেন্ট পেয়েছে) শুধুমাত্র আরও বিশদ বিবরণ সহ হাইলাইট / দেখাবে এবং বাকি সবকিছু ইমেজে কালো হবে (একটি ধূসরতে শূন্য মানের রঙ -স্কেল পিক্সেল)। গুরুত্বপূর্ণ: ক্যাপচার করা ওয়েবক্যামের ইমেজের লাইটিং কনডিকশন এবং কোয়ালিটি (ক্যাপচার সেন্সরের কোয়ালিটির কারণে) ফ্রেম থেকে ফ্রেমে ভিন্নতা থাকতে পারে। এটি বোঝায় যে রেফারেন্স ফ্রেম থেকে "সমান অংশ" এবং অন্য ফ্রেমগুলি ব্যাকগ্রাউন্ড বিয়োগের পরে পুরো কালো হবে না। এই আচরণের সত্ত্বেও, এই প্রকল্পে পরবর্তী পদক্ষেপগুলিতে চিত্র প্রক্রিয়াকরণের কোনও গুরুতর পরিণতি নেই।

ইমেজ প্রসেসিং টাইম কমানোর জন্য, ব্যাকগ্রাউন্ড সাবট্রেশন করার আগে, ক্যাপচার করা ফ্রেম এবং রেফারেন্স ফ্রেম একটি ধূসর স্কেলের ছবিতে রূপান্তরিত হয়। কিন্তু কেন? এটি একটি কম্পিউটিং দক্ষতা সমস্যা: একটি ছবি যা একাধিক রঙ উপস্থাপন করে (রঙের ছবি) প্রতি পিক্সেল তিনটি তথ্য রয়েছে: লাল, নীল এবং সবুজ রঙের উপাদান (পুরানো কিন্তু সোনার আরজিবি মান)। সুতরাং, matematically, প্রতিটি পিক্সেল একটি তিনটি মান অ্যারে হিসাবে সংজ্ঞায়িত করা যেতে পারে, প্রতিটি একটি রঙ উপাদান প্রতিনিধিত্ব করে। অতএব, এটি পুরো ছবিতে প্রসারিত করে, চূড়ান্ত চিত্রটি আসলে তিনটি চিত্র উপাদানগুলির মিশ্রণ হবে: লাল, নীল এবং সবুজ চিত্র উপাদান।

এটি প্রক্রিয়া করার জন্য, অনেক কাজ প্রয়োজন! যাইহোক, ধূসর স্কেলের চিত্রগুলিতে, প্রতিটি পিক্সেলের একটি মাত্র রঙের তথ্য রয়েছে। সুতরাং, ধূসর স্কেল চিত্রের তুলনায় একটি রঙিন চিত্রের প্রক্রিয়াকরণ তিনগুণ ধীর (কমপক্ষে তিনবার, কোন কৌশল জড়িত তা নির্ভর করে)। এবং আরও আছে: কিছু উদ্দেশ্যে (এই প্রকল্পের মতো), সমস্ত রঙ প্রক্রিয়া করা আবশ্যক বা গুরুত্বপূর্ণ নয়। অতএব, আমরা এই সিদ্ধান্তে এসেছি: ইমেজ প্রক্রিয়াকরণের উদ্দেশ্যে ধূসর-স্কেল ইমেজ ব্যবহার অত্যন্ত সুপারিশ করা হয়। ব্যাকগ্রাউন্ড সাবট্রেশনের পরে, গাউসিয়ান ব্লার ফিল্টার প্রয়োগ করা প্রয়োজন।

গাউসিয়ান ব্লার ফিল্টারটি ব্যাকগ্রাউন্ড বিয়োগ করা ছবির উপর প্রয়োগ করা চলমান সনাক্তকৃত বস্তুর সমস্ত রূপকে মসৃণ করে। নিশ্চিতভাবে, ইমেজ প্রক্রিয়াকরণের পরবর্তী ধাপে এটি সহায়ক হবে।

ধাপ 2: বাইনারাইজেশন

বাইনারাইজেশন
বাইনারাইজেশন

ইমেজ প্রক্রিয়াকরণের বেশিরভাগ ক্ষেত্রে, একটি ছবিতে হাইলাইট অবজেক্টস / ক্যারেক্টারটিক্সের পরে বাইনারাইজেশন প্রায় একটি বাধ্যতামূলক পদক্ষেপ। কারণ: একটি বাইনারি ইমেজে, প্রতিটি পিক্সেল রঙ শুধুমাত্র দুটি মান ধরে নিতে পারে: 0x00 (কালো) অথবা 0xFF (সাদা)। এটি ইমেজ প্রসেসিংকে অনেক সাহায্য করে যাতে পরবর্তী ধাপে ইমেজ প্রসেসিং কৌশল প্রয়োগ করার জন্য এমনকি কম "কম্পিউটিং পাওয়ার" প্রয়োজন হয়। ধূসর-স্কেল চিত্রের প্রতিটি পিক্সেল রঙকে একটি নির্দিষ্ট প্রান্তিকের সাথে তুলনা করে বাইনারাইজেশন করা যেতে পারে। যদি পিক্সেল রঙের মান থ্রেশহোল্ডের চেয়ে বেশি হয়, এই পিক্সেল রঙটি সাদা মান (0xFF) ধরে নেবে, এবং যদি পিক্সেল রঙের মান থ্রেশহোল্ডের চেয়ে কম হয়, তাহলে এই পিক্সেল রঙটি কালো মান (0x00) ধরে নেবে। দুর্ভাগ্যবশত, থ্রেশহোল্ড ভ্যালুর পছন্দ করা এত সহজ নয়। এটি পরিবেশের কারণের উপর নির্ভর করে, যেমন আলোর অবস্থা। একটি থ্রেশহোল্ড মান একটি ভুল পছন্দ আরও সব ধাপ নষ্ট করতে পারে। অতএব, আমি দৃ strongly়ভাবে সুপারিশ করছি যে আপনি কোনও পদক্ষেপ নেওয়ার আগে আপনার ক্ষেত্রে প্রকল্পের ম্যানুয়ালি একটি থ্রেশহোল্ড সামঞ্জস্য করুন। এই থ্রেশহোল্ড মানটি অবশ্যই নিশ্চিত করতে হবে যে চলমান বস্তুটি বাইনারি ইমেজে দেখায়। আমার ক্ষেত্রে, থ্রেশহোল্ডের পর্যাপ্ত পছন্দের পরে, আপনি চিত্র 5 এ যা দেখছেন তার ফলাফল।

চিত্র 5 - বাইনারি ইমেজ

ধাপ 3: প্রসারিত করুন

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

ধাপ 4: কনট্যুরের জন্য অনুসন্ধান (এবং এর সেন্ট্রয়েড)

কনট্যুরের জন্য অনুসন্ধান (এবং এর সেন্ট্রয়েড)
কনট্যুরের জন্য অনুসন্ধান (এবং এর সেন্ট্রয়েড)

এই মুহুর্তে, আমাদের কাছে হাইলাইট করা বস্তু আছে, এর ভিতরে কোন ছিদ্র নেই এবং পরবর্তী কি আছে তার জন্য প্রস্তুত: কনট্যুর (এবং এর সেন্ট্রয়েড) অনুসন্ধান। ওপেনসিভিতে স্বয়ংক্রিয়ভাবে কনট্যুর সনাক্ত করার জন্য রিসোর্স আছে, কিন্তু সনাক্তকৃত কাউন্টারগুলি বুদ্ধিমানের সাথে বেছে নেওয়া উচিত (শুধুমাত্র আসল বস্তু বা বস্তু বাছাই করার জন্য)। সুতরাং, কনট্যুর সনাক্ত করার মানদণ্ড হল বস্তুর ক্ষেত্রফল, যা পিক্সেল² এ পরিমাপ করা হয়। যদি একটি কনট্যুরের একটি সীমার চেয়ে বেশি এলাকা থাকে (সফটওয়্যারে কনফিগার করা থাকে), তাহলে এটি গণনা করার জন্য একটি বাস্তব বস্তু হিসাবে বিবেচিত হতে হবে। এই এলাকার সীমা/মানদণ্ডের পছন্দ খুবই গুরুত্বপূর্ণ, এবং এখানে একটি খারাপ পছন্দ মানে ভুল গণনা। আপনি কিছু এলাকা মান সীমা মান চেষ্টা করতে হবে এবং আপনার ব্যবহারের জন্য কি ভাল ফিট করে তা পরীক্ষা করুন। চিন্তা করবেন না, এই সীমা খুঁজে পাওয়া / সামঞ্জস্য করা এতটা সহজ নয়। একবার চিত্রের সমস্ত বস্তু বাছাই করা হলে, পরবর্তী ধাপে এটির উপর একটি রেটঙ্গল আঁকতে হবে (এই রেটঙ্গলে এর ভিতরে একটি সম্পূর্ণ সনাক্ত বস্তু থাকতে হবে)। এবং এই আয়তক্ষেত্রের কেন্দ্র হল …. বস্তু সেন্ট্রয়েড! আপনি হয়তো ভাবছেন "এই সেন্ট্রয়েডের সাথে বড় ব্যাপার কি?", তাই না? আপনার উত্তর এখানে: বস্তুর আকার কত বড় বা কেমন তা বিবেচ্য নয়, এর গতিবিধি সেন্ট্রয়েডের সমান। অন্য কথায়: সেন্ট্রয়েড নামক এই সরল বিন্দুটি বস্তুর সমস্ত গতিবিধি প্রতিনিধিত্ব করে। এটা এখন গণনা খুব সহজ করে তোলে, তাই না? নীচের চিত্রটি দেখুন (চিত্র 6), যেখানে বস্তুর কেন্দ্রবিন্দু একটি কালো বিন্দু হিসাবে উপস্থাপিত হয়।

ধাপ 5: Centorid এর আন্দোলন এবং বস্তু গণনা

গ্র্যান্ড ফিনালে: বস্তুর সেন্ট্রয়েড স্থানাঙ্কগুলিকে প্রবেশ এবং প্রস্থান রেখার স্থানাঙ্কগুলির সাথে তুলনা করুন এবং পূর্বে বর্ণিত গণনা অ্যালগরিদম প্রয়োগ করুন। এবং চলমান বস্তুর গণনা হবে!

চূড়ান্ত ফলাফল যেমন এই পোস্টের একেবারে শুরুতে দেখানো হয়েছে, এখানে প্রকল্পটি কাজ করছে:

প্রস্তাবিত: