Tôi có một hình ảnh trông giống như hình dưới đây:
Tôi đang cố gắng tìm bán kính (hoặc đường kính) của vòng tròn. Tôi đã thử sử dụng biến đổi Hough tròn (thông qua matlab imfindcircles(bw,[rmin rmax],'ObjectPolarity','bright')
) và bằng cách khớp với hình tròn hoặc hình elip (chức năng tự làm tại nhà hoạt động khá tốt cho dữ liệu ít nhiễu hơn, xem bên dưới).
Tôi cũng đã thử xử lý một số hình ảnh để có được một vòng tròn rõ ràng hơn, ví dụ, xem bên dưới:
se = strel('disk', 2);
bw = imdilate(bw, se);
bw = bwareaopen(bw,100000);
bw = edge(bw);
Tuy nhiên, khi tôi cung cấp hình ảnh được xử lý cho cả hai kỹ thuật (khớp Hough và circle \ ellipse), cả hai đều không thể phát hiện ra vòng tròn một cách tử tế.
Đây là đoạn mã của trình tìm vòng tròn tôi đã viết (matlab) [row col] = find (bw); contour = bwtraceboundary (bw, hàng (1), col (1)], 'N', kết nối, num_point);
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);
Phương pháp thay thế sẽ được đánh giá cao ...