imfindcircles doesn't work
조회 수: 2 (최근 30일)
이전 댓글 표시
The image looks normal with range from 0 to 4096:

[x,y] = size(AA1); % output x and y both 512
Obviously radius range is [x/4 x/2].
However, both of below:
[centers, radii, metric] = imfindcircles(AA1,[fix(x/4) fix(x/2)],'ObjectPolarity','bright')
[centers, radii, metric] = imfindcircles(AA1,[fix(x/4) fix(x/2)])
output:
centers = []
radii = []
metric = []
changed to [x/6 x/2] doesn't help.
Thank you for finding the issue!
댓글 수: 3
Image Analyst
2025년 6월 30일
If you have any more questions, then attach your image and code to read it in with the paperclip icon after you read this:
채택된 답변
Mathieu NOE
2025년 6월 30일
hello
let's try with your image
AA = imread('circle.png');
AA = rgb2gray(AA);
BW = imbinarize(AA);
[B,L,N] = bwboundaries(BW);
whos
figure;imshow(BW)
hold on
%Display object boundaries in red and hole boundaries in green.
N
for k=1:length(B),
boundary = B{k};
if(k > N)
plot(boundary(:,2), boundary(:,1), 'g','LineWidth',2);
else
plot(boundary(:,2), boundary(:,1), 'r','LineWidth',2);
end
end
[m,n] =size(BW);
[centers,radii]=imfindcircles(BW,round([n/4,n/2]))
댓글 수: 3
Image Analyst
2025년 7월 4일
help visboundaries
Mathieu NOE
2025년 7월 6일
hello @Image Analyst
tx for the info, I'll try to remember
as you already know , I am not truly an image expert , that's not my every day job
I'm sometimes trying to improve my basic skills in that field
don't be surprised if my answers are still a bit "basic"
추가 답변 (1개)
Matt J
2025년 6월 30일
이동: Image Analyst
2025년 7월 4일
I can't reproduce the problem you claim to have with a binarized disk. That case is pretty well-handled by imfindcircles:
n=300;
[x,y]=deal(1:n);
mask=hypot(x-mean(x),y'-mean(y))<=n/3;
[centers,radii]=imfindcircles(mask,[n/4,n/2])
imshow(mask,[])
viscircles(centers,radii);
댓글 수: 0
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!