Contents
leer la imagen
I=imread('Tuto_1.bmp'); figure; imshow(I); title('imagen original')
Obtenemos el threshold en el calculo de los contornos
[Iedge, threshold] = edge(I, 'sobel'); figure; imshow(Iedge); title('contornos')
Reducimos el nivel de umbral y repetimos el calculo
Iedge2 = edge(I,'sobel', threshold * 0.75); figure; imshow(Iedge2); title('contornos reduciendo thres el 75%')
Definimos los elementos estructurales para limpiar la imagen
BW=Iedge2; % Una linea vertical de 3 pixels se90 = strel('line', 3, 90); % Una linea horizontal de 3 pixels se0 = strel('line', 3, 0);
Hacemos una dilaticion
BWdilate = imdilate(BW, [se90 se0]);
figure; imshow(BWdilate); title('imagen dilatada')
Limpiamos el borde de la imagen
BWnobord = imclearborder(BWdilate, 4);
figure; imshow(BWnobord); title('limpiar el borde')
Eliminamos elementos menores de 200 pixels
BWopen = bwareaopen(BWnobord,200);
figure; imshow(BWopen); title('eliminar objetos pequeños')
Aplicamos un cierre
BWclose = bwmorph(BWopen,'close'); figure; imshow(BWclose); title('aplicar un cierre')
Rellenamos los huecos
BWfill = imfill(BWclose, 'holes'); figure; imshow(BWclose); title('rellenar huecos');
Nos quedamos con el perimetro de los objetos
BWoutline = bwperim(BWfill);
imshow(BWoutline)
figure; imshow(BWoutline); title('quedarnos con el perimetro')
Sobre la imagen original superponemos el perimetro
segmentedCells = I;
segmentedCells(BWoutline) = 255;
figure; imshow(segmentedCells); title('resultado final')