আমার একটি চিত্র রয়েছে যা দেখতে নীচের মত দেখাচ্ছে:
আমি বৃত্তের ব্যাসার্ধ (বা ব্যাস) সন্ধান করার চেষ্টা করছি। আমি বিজ্ঞপ্তি হফ ট্রান্সফর্ম (ম্যাট্লাবের মাধ্যমে imfindcircles(bw,[rmin rmax],'ObjectPolarity','bright')
) ব্যবহার করার চেষ্টা করেছি , এবং একটি বৃত্ত বা উপবৃত্তের সাথে ফিট করে (ঘরে তৈরি ফাংশন যা কম গোলমাল সংক্রান্ত তথ্যের জন্য বেশ ভালভাবে কাজ করে, নীচে দেখুন)।
আমি একটি পরিষ্কার বৃত্ত পেতে কিছু চিত্র প্রক্রিয়াকরণের চেষ্টা করেছি, উদাহরণস্বরূপ, নীচে দেখুন:
se = strel('disk', 2);
bw = imdilate(bw, se);
bw = bwareaopen(bw,100000);
bw = edge(bw);
যাইহোক, আমি যখন প্রক্রিয়াজাত চিত্রটি হয় কৌশলগুলিতে ফিড করি (Hough এবং বৃত্ত ting উপবৃত্ত ফিটিং) তাদের উভয়ই একটি শালীন পদ্ধতিতে বৃত্তটি সনাক্ত করতে পরিচালনা করে না।
আমি যে বৃত্ত ফাইন্ডার লিখেছি তার একটি কোড স্নিপেট এখানে রয়েছে (মতলব) [সারি কোল] = সন্ধান (বিডব্লু); কনট্যুর = bwtraceboundary (বিডাব্লু, সারি (1), কল (1)], 'এন', সংযোগ, সংখ্যা_পয়েন্ট);
x = contour(:,2);
y = contour(:,1);
% solve for parameters a, b, and c in the least-squares sense by
% using the backslash operator
abc = [x y ones(length(x),1)] \ -(x.^2+y.^2);
a = abc(1); b = abc(2); c = abc(3);
% calculate the location of the center and the radius
xc = -a/2;
yc = -b/2;
radius = sqrt((xc^2+yc^2)-c);
বিকল্প পদ্ধতির প্রশংসা করা হবে ...