ฉันมีภาพที่ดูเหมือนด้านล่าง:
ฉันพยายามหารัศมี (หรือเส้นผ่าศูนย์กลาง) ของวงกลม ฉันได้ลองใช้การแปลงแบบ Hough แบบวงกลม (ผ่านทาง matlab's imfindcircles(bw,[rmin rmax],'ObjectPolarity','bright')
) และโดยการปรับให้เหมาะกับรูปวงกลมหรือวงรี (ฟังก์ชั่นโฮมเมดที่ทำงานได้ดีสำหรับข้อมูลที่มีเสียงรบกวนน้อยดูด้านล่าง)
ฉันได้ลองประมวลผลภาพเพื่อให้ได้วงกลมที่ชัดเจนขึ้นเช่นดูด้านล่าง:
se = strel('disk', 2);
bw = imdilate(bw, se);
bw = bwareaopen(bw,100000);
bw = edge(bw);
อย่างไรก็ตามเมื่อฉันป้อนรูปภาพที่ถูกประมวลผลไปยังเทคนิคใด ๆ (การปรับ Hough และ circle \ ellipse) ทั้งคู่ไม่สามารถตรวจจับวงกลมในลักษณะที่เหมาะสมได้
นี่คือข้อมูลโค้ดของตัวค้นหาวงกลมที่ฉันเขียน (matlab) [row col] = find (bw); contour = bwtraceboundary (bw, แถว (1), col (1)], 'N', การเชื่อมต่อ, num_points);
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);
แนวทางอื่น ๆ จะได้รับการชื่นชม ...