Está en la página 1de 14

TRATAMIENTO DE IMAGENES

FASE II

Presentado por:
MINEIRA PAPAMIJA

Grupo:

208054_15

Tutor
PAOLA ANDREA MATEUS

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD


ESCUELA DE CIENCIAS BÁSICAS, TECNOLOGÍA E INGENIERÍA

SEPTIEMBRE 2017
2. Implementación de los siguientes códigos

Procedimiento (Experimento) – Parte Individual:

2.1 Desarrolle el siguiente código en el Command Window de Matlab. (Asegúrese de


estar trabajando en la carpeta que ya se ha creado). Debe seleccionar la misma
imagen de la hoja enferma que seleccionó en la Fase I y la debe guardar como
“hojaenferma1” para diferenciarla de la hoja sana.

Nota: Si no está trabajando en la carpeta donde se encuentra la imagen guardada, al realizar


el código le saldrá error.

>> Hojaenferma=imread('hojaenferma1.jpg');
>> Hojaenferma=im2double(Hojaenferma);
>> figure;
>> imshow(Hojaenferma)

>> umbral=0.6;
>> binHojaenferma=im2bw(Hojaenferma,umbral);
>> figure;
>> imshow(binHojaenferma)

>> numpixels=100;
>> filtro=bwareaopen(binHojaenferma,numpixels);
>> figure;
>> imshow(filtro)
>>
Realizar el siguiente experimento modificando el código anterior.

Imagen 1 umbral 0.8 numpixels 5

Imagen 2 umbral 0.7 numpixels 10


Imagen 3 umbral 0.7 numpixels 200

Imagen 4 umbral 0.85 numpixels 200

 Explique cada línea de comando. ¿Qué hacen las funciones im2bw y


bwreaopen?

>> Hojaenferma=imread('hojaenferma1.jpg'); lee la imagen a operar

>> Hojaenferma=im2double(Hojaenferma); convierte la imagen a doble precisión tomando la


imagen como entrada, si la entrada no es del tipo doble el comando devuelve una imagen
equivalente reescalando o compensando los datos según sea necesario.
>> figure; crea una ventana para ver la figura
>> imshow(Hojaenferma) muestra la imagen en una figura aparte

>> umbral=0.6; Parametriza le da valor a la imagen para permitir distinguir en una imagen
los objetos del fondo de los objetos del primer plano

>> binHojaenferma=im2bw(Hojaenferma,umbral); convierte la imagen en escala de grises;


en una imagen binaria.
Rta: im2bw (I, level) convierte la imagen en escala de grises I en una imagen binaria. La
imagen de salida BW reemplaza todos los píxeles de la imagen de entrada con luminancia
mayor que el nivel con el valor 1 (blanco) y reemplaza todos los otros píxeles con el valor 0
(negro)
Rta: bwreaopen Realizar la apertura del área.

Quitar los objetos con menos de lim elementos de una imagen binaria bw.

 Analice cada imagen obtenida en este ejercicio.


Podemos observar en las imágenes de la hoja que en el umbral 0.6 se denota mayor escala
de blanco que el resto de las imágenes que se van acercando a 1. Respecto al número
especifico de pixeles, entre mayor denominación de pixeles la imagen va tornándose con
menos escalas de blanco y esto también se da por la escala de umbral.

 Indique cual es la combinación de umbral y de filtro que sirve para identificar


la mosca blanca en la imagen que ha seleccionado.
La que me parece mejor es la de Umbral 0.7 y numpixels de 200 ya que en esta se observa
justamente solo lo que son la mosca blanca en donde está ubicada ya que si el umbral es
menor da lectura de claridades de las hoja en sí, y si le colocamos mayor número de pixeles
ya no se alcanza a observar la mosca en donde se encuentra.

2.2. Cada estudiante debe averiguar cómo implementar el filtro para el ruido “sal y
pimienta” y el filtro para el ruido “Gaussiano”. Posteriormente implementar el filtro
correspondiente para la imagen que han investigado en el trabajo individual de la
parte teórica – fase I.
2.3. Desarrolle el siguiente código en el Command Window de Matlab. (Asegúrese de
estar trabajando en la carpeta que ya se ha creado).

>> Hojaenferma=imread('hojaenferma1.jpg'); lee la imagen a operar


>> GrayHojaenferma=rgb2gray(Hojaenferma); convierte una imagen RGB o en color a
escala de grises, eliminando la información del brillo y la saturación mientras mantiene el
valor de iluminación.
>> figure; crea una ventana para ver la figura
>> imshow(Hojaenferma) muestra la imagen en una figura aparte

>> BordesCanny=edge(GrayHojaenferma,'Canny'); Edge, canny: detectar bordes


utilizando el método Canny. El método Canny encuentra aristas buscando máximos locales
del gradiente de la función de edge calcula el gradiente utilizando la derivada de un filtro
gaussiano. Este método utiliza dos umbrales para detectar bordes fuertes y débiles,
incluyendo bordes débiles en la salida si están conectados a bordes fuertes. Mediante el uso
de dos umbrales, el método de Canny es menos probable que los otros métodos sean
engañados por el ruido, y más probabilidades de detectar verdaderos bordes débiles.

>> figure;
>> imshow(BordesCanny) muestra la imagen en una figura aparte con bordes canny
>> BordesSobel=edge(GrayHojaenferma,'sobel'); Edge, sobel: detectar los bordes usando
el método Sobel. Este método encuentra bordes usando la aproximación de Sobel a la
derivada. Devuelve bordes en aquellos puntos donde el gradiente de es la máxima.

>> figure;
>> imshow(BordesSobel) muestra la imagen en una figura aparte con bordes sobel
>>
 Analice cada imagen obtenida en este ejercicio.

En la imagen canny se detecta todos los bordes donde cambia de color sobre la imagen,
mientras que en la imagen de sobel detecta los bordes donde están más fuertes.

2.4. Desarrolle el siguiente código en el Command Window de Matlab. (Asegúrese de


estar trabajando en la carpeta que ya se ha creado).
Nota: Si no está trabajando en la carpeta donde se encuentra la imagen guardada, al
realizar el código le saldrá error.

Este código necesita el código del ejercicio 2,3 para poder ser ejecutado.

La imagen de las moscas casi no puede ser apreciada debido a que los objetos obtenidos
son muy dispersos y solo son en forma de pequeñas líneas y puntos.

b.
No se alcanza a observar nada de la imagen.

 Explique cada línea de comando. ¿Qué diferencias encuentra entre el ejercicio a y


b?

Strel: Crear un elemento estructurador morfológico, SE = strel('square',W) Crea un


elemento estructurador cuadrado cuya anchura es W píxeles. W debe ser un escalar
entero no negativo.
SE = strel ('line', LEN, DEG) crea un elemento estructural lineal plano que es
simétrica con respecto al centro de barrio. DEG especifica el ángulo (en grados) de
la línea medido en una en sentido contrario a las agujas del reloj desde el eje
horizontal. LEN es aproximadamente la distancia entre los centros de la estructura
elementos de elemento en extremos opuestos de la línea.

Imerode: IM2 = imerode(IM,SE) Erosiona la imagen binaria en escala de grises,


binaria o empaquetada IM, devolviendo la imagen erosionada, IM2. SE es un
elemento estructurante objeto o matriz de objetos de elementos estructuradores,
devueltos por el comando STREL.

En la primera imagen no se puede apreciar ninguna de las moscas en su forma pues solo se
ven puntos y líneas y en la segunda imagen no se alcanza a observar nada.

2.5. Desarrolle el siguiente código en el Command Window de Matlab. (Asegúrese de


estar trabajando en la carpeta que ya se ha creado). La imagen a utilizar es la misma
de la primera práctica.

Nota: Si no está trabajando en la carpeta donde se encuentra la imagen guardada, al realizar


el código le saldrá error.

Este código necesita el código del ejercicio 2,3 para poder ser ejecutado.
b.
 Explique cada línea de comando. ¿Qué diferencias encuentra entre el ejercicio a y
b?
Imdilate: dilata los bordes de la imagen según la estructura introducida que es obtenida con
el comando strel.

Imfill: Llena agujeros en la imagen de entrada. Un agujero es un conjunto de píxeles de


fondo que no se puede alcanzar rellenando el fondo desde el borde de la imagen

 Analice cada imagen obtenida en este ejercicio.

Las imágenes de los dos puntos son iguales y los bordes sobel son más fuertes aparte
Rellena algunos agujeros entre los bordes dilatados creados con el comando imfill.

 Modifique el código en los números de “square”, “line” y “numpixels” hasta


que su imagen resultante sea la más parecida a la que obtuvo en el punto 2.1,
donde se visualizan el 80% de las moscas blancas sin ruido externo.

>> Hojaenferma=imread('hojaenferma1.jpg');
GrayHojaenferma=rgb2gray(Hojaenferma);
figure;
imshow(Hojaenferma)
BordesCanny=edge(GrayHojaenferma,'Canny');
figure;
imshow(BordesCanny)
BordesSobel=edge(GrayHojaenferma,'Sobel');
figure;
imshow(BordesSobel)
>>
>> se3=strel('line',3,1);
dilatacion=imdilate(BordesSobel,se3);
figure;
imshow(dilatacion)
relleno=imfill(dilatacion,'holes');
figure;
imshow(relleno)
numpixels=100;
>> Filtro=bwareaopen(relleno,numpixels);
figure;
imshow(Filtro)
se4=strel('square',3);
dilatacion2=imdilate(BordesSobel,se4);
figure;
imshow(dilatacion2)
relleno2=imfill(dilatacion2,'holes');
>> figure;
imshow(relleno2)
imshow(relleno)
numpixels=100;
Filtro=bwareaopen(relleno,numpixels);
figure;
imshow(Filtro)
>>
REFERENCIAS

Extraído de http://www.sc.ehu.es/ccwgrrom/transparencias/pdf-vision-1-
transparencias/capitulo-6.pdf

Rafael C. Gonzalez, Richard E. Woods: Digital Image Processing. Addison-Wesley, Reading Mass


1992. ISBN 0-201-50803-6 (en inglés)

También podría gustarte