# Find light grey circle in greyscale image

3 Ansichten (letzte 30 Tage)
Benedikt Thomann am 2 Dez. 2022
Bearbeitet: Stephan am 8 Dez. 2022
Dear community,
I have a problem finding a circle in a greyscale image.
The image was taken with an X-ray scanner, through a circular shaped aperture and contains a ball/circle, approximately in the center of this aperture. I want to find the aperture circle and the (smaller) circle for the ball. I know the approximate radius, so I am specifying a range of radii to look for (since I have other circles in the image that I do not want to find).
The reason I am doing this is to exactly find the centers of these circles in order to evaluate whether the ball was placed at the exact center of the imager. I have a working code that does so, see example below.
Now to the problem:
I now have other images in which the images ball is of a different material and hence not as dark in the image. Unfortunately, I can't find a way to make my current code work for this "light grey" circle.
info = dicominfo('Gantry3-003.dcm');
SID = info.RTImageSID;
pxlsize_mm = info.ImagePlanePixelSpacing(1) /SID *SSD;
angle_Gantry = round(info.GantryAngle);
angle_Colli = round(info.BeamLimitingDeviceAngle);
angle_Table = round(info.PatientSupportAngle);
h = figure('Position', [2000, 100, 1400, 1000]);
subplot(1,2,1)
imshow(img,[]);
xlim([320,960]);
ylim([320,960]);
subplot(1,2,2)
imshow(img_BW);
xlim([320,960]);
ylim([320,960]);
'ObjectPolarity','dark', 'Sensitivity',0.8);
'ObjectPolarity','bright','Sensitivity',0.8);
numcirclesDark = length(centersDark)/2;
numcirclesBright = length(centersBright)/2;
This is the result (original image on the left, processed image with found circles on the right):
For the new image with a lighter colored ball in the center, it looks like this - I don't find this circle:
Unfortunately, I cannot attach dicom images, so I attached the images given above.
Any help would be greatly appreciated!
Also: If there is a simpler or better solution for my problem in general - feel free to comment! ;)
Thank you very much,
Benedikt
##### 1 KommentarKeine anzeigenKeine ausblenden
Benedikt Thomann am 2 Dez. 2022
I forgot to mention:
I realize that my problem stems from binarizing the image. I am binarizing the image so that it is easier to find the circles. If there is any other/better way, any help would be welcome!

Melden Sie sich an, um zu kommentieren.

### Akzeptierte Antwort

Stephan am 2 Dez. 2022
Bearbeitet: Stephan am 2 Dez. 2022
Maybe this is an approach:
img2 = img;
img2(img2<240) = 0;
imshowpair(img,img2,'montage')
result is attached. The value 240 appears to work good - 235 gives similar results. You should play with the values. Once you have a suitable value, you can use imfindcircles as always.
##### 7 Kommentare6 ältere Kommentare anzeigen6 ältere Kommentare ausblenden
Stephan am 7 Dez. 2022
Bearbeitet: Stephan am 8 Dez. 2022
@Image Analyst Im also interested in an alternative - probably more exact solution - to this.

Melden Sie sich an, um zu kommentieren.

### Kategorien

Find more on DICOM Format in Help Center and File Exchange

R2020b

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by