আপনার "চটকদার বস্তু" এর সীমানায় আরও কোণা রয়েছে, তাই এর জন্য একটি কোণ সনাক্তকারীকে টিউন করার জন্য একটি পদ্ধতিকে দেখা যায় ।
উদাহরণস্বরূপ, আমি একটি দূরত্ব-রূপান্তরিত চিত্রের কাঠামো টেনসরের (নীচে ম্যাথেমেটিক কোড) নির্ধারক গণনা করেছি:
হিস্টেরিসিসের সাথে বাইনারি করার ফলে এই চিত্রটি পাওয়া যায়, যা আপনার পছন্দের বিভাজন অ্যালগরিদমের জন্য একটি ভাল সূচনা পয়েন্ট হওয়া উচিত:
গাণিতিক কোড ( src
আপনার পোস্ট করা উত্স চিত্র)
প্রথমে, আমি ইনপুট চিত্রের একটি দূরত্বের রূপান্তর গণনা করি। এটি পুরো অবজেক্টের অঞ্চলে (কেবল সীমানার পরিবর্তে) বিপরীতে সৃষ্টি করে, তাই পুরো বস্তুটি সনাক্ত করা যায়।
dist = ImageData[DistanceTransform[src]];
পরবর্তী আমি কাঠামো টেনসারের উপাদানগুলি প্রস্তুত করি । গাউসি ডেরিভেটিভগুলির জন্য ফিল্টার আকার যদি 5, উইন্ডোর আকার 20 হয়।
gx = GaussianFilter[dist, 5, {1, 0}];
gy = GaussianFilter[dist, 5, {0, 1}];
gx2 = GaussianFilter[gx^2, 20];
gxy = GaussianFilter[gx*gy, 20];
gy2 = GaussianFilter[gy^2, 20];
প্রতিটি পিক্সেল এ কোণার ফিল্টার গণনা করতে, আমি কেবল এগুলি কাঠামোর টেন্সরের প্রতীকী নির্ধারকটিতে প্লাগ করি:
corners = Det[{{dx2, dxy}, {dxy, dy2}}] /. {dx2 -> gx2, dxy -> gxy, dy2 -> gy2};
যা মূলত:
corners = gx2 * gy2 - gxy * gxy;
এটিকে কোনও চিত্রে রূপান্তর করা এবং এটি ০.১ রেঞ্জের মধ্যে স্কেল করা উপরের কোণার সনাক্তকারী চিত্রটি দেয়।
অবশেষে, ডান প্রান্তিকের সাথে এটি বাইনারি করা চূড়ান্ত, বাইনারি চিত্র দেয়:
MorphologicalBinarize[Image[corners], {0.025, 0.1}]