在MATLAB中使图像中的单色区域平滑

时间:2019-05-30 21:31:45

标签: matlab image-processing

我为图像编写了一些算法,但是输出与我的基本事实有所不同,您可以在下图中看到:

enter image description here

我不想使其完全像第二张图片,但是由于我的图片很简单,我认为有一些滤镜至少可以消除圆内的那些白色曲线。

你能建议我吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以尝试使用imclose

这样的形态运算

您需要使用它才能获得所需的结果。
我使用imbinarizeuint8转换为黑白。

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

[图像上下反转很奇怪]。