2012-10-10 136 views
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)。 enter image description here

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

回答

11

您可以执行使用IMCLOSE一个morpholical闭幕。

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

A的箭头B的closing由A的箭头B的扩张由B.

Result

+0

它的工作原理!谢谢! 我正在更新我的主题与另一个问题:/谢谢! –

+1

@AlonShmiel我很高兴它的工作:D – Yamaneko

+0

我成功了,没关系..非常感谢你! –

7

的备选解决方案获得的,由所得到的结构的侵蚀,随后是与中值滤波器适当的窗口尺寸,被应用的阈值只是后:

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

enter image description here

+0

谢谢!我会检查哪个选项对我来说更重要。非常感谢你!! :] –