I have many medical images with dcm file format. There are circles in the photos (6 circles but the sixth is too small to see). I want to calculate the radius of these circles very precisely. At least the radius of the first three or two circles I need. I use Hough transform for this. The results are not good for my purpose yet. How could I find these circles and their radius more precisely? The Images and my code are below.
clear,
close all,
imtool close all,
clc,
% I - raw image data
I = dicomread('193500.dcm');
% scale with [scale] = 1mm/Pixel
k = 253/1024;
% Wiener filter for noise reduction
I = wiener2(I,[6,6]);
% Optimizing the contrast
I = imadjust(I,[0.388 0.398]);
imshow(I)
% Check for circles
[centers, radii] = imfindcircles(I,[6 40],'ObjectPolarity','dark');
% representation of the circles
viscircles(centers, radii,'Color','b');
%
radii = sortrows(radii,'descend');
radii = k*radii;
radii(2:4)