从二进制图像中删除噪声

时间:2012-10-10 13:30:35

标签: 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');

这是我的形象(img_3235.jpg)。 enter image description here

这是我的代码的结果: enter image description here

2 个答案:

答案 0 :(得分:11)

您可以使用IMCLOSE执行形态学结束。

se = strel('disk', 10); %# structuring element
closeBW = imclose(originalImage,se);
figure, imshow(closeBW);

A by B的closing是通过A对B的膨胀得到的,然后是B对所得结构的侵蚀。

Result

答案 1 :(得分:7)

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

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

enter image description here