0

У меня есть данные изображения ОКТА, которые я пытаюсь манипулировать:Удаления концентрических кругов от изображения в MATLAB

enter image description here

Я хотел бы, чтобы удалить все точки, ограниченные концентрическими кругами в центре изображения. До этого момента я вручную указывал радиус для наибольшего круга и устанавливал все точки в области круга на черный. Эти размеры окружности могут меняться в зависимости от источника изображения и из-за артефактов, поэтому я пытаюсь найти более идеальный способ выполнить это удаление.

Первоначально я думал, что могу использовать imfindcircles() для идентификации этих кругов, но алгоритм не обнаруживает большинство из них, независимо от указанных радиусов. Методы, основанные на подключенных компонентах (bwareaopen, regionprops), также терпят неудачу, поскольку концентрические круги, по-видимому, связаны с большей структурой.

Одна мысль у меня было, что я мог бы преобразовать в полярных координатах, в центре концентрических кругов всегда будет в центре изображения, производя это изображение:

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

enter image description here

Это должно быть значительно проще в обработке. У кого-нибудь есть идеи?

+0

Вы поместите неправильные изображения. –

+0

Ну, это неловко, исправлено – Hosty

+0

Декартово-полярное преобразование - не очень хорошая идея. Его нужно выполнять с помощью полюса, расположенного в центре круга, о котором вы не знаете. –

ответ

0

Накопите все столбцы изображений по горизонтали. Тогда вертикальный профиль позволит вам легче найти радиусы круга (они появляются как пики). Зная внешний радиус, вы можете извлечь круговой ROI из исходного изображения.

enter image description here