从matlab中的图像中去除同心圆

Removing concentric circles from image in matlab

我有我正在尝试处理的 OCT 成像数据:

我想删除所有以图像中心的同心圆为界的点。到目前为止,我是手动指定最大圆的半径并将圆区域内的所有点设置为黑色。这些圆圈大小可能会因图像源和伪影而异,因此我正在尝试找到一种更理想的方法来执行此删除操作。

我原本以为我可以使用 imfindcircles() 来识别这些圆圈,但是无论指定的半径如何,该算法都无法检测到其中的大部分圆圈。依赖连接组件(bwareaopen、regionprops)的方法也失败,因为同心圆似乎连接到更大的结构。

我的一个想法是我可以转换为极坐标,因为同心圆的中心将始终位于图像的中心,从而生成此图像:

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

这应该更容易处理。有人有什么想法吗?

水平累积所有图像列。然后垂直剖面将使您更容易找到圆半径(它们显示为峰值)。知道了外半径,就可以从原始图像中提取出一个圆形的ROI。