从二进制图像中删除噪声

Alo*_*iel 5 matlab image-processing computer-vision

我想用葡萄和三个圆圈(红色,绿色,蓝色)来拍摄图像.[我需要删除所有涂片].我怎样才能改进我的代码呢?

这是我的代码:

RGB = imread('img_3235.jpg');
GRAY = rgb2gray(RGB);

threshold = graythresh(GRAY);
originalImage = im2bw(GRAY, threshold);

originalImage = bwareaopen(originalImage,250);

imshow(originalImage);

CC = bwconncomp(originalImage); %Ibw is my binary image
stats = regionprops(CC,'pixellist');
Run Code Online (Sandbox Code Playgroud)

这是我的形象(img_3235.jpg). 在此输入图像描述

这是我的代码的结果: 在此输入图像描述

Yam*_*eko 11

您可以使用执行morpholical结束IMCLOSE.

se = strel('disk', 10); %# structuring element
closeBW = imclose(originalImage,se);
figure, imshow(closeBW);
Run Code Online (Sandbox Code Playgroud)

A由B 的闭合是通过A对B的膨胀获得的,然后是由B对所得结构的侵蚀.

结果


bla*_*bla 7

另一种解决方案是在应用阈值后立即使用适当的窗口大小过滤中值:

 ...
 originalImage = im2bw(GRAY, threshold);
 originalImage = medfilt2(originalImage,[37 37],'symmetric'); 
 originalImage = bwareaopen(originalImage,250);
 figure, imshow(originalImage);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述