বিভিন্ন উপাদান সনাক্ত করা হচ্ছে:
আপনি যদি বিভিন্ন উপাদান সনাক্ত করার চেষ্টা করছেন, তবে সংশ্লেষ সনাক্তকরণের চেয়ে এগুলি করার জন্য সম্ভবত অন্যান্য পদ্ধতি রয়েছে। এখানে গাণিতিকের একটি উদাহরণ। প্রসারণের পরে একটি ক্ষয় সনাক্তকরণের আগে দ্বিতীয় উপাদানটির ফাঁক বন্ধ করতে ব্যবহৃত হয় (যদি আপনি এটি না করেন তবে এটি এটি সনাক্ত করবে না)।
img = Binarize@Import["http://i.stack.imgur.com/yqDyu.png"];
Colorize[MorphologicalComponents[Dilation[Erosion[img,1],1]]]
নীচের বাম দিকে চিত্রটি অপূর্ণ বস্তু সনাক্তকরণ (ফাঁক বন্ধ না করে) এবং ডানদিকে দেখায় সঠিক সনাক্তকরণ (উপরের কোডটি চালানো) দেখায়।
বিভিন্ন রূপটি সনাক্ত করা:
তবে, যদি আপনি সত্যিই কেবল রূপকে আলাদা করতে চান তবে এখানে একটি উদাহরণ। ক্ষরণ এবং প্রসারণটি ফাঁক বন্ধ করতে পূর্বের মতো সঞ্চালিত হয় এবং ফলস্বরূপ চিত্রটি একটি ক্যানি এজ ডিটেক্টর দিয়ে চালানো হয়। আমি ডিফল্ট বিকল্পগুলি স্পষ্ট করে দিয়েছি, যাতে আপনি কী ব্যবহার করছেন তা দেখতে পান।
img2 = EdgeDetect[Dilation[Erosion[img, 1], 1], Method -> "Canny"]
এটি আপনাকে অভ্যন্তরীণ এবং বাইরের প্রান্ত উভয়ই দেবে (নীচে বাম দিকে চিত্র দেখুন), যেহেতু পিক্সেলের প্রস্থটি চারপাশের 1 এর চেয়ে বেশি। পারফরম্যান্স হ্রাস হওয়ার সাথে সাথে এটি আরও পাতলা করার চেষ্টা করার মতো ভাগ্য আমি পাইনি (আপনার অন্যান্য চিত্রগুলির জন্য আলাদা হতে পারে)। অভ্যন্তরীণ রূপগুলি আপনি যা চান তা হ'ল এবং বাহ্যিক কনট্যুরটি 4 টি উপাদানগুলির সম্মিলিত কনট্যুর। এখন আমাদের যা করতে হবে তা হ'ল বাইরেরতমটি দিয়ে:
SelectComponents[img2, "EnclosingComponentCount", # > 0 &]
যা আপনাকে কেবল অভ্যন্তরীণ রূপগুলি দেয় (নীচে ডানদিকে দেখুন)। অন্য কথায় এটি কমপক্ষে অন্য একটি কনট্যুর দ্বারা আবদ্ধ এমন কনট্যুরগুলি কেবল চয়ন করে, যা স্বয়ংক্রিয়ভাবে বাইরেরতমটিকে অযোগ্য করে তোলে। আমি ওপেনসিভিতে এই আদেশগুলি / অপারেশনগুলির সমতুল্য জানি না।
নোট করুন যে চিত্রের আপাত বিরতিগুলি ছোট আকারে জেপিগ সংরক্ষণ করার কারণে হয়েছে। এটি আমার পর্দায় সেভাবে দেখায় না।