У меня есть данные изображения ОКТА, которые я пытаюсь манипулировать:Удаления концентрических кругов от изображения в MATLAB
Я хотел бы, чтобы удалить все точки, ограниченные концентрическими кругами в центре изображения. До этого момента я вручную указывал радиус для наибольшего круга и устанавливал все точки в области круга на черный. Эти размеры окружности могут меняться в зависимости от источника изображения и из-за артефактов, поэтому я пытаюсь найти более идеальный способ выполнить это удаление.
Первоначально я думал, что могу использовать imfindcircles() для идентификации этих кругов, но алгоритм не обнаруживает большинство из них, независимо от указанных радиусов. Методы, основанные на подключенных компонентах (bwareaopen, regionprops), также терпят неудачу, поскольку концентрические круги, по-видимому, связаны с большей структурой.
Одна мысль у меня было, что я мог бы преобразовать в полярных координатах, в центре концентрических кругов всегда будет в центре изображения, производя это изображение:
width = 512
greyImg = ImToPolar(rgb2gray(rgb_img), 0, 1, width, width);
Это должно быть значительно проще в обработке. У кого-нибудь есть идеи?
Вы поместите неправильные изображения. –
Ну, это неловко, исправлено – Hosty
Декартово-полярное преобразование - не очень хорошая идея. Его нужно выполнять с помощью полюса, расположенного в центре круга, о котором вы не знаете. –