2012-10-10 35 views
5

Quiero obtener una imagen solo con las uvas y los tres círculos (rojo, verde, azul). [Tengo que eliminar todos los borrones]. ¿cómo puedo mejorar mi código para eso?Eliminar el ruido de una imagen binaria

este es mi código:

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'); 

esta es mi imagen (img_3235.jpg). enter image description here

y este es el resultado de mi código: enter image description here

Respuesta

11

Se podrá realizar el cierre morpholical usando IMCLOSE.

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

El closing de A por B se obtiene por la dilatación de A por B, seguido por la erosión de la estructura resultante por B.

Result

+0

¡funciona! ¡gracias! Estoy actualizando mi tema con otro problema: ¡/ gracias! –

+1

@AlonShmiel Me alegra que funcionó: D – Yamaneko

+0

Tuve éxito, no importa ... ¡muchas gracias! –

7

Una solución alternativa es filtro de mediana con un tamaño de ventana apropiada, justo después de que se aplica el umbral:

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

enter image description here

+0

¡gracias! Comprobaré qué opción es más esencial para mí. ¡¡muchas gracias!! :]] –

Cuestiones relacionadas