Сделайте одноцветные области на изображении гладкими в MATLAB - PullRequest
0 голосов
/ 31 мая 2019

Я написал несколько алгоритмов для изображения, но вывод имеет некоторые отличия от моей основной истины, которую вы можете увидеть на изображении ниже:

enter image description here

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

Можете ли вы предложить мне что-нибудь?

Спасибо

1 Ответ

0 голосов
/ 31 мая 2019

Вы можете попробовать использовать морфологические операции, такие как imclose

Вам нужно поиграть с ним, чтобы получить желаемый результат.
Я использовал имбинаризовать для преобразованияот uint8 до черного / белого.

I = imread('https://i.stack.imgur.com/r8XO7.png'); %Read image directly from URL.
R = I(:,:,1);G = I(:,:,2);B = I(:,:,3);
R = imbinarize(255 - R);G = imbinarize(255 - G);B = imbinarize(255 - B); %Convert to binary (use 255-R to inverse polarity because background is white).
SE = strel('disk', 15);
R = imclose(R, SE); %Close opreation.
G = imclose(G, SE);
B = imclose(B, SE);
J = im2uint8(cat(3, ~R, ~G, ~B)); %Use ~R to invert to original polarity.
figure;imshow(J);

Почти ...
enter image description here

[Странно, что изображение переворачивается вверх / вниз].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...