matlabimage-segmentationpolar-coordinatesconnected-componentstomography-reconstruction

Removing concentric circles from image in matlab


I have OCT imaging data which I am trying to manipulate:

enter image description here

I would like to remove all points bounded by the concentric circles at the center of the image. Up to this point, I was manually specifying a radius for the largest circle and setting all points within the area of the circle to black. These circle sizes can vary depending on the image source and due to artifacting however, so I am trying to find a more ideal way to perform this removal.

I originally thought I could use imfindcircles() to identify these circles, but the algorithm is failing to detect most of them regardless of specified radii. Methods relying on connected components (bwareaopen, regionprops) also fail as the concentric circles appear to be connected to the larger structure.

One thought I had was that I could convert to polar coordinates, as the center of the concentric circles will always be at the center of the image, producing this image:

width = 512
greyImg = ImToPolar(rgb2gray(rgb_img), 0, 1, width, width);

enter image description here

This should be significantly easier to process. Does anyone have any ideas?


Solution

  • Accumulate all image columns horizontally. Then the vertical profile will allow you to find the circle radii more easily (they appear as peaks). Knowing the external radius, you can extract a circular ROI from the original image.

    enter image description here