MATLAB: Trouble with imfindcircles not recognizing circle

imfindcirclesradius

I've attached the images I'm trying to find the circle radius for.
The attached image (.fig and .jpeg form) is after some pre-proccessing before I use imfindcircles:
I = imread(['/Users/almccutc/Downloads/ice.jpeg']);
i=I(:,:,1);
%show image
bw = imbinarize(i);
bw = bwareaopen(bw,100000);
se = strel('disk',2);
bw = imclose(bw,se);
i = imfill(bw,'holes');
imshow(i)
My imfindcircles code, it keeps not recognizing the circle:
clc
Rmin = 975;
Rmax = 1000;
[center, radii] = imfindcircles(i,[Rmin Rmax],'ObjectPolarity','bright','Sensitivity',0.99);
Rmin = 1000;
Rmax = 1025;
[center2, radii2] = imfindcircles(i,[Rmin Rmax],'ObjectPolarity','bright','Sensitivity',0.99);
Rmin = 1025;
Rmax = 1050;
[center3, radii3] = imfindcircles(i,[Rmin Rmax],'ObjectPolarity','bright','Sensitivity',0.99);
Rmin = 1050;
Rmax = 1075;
[center4, radii4] = imfindcircles(i,[Rmin Rmax],'ObjectPolarity','bright','Sensitivity',0.99);
Rmin = 1075;
Rmax = 1100;
[center5, radii5] = imfindcircles(i,[Rmin Rmax],'ObjectPolarity','bright','Sensitivity',0.99);
Rmin = 1100;
Rmax = 1125;
[center6, radii6] = imfindcircles(i,[Rmin Rmax],'ObjectPolarity','bright','Sensitivity',0.99);

Best Answer

I figured out the sensitivity wasn't high enough. 0.9987 worked well to obtain the circle radius and center. Part of the reason it likely needs to be so high is because imbinarize converts the image to a 0 or 1 intensity level.
Related Question