5

我想只用葡萄和三个圆圈(红色、绿色、蓝色)获得图像。[我需要去除所有的污迹]。我该如何改进我的代码?

这是我的代码:

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)。 在此处输入图像描述

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

4

2 回答 2

11

您可以使用 执行形态闭合IMCLOSE

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

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

结果

于 2012-10-10T13:41:38.747 回答
7

另一种解决方案是在应用阈值之后使用适当的窗口大小进行中值滤波:

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

在此处输入图像描述

于 2012-10-10T15:23:00.227 回答