# Find light grey circle in greyscale image

조회 수: 4 (최근 30일)
Benedikt Thomann . 2022년 12월 2일
편집: Stephan . 2022년 12월 8일
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없음 표시없음 숨기기
Benedikt Thomann 2022년 12월 2일
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!

댓글을 달려면 로그인하십시오.

### 채택된 답변

Stephan 2022년 12월 2일
편집: Stephan 님. 2022년 12월 2일
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이전 댓글 6개 표시이전 댓글 6개 숨기기
Stephan 2022년 12월 7일
편집: Stephan 님. 2022년 12월 8일
@Image Analyst Im also interested in an alternative - probably more exact solution - to this.

댓글을 달려면 로그인하십시오.

### 카테고리

Help CenterFile Exchange에서 DICOM Format에 대해 자세히 알아보기

R2020b

### Community Treasure Hunt

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

Start Hunting!

Translated by