Está en la página 1de 40

REALIZAR DETECCIÓN DE BORDES, BINARIZACIÓN, FILTRADO Y

RECONSTRUCCIÓN MORFOLÓGICA
(Septiembre 2017)
Romero González Erick Alexander, CC 80.826227 e-mail lapsusgenius@hotmail.com
Cristina Eliana Gómez Lozano, CC. 34.639.772 e-mail crisselg0702@gmail.com
Mineira Papamija imbachi CC. 1058967546 e-mail minep2105@hotmail.es
Eliécer solano solano, CC. 1.099.622.083 e-mail eliécer.Solano@gmail.com
Daniel Esteban Agudelo Berrío CC. xxxxxxxxxxx e-mail sxxxxxxxxxxxxxxxx
Fase II
Grupo 208054_15
Abstract— x In the next work we will see the El tratamiento digital de las imágenes
results in the processing of grayscale images and the
contempla el procesamiento y análisis, donde
different commands that exist to establish their
operation in the image processing el tratamiento está referido a la realización de
transformaciones, restauraciones y
Índex Terms— RGB, HSV, Pixel, histograma,
Resolución, imagen, aulas virtuales, sylabus, agenda mejoramiento de las imágenes. Las imágenes
del curso. digitales se pueden obtener por medio de
dispositivos de entrada conversión analógica-
digital como los escáneres y las cámaras
I. INTRODUCCIÓN
digitales.

II. OBJETIVOS

E
n el siguiente trabajo veremos los
 xxxxxxxxxxxxxxxxx
resultados en el procesamiento de una
 xxxxxxxxxxxxxxxxx
imágenes en escala de grises y los
diferentes comandos que hay para establecer  xxxxxxxxxxxxxxxxx
su funcionamiento dentro del procesamiento
III. RESUMEN PROYECTO
de imágenes.
Investigación de las siguientes preguntas
El presente trabajo pretende dar respuesta a
las diez (10) preguntas propuestas en la guía a. ¿Qué es moralización o binarización?
de actividades y continuar trabajando en la
Binarización: es una técnica que consiste en
imagen que se eligió para leer en software la realización de un barrido en la matriz de la
Matlab imagen digital, por medio de bucles o
recursividad, con el fin de que el proceso
La mayoría de las técnicas de umbralización produzca la reducción de la escala de grises a
están basadas en la información estadística dos únicos valores. Negro (= 0) y blanco (=
que brinda el histograma unidimensional, 255), o lo que es lo mismo, un sistema binario
sobre todo en aquellas imágenes donde los de ausencia y presencia de color 0-1. La
objetos tienen una superficie o textura comparación de cada píxel de la imagen viene
determinada por el umbral de sensibilidad
homogénea y el fondo es más o menos
(valor T = Threshold). Por ejemplo, los
uniforme. valores que sean mayores que el umbral
toman un valor 255 (blanco) y los menores 0
(negro) (fig. 4 y 5). Sezgin & Sankur (2004),
en base a las particularidades entre algoritmos
categorizan los métodos de umbralización en
seis grupos.

Histograma: métodos basados en el análisis


de los picos máximos y mínimos de las
curvas del histograma del suavizado de la
Probabilidad de ocurrencia del nivel de gris de una
imagen. Clustering: métodos basados en imagen según Otsu. ƒi = frecuencia de repetición del
discernir como las muestras de los niveles de nivel de gris.
gris se agrupan o alternativamente se
modelan como una mezcla de dos gaussianas. d. ¿Qué es reducción de ruido en una
Entropía: métodos basados en el análisis de imagen binaria?
los resultados de la aplicación de algoritmos
que utilizan la entropía de las regiones frontal
y de fondo, la entropía cruzada entre la e. ¿Qué es filtro mediana y cómo se
imagen original y binarizada. implementa en Matlab?
Similitud: métodos basados en la búsqueda
de una similitud entre las escalas de grises, Es un filtro usado para eliminar ruido
como la tonalidad difusa, los bordes de la impulsivo, con la característica de conservar
imagen, etc. Espaciales: métodos analíticos los bordes y detalles de la imagen.
que usan el orden de distribución, la
probabilidad y/o la correlación entre los » h=medfilt2(b,[3,3]);
diferentes píxeles. Globales: métodos cuyo » figure (7);
valor del umbral es estático. » imshow (b);
Locales: métodos que adaptan el valor del » figure (8);
umbral, de forma manual o automática, a » imshow (h);
cada píxel dependiendo de las características
locales de la imagen segmentada. f. ¿Para qué sirven los filtros de suavizado
en una imagen?
b. ¿Cuál es la diferencia entre
umbralización global y local y su Para reducir las variaciones de intensidad
implementación en Matlab? entre píxeles vecinos.
Mediante el cual se relaciona un píxel con los
El valor umbral en un método es estático y en que tiene a su alrededor, de forma a eliminar
el otro el valor varia por las características de los píxeles abruptos afectados por un fuerte
cada pixel. ruido y cuyo valor suele destacar muy por
encima de los otros.
c. ¿Qué es umbral de Otsu?
g. ¿Cuál es la diferencia entre ruido
Ideado por Otsu (1979), este procedimiento gaussiano y ruido de sal y pimienta?
no paramétrico selecciona el umbral óptimo
maximizando la varianza entre clases El valor final del píxel es el real más una
mediante una búsqueda exhaustiva. La cierta cantidad de error.
varianza entre clases se define como una
suma ponderada de las varianzas. El método El valor que toma el píxel no tiene relación
Otsu no precisa información previa de la con el valor real sino que toma valores muy
imagen antes de su procesamiento, ni altos o muy bajos  Toma el valor máximo
supervisión humana para el cálculo de los (sal) o el mínimo (pimienta).
umbrales
h. Explique diferentes técnicas de B. El primer elemento de la dilatación, A,
segmentación de imágenes está asociado con la imagen que se está
procesando y el segundo recibe el nombre de
La segmentación subdivide una imagen en elemento estructural, la forma que actúa sobre
sus partes constituyentes u objetos, con el fin A en la dilatación para producir A⊕ B.
de separar las partes de interés del resto de la
imagen, por lo tanto el nivel al que se lleva a Erosión: Dada una imagen A, y un elemento
cabo esta subdivisión depende del problema a estructural B, (ambos imágenes binarias con
resolver. En el proceso de detectar las partes fondo blanco), la erosión de una imagen, A,
en una imagen se identifican bordes de la por un elemento estructural, B, es el conjunto
imagen, o se segmenta esta en regiones, de todos los elementos x para los cuales B
líneas o curvas, etc. trasladado por x está contenido en A:
Otra definición considera a la segmentación
como la clasificación de los puntos de la
imagen (pixels), indicando las clases a la que
pertenecen los diferentes pixeles.
Tengamos en cuenta que, para la condición
Bx⊆ A, sólo consideramos los píxeles negros
i. ¿Qué es reconstrucción morfológica?
de A y B.
La erosión es la operación morfológica dual
Es una técnica de procesamiento no lineal de
de la dilatación.
la señal, caracterizada en realzar la geometría
La erosión se concibe usualmente como una
y forma de los objetos. Su fundamento
reducción de la imagen original.
matemático se basa en la teoría de conjunto.
Aunque en un principio se aplicará sobre las
imágenes binarizadas, luego se extenderá a
las imágenes en niveles de grises. Este uso a
niveles de grises permitirá vislumbrar que el
procesamiento morfológico también se puede
utilizar como técnica de procesado de la
señal.
Actualmente se puede encontrar aplicaciones
en la restauración de imágenes, en la
detección de bordes, en el análisis de texturas,
en el aumento del contraste y hasta en la
compresión de imágenes.

j. ¿Qué tipos de funciones morfológicas


existen y cómo funcionan?

Dilatación:
Dada una imagen A, y un elemento
estructural B, (ambos imágenes binarias con
fondo blanco), la dilatación de A por B se
define como:

Tengamos en cuenta que, para la intersección


sólo consideramos los píxeles negros de A y
IMPLEMENTACION DE CODIGOS

ERICK ALEXANDER ROMERO G.

Imagen Ejemplo/ Umbral 0.6 / numpixeles Imagen 1/ Umbral 0.8 / numpixeles 5


100
Imagen 2/ Umbral 0.7 / numpixeles 10 Imagen 3/ Umbral 0.7 / numpixeles 200
Imagen 4/ Umbral 0.85 / numpixeles 200 precisión, la imagen de salida será
igual.
 Nos deja ver el espacio donde se va a
visualizar la imagen de salida.
 Define el valor máximo donde el
proceso de segmentación va realizar
la separación de pixeles dentro de la
imagen de salida.
 Luego la digitalización de la imagen
de salida en blanco y negro
 Y el número de pixeles con el cual se
va a hacer el análisis para la
segmentación binaria.
 Visualización del lugar de la salida
de la imagen.
 Se filtran pixeles dentro la imagen
binaria para que no salgan en la
imagen de salida.
 Y muestra la salida final limpia de
objetos en la imagen binaria.

2.3. Desarrolle el siguiente código en el


Command Window de Matlab.

EXPLICACION DE LAS LINEAS DE


COMANDO

 Lee el archivo de la carpeta donde se


está extrayendo la información.
 Pasa la imagen a doble precisión,
reescalando los datos si es necesario.
Si la imagen de entrada es de doble
que es simétrica con respecto al centro de
vecinos. 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 en los extremos opuestos
de la línea.
Luego la imagen es erosionada por el comando
imerode.
Las salida grafica es lo último.
EXPLICACION DE LAS LINEAS DE
COMANDO

 Lee el archivo de la carpeta donde se


está extrayendo la información.
 Pasa la imagen de color a escala de
grises.
 Nos deja ver el espacio donde se va a
visualizar la imagen de salida.
 Luego se identifican los bordes, de
las formas en la imagen. Usando el
valor del umbral que tiene la imagen
en los elementos.
 Nos deja ver el espacio donde se va a
visualizar la imagen de salida.
 Luego con el operador diferencial de
Sobel. Hace un aproximación a la EXPLICACION DE LAS LINEAS DE COMANDO
intensidad de la imagen
Crea un elemento estructurador cuadrado cuyo
 Finalmente nos deja ver el orden de Anchura es 2 píxeles. En base a los bordes
la imagen en la salida gráfica creados en el anterior listado de comandos
Luego la imagen es erosionada
Y mostrada en el cuadro de salida grafica

ANALISIS DE LAS IMÁGENES

Como ambas imágenes son producto de la misma


fuente y observando las salidas graficas la primera
que es de carácter líneas permite una visualización
a la salida con referencia al tamaño de los bordes.
En la siguiente salida no se puede denotar nada
posiblemente las características de los cuadros
sobre pasan el tamaño de los bordes y por esa
razón no se pudo visualizar en los bordes y quedo
negro en su mayoría.

.
EXPLICACION DE LAS LINEAS DE COMANDO

Strel ('line', 3, 2) crea un elemento estructural


lineal plano.
EXPLICACION DE LAS LINEAS DE COMANDO

Strel ('line', 3, 2) crea un elemento estructural


lineal en el plano
Luego la dilatación de los valores devueltos de
strel.
Y la salida grafica de la dilatación.
Luego el relleno de los huecos y la dilatación. Con
el comando imfill crea el dato. En base de los
bordes lineales.
Luego muestra la salida del archivo
Numpixels en la cantidad de pixeles que usa para
hacer el cálculo del filtro para la áreas binarias y
el relleno.Luego muestra la salida gráfica.
EXPLICACION DE LAS LINEAS DE COMANDO

Strel ('line', 3, 2) crea un elemento estructural


cuadradas en el plano
Luego la dilatación de los valores devueltos de
strel.
Y la salida grafica de la dilatación.
Luego el relleno de los huecos y la dilatación. Con
el comando imfill crea el dato. En base de los
bordes lineales.
Luego muestra la salida del archivo
Y también el anterior archivo
Numpixels en la cantidad de pixeles que usa para
hacer el cálculo del filtro para las áreas binarias y
el relleno.
Luego muestra la salida gráfica.
IMPLEMENTACION DE CODIGOS
Eliecer Solano Solano

ANALISIS
Comparando ambos métodos el mejor método
para este tipo de procedimiento es el square
porque demarca con más claridad la información
de interés dentro el análisis en cuanto al relleno
porque el estilo lineal no deja que se abarque la
totalidad de la información que se quiere separar.
Implementación de códigos en Matlab.
Código 1 descripción de cada línea de
Modifique el código en los números de programación.
“square”, “line” y “numpixels” hasta que su Hojaenferma=imread('Hojaenferma1.jpg');
//selecciona la ruta donde se encuentra guardada
imagen resultante sea la más parecida a la
la imagen .
que obtuvo en el punto 2.1, donde se Hojaenferma=im2double(Hojaenferma); //permite
visualizan el 80% de las moscas blancas sin obtener una doble precisión de la imagen.
figure; // permite verificar la figura en Indica a
ruido externo. matlaba
imshow(Hojaenferma); // se indica a matlaba la
Line: figura a mostrar.
umbral=0.8; //se realiza una Selección del umbral.
a partir de cual valor es un pixel blanco o es
negro.
binHojaenferma=im2bw(Hojaenferma,umbral);
//Crea una imagen a partir de una imagen de
intensidad basado en el umbral dado en la línea
de programación anterior umbral =x.
figure;muestra la imagen correspondiente a un
resultado plasmado mediante un llamado en la
línea hoja enferma.jpg
imshow(binHojaenferma);
numpixels=5; // Variable que indica cantidad de
Pixeles asignados para la misma.
Filtro=bwareaopen(binHojaenferma,numpixels);
Square: // Se utiliza la sentencia bwareaopen para crear
una nueva imagen.
figure;
imshow(Filtro);
se realiza para llamar la imagen

Realizar el siguiente experimento modificando


el código anterior.
Imagen 1

umbral=0.8;
binhojaenferma=im2bw(hojaenferma,umbral);
figure; Imagen 2
imshow(hojaenferma)
Trial>> hojaenferma=imread('hojaenferma1.jpg'); hojaenferma=imread('hojaenferma1.jpg');
Trial>> hojaenferma= im2double(hojaenferma); hojaenferma= im2double(hojaenferma);
Trial>> imshow(hojaenferma) imshow(hojaenferma)
Trial>> figure; figure;
Trial>> imshow(hojaenferma) imshow(hojaenferma)
Trial>> umbral=0.8; umbral=0.7;
Trial>> binhojaenferma=im2bw(hojaenferma,umbral); binhojaenferma=im2bw(hojaenferma,umbral);
Trial>> figure; figure;
Trial>> imshow(hojaenferma) imshow(hojaenferma)
Trial>> numpixels=5; numpixels=10;
Trial>> filtro=bwareaopen(binhojaenferma.numpixels; filtro=bwareaopen(binhojaenferma,numpixels);
Trial>> figure; figure;
Trial>> imshow(filtro) imshow(filtro)
hojaenferma=imread('hojaenferma1.jpg');
Imagen 3 hojaenferma= im2double(hojaenferma);
hojaenferma=imread('hojaenferma1.jpg'); figure;
hojaenferma= im2double(hojaenferma); imshow(hojaenferma)
imshow(hojaenferma)
figure; umbral=0.6;
imshow(hojaenferma) binhojaenferma=im2bw(hojaenferma,umbral);
figure;
umbral=0.7; imshow(hojaenferma)
binhojaenferma=im2bw(hojaenferma,umbral);
figure; numpixels=100;
imshow(hojaenferma) filtro=bwareaopen(binhojaenferma,numpixels);
figure;
numpixels=200; imshow(filtro)
filtro=bwareaopen(binhojaenferma,numpixels); Selecciona la ruta y la imagen en la que se va a
figure; trabajar
imshow(filtro) Trial>> Hojaenferma=im2double(Hojaenferma);
convierte la intensidad de la imagen a doble precisión
Trial>> figure; crea una ventana donde aparece la
imagen
Trial>> imshow(Hojaenferma) muestra la imagen en
una figura

Trial>> umbral=0.6; da valor a una imagen y permite


distinguir si es claro o negro
Trial>> binHojaenferma=im2bw(Hojaenferma,umbral);
Imagen 4 convierte imagen a escala de grises
hojaenferma=imread('hojaenferma1.jpg'); Trial>> figure;
hojaenferma= im2double(hojaenferma); Trial>> imshow(binHojaenferma)
figure;
imshow(hojaenferma) Trial>> numpixels=100; la cual nos indica la antidad
umbral=0.85; de pixeles
binhojaenferma=im2bw(hojaenferma,umbral); Trial>>
figure; Filtro=bwareaopen(binHojaenferma,numpixels);
imshow(hojaenferma) elimina componentes conectados produciendo otra
numpixels=200; imagen
filtro=bwareaopen(binhojaenferma,numpixels); Trial>> figure;
figure; Trial>> imshow(Filtro)
imshow(filtro)

Analice cada imagen obtenida en este ejercicio.


Según lo observado en las imágenes de la hoja un
umbral que se denomina 0.6 se ve mayor escala en
blanco que las imágenes que se van acercando a 1
como donde la de 0.85 se observa con muy baja
escala de blancos. Como también se observa la
imagen de la hoja un numero especifico de pixeles,
entre mayor denominación de pixeles la imagen va
tornándose con menos escalas en blanco claro que
esto también se da porque está directamente
influenciado con el umbral ya que se está leyendo la 2.3. Desarrolle el siguiente código en el
imagen desde la misma escala. Command Window de Matlab. (Asegúrese de
Indique cual es la combinación de umbral y de filtro estar trabajando en la carpeta que ya se ha
que sirve para identificar la mosca blanca en la
imagen que ha seleccionado.
creado).
Como podemos darnos cuenta en el umbral 0,8 y la
de numpixels 5 esta solo nos deja observar lo que Trial>>
son las moscas blancas puesto que lee de claridad y Hojaenferma=imread('hojaenferma1.jpg');
si le aumentamos los pixeles esta ya no se mira Trial>>
numero de pixeles ya no se alcanza a observar la GrayHojaenferma=rgb2gray(Hojaenferma);
mosca en donde se encuentra. Trial>> figure;
Trial>> imshow(Hojaenferma)
2.2. Cada estudiante debe averiguar cómo Trial>>
implementar el filtro para el ruido “sal y BordesCanny=edge(GrayHojaenferma,'Canny');
pimienta” y el filtro para el ruido “Gaussiano”. Trial>> figure;
Posteriormente implementar el filtro Trial>> imshow(BordesCanny)
correspondiente para la imagen que han Trial>>
investigado en el trabajo individual de la parte BordesSobel=edge(GrayHojaenferma,'Sobel');
Trial>> figure;
teórica – fase I.
Trial>> imshow(BordesSobel)
Filtro para el ruido “sal y pimienta

Hojaenferma=imread('hojaenferma1.jpg');
GrayHojaenferma=rgb2gray(Hojaenferma);
c=imnoise(Hojaenferma, 'salt & pepper',0.2);
g=imnoise(GrayHojaenferma, 'salt & pepper',0.2);
j=imnoise(Hojaenferma,'gaussian',0.5);
figure;
subplot(2,3,1);imshow(Hojaenferma);title('Imagen
original');
subplot(2,3,2);imshow(GrayHojaenferma);title('imagen
GRISES');
subplot(2,3,3);imshow(c);title('salt & pepper original');
subplot(2,3,4);imshow(g);title('salt & pepper grises');
subplot(2,3,5);imshow(j);title('gaussian original');
subplot(2,3,6);imshow(h);title('gaussian grises');

Explique cada línea de comando. ¿Qué hacen las


funciones canny y sobel?
Analice cada imagen obtenida en este ejercicio

Trial>> se1=strel('line',3,2);
Trial>> erosion=imerode(BordesSobel,se1);
Trial>> figure;
Trial>> imshow(erosion)
a.
Trial>> se3=strel('line',3,2);
Trial>> dilatacion=imdilate(BordesSobel,se3);
Trial>> figure;
Trial>> imshow(dilatacion)
Trial>> relleno=imfill(dilatacion,'holes');
Trial>> figure;
Trial>> imshow(relleno)
Trial>> numpixels=300;
Trial>> Filtro=bwareaopen(relleno,numpixels);
Trial>> se2=strel('square',2); Trial>> figure;
Trial>> erosion2=imerode(BordesSobel,se2); Trial>> imshow(Filtro)
Trial>> figure;
Strel ('line', 3, 2) crea un elemento estructural
Trial>> imshow(erosion2)
Lineal en el plano
Luego la dilatación de los valores devueltos de
strel.
Y la salida grafica de la dilatación.
Luego el relleno de los huecos y la dilatación.
Con el comando imfill crea el dato. En base de
los bordes lineales.
Luego muestra la salida del archivo
Numpixels en la cantidad de pixeles que usa
para hacer el cálculo del filtro para las áreas
binarias y el relleno.
Explique cada línea de comando. ¿Qué Luego muestra la salida gráfica.
diferencias encuentra entre el ejercicio a y b?
Analice cada imagen obtenida en este ejercicio.

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.

Este código necesita el código del ejercicio 2,3


para poder ser ejecutado

Trial>> se4=strel('square',2);
Trial>> dilatacion2=imdilate(BordesSobel,se4);
Trial>> figure;
Trial>> imshow(dilatacion2)
Trial>> relleno2=imfill(dilatacion2,'holes');
Trial>> figure; Modifique el código en los números de
Trial>> imshow(relleno2) “square”, “line” y “numpixels” hasta que su
Trial>> imshow(relleno) imagen resultante sea la más parecida a la que
Trial>> numpixels=300;
Trial>> figure; obtuvo en el punto 2.1, donde se visualizan
Trial>> imshow(Filtro) el 80% de las moscas blancas sin ruido externo.

Strel ('line', 3, 2) crea un elemento estructural se3=strel('line',3,2);


cuadradas en el plano Luego la dilatación de los dilatacion=imdilate(BordesSobel,se3);
valores devueltos de strel. Y la salida grafica de figure;
la dilatación. Luego el relleno de los huecos y la imshow(dilatacion)
dilatación. Con el comando imfill crea el dato. relleno=imfill(dilatacion,'holes');
En base de los bordes lineales. Luego muestra la figure;
salida del archivo Y también el anterior archivo imshow(relleno)
Numpixels en la numpixels=300;
cantidad de pixeles que usa para hacer el Filtro=bwareaopen(relleno,numpixels);
cálculo del filtro para las áreas binarias y el figure;
relleno.Luego muestra la salida gráfica imshow(Filtro)
se4=strel('square',2);
dilatacion2=imdilate(BordesSobel,se4);
figure;
imshow(dilatacion2)
relleno2=imfill(dilatacion2,'holes');
figure;
imshow(relleno2)
imshow(relleno)
Explique cada línea de comando. ¿Qué numpixels=300;
diferencias encuentra entre el ejercicio a y b? Filtro=bwareaopen(relleno,numpixels);
Analice cada imagen obtenida en este ejercicio. figure;
imshow(Filtro)
Lee el archivo de la carpeta donde se está
extrayendo la información.
Pasa la imagen de color a escala de grises.
Nos deja ver el espacio donde se va a visualizar
la imagen de salida.
Luego se identifican los bordes, de las formas
en la imagen. Usando el valor del umbral que
tiene la imagen en los elementos.
Nos deja ver el espacio donde se va a visualizar
la imagen de salida.
Luego con el operador diferencial de Sobel.
Hace un aproximación a la intensidad de la
imagen
Finalmente nos deja ver el orden de la imagen
en la salida gráfica
IMPLEMENTACION DE CODIGOS
Cristina Eliana Gómez Lozano

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 Realizar el siguiente experimento
la Fase I y la debe guardar como modificando el código anterior.
“hojaenferma1” para diferenciarla de la hoja
sana.

Imagen 1

Trial>>
Hojaenferma=imread('hojaenferma1.jpg');
Trial>>
Hojaenferma=im2double(Hojaenferma);
Trial>> figure;
Trial>> imshow(Hojaenferma)
Trial>> umbral=0.8;
Trial>>
binHojaenferma=im2bw(Hojaenferma,umbr
al);
Trial>> figure;
Trial>> imshow(binHojaenferma)
Trial>> numpixels=5;
Trial>>
Filtro=bwareaopen(binHojaenferma,numpix
els);
Trial>> figure;
Trial>> imshow(Filtro)
Figura 2

Trial>>
Hojaenferma=imread('hojaenferma1.jpg');
Trial>>
Hojaenferma=im2double(Hojaenferma);
Trial>> figure;
Trial>> imshow(Hojaenferma)
Trial>> umbral=0.7;
Trial>>
binHojaenferma=im2bw(Hojaenferma,umbr
al);
Trial>> figure;
Trial>> imshow(binHojaenferma)
Trial>> numpixels=10;
Trial>>
Filtro=bwareaopen(binHojaenferma,numpix
els);
Trial>> figure;
Trial>>
imshow(Filtro)
Trial>>
Hojaenferma=imread('hojaenferma1.jpg');
Trial>>
Hojaenferma=im2double(Hojaenferma);
Trial>> figure;
Trial>> imshow(Hojaenferma)
Trial>> umbral=0.7;
Trial>>
binHojaenferma=im2bw(Hojaenferma,umbr
al);
Trial>> figure;
Trial>> imshow(binHojaenferma)
Trial>> numpixels=200;
Trial>>
Filtro=bwareaopen(binHojaenferma,numpix
els);
Trial>> figure;
Trial>> imshow(Filtro)

Figura 3
\

Figura 4

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

Trial>> umbral=0.85;
Trial>>
binHojaenferma=im2bw(Hojaenferma,umbr
al);
Trial>> figure;
Trial>> imshow(binHojaenferma)

Trial>> numpixels=200;
Trial>>
Filtro=bwareaopen(binHojaenferma,numpix
els);
Trial>> figure;
Trial>> imshow(Filtro)

Explique cada línea de comando. ¿Qué


hacen las funciones im2bw y bwreaopen?

Trial>>
Hojaenferma=imread('hojaenferma1.jpg'
); Selecciona la ruta y la imagen en la que se Indique cual es la combinación de umbral
va a trabajar y de filtro que sirve para identificar la
Trial>> mosca blanca en la imagen que ha
Hojaenferma=im2double(Hojaenferma); seleccionado.
convierte la intensidad de la imagen a doble
precisión Como podemos darnos cuenta en el umbral
Trial>> figure; crea una ventana donde 0,8 y la de numpixels 5 esta solo nos deja
aparece la imagen observar lo que son las moscas blancas
Trial>> imshow(Hojaenferma) muestra la puesto que lee de claridad y si le
imagen en una figura aumentamos los pixeles esta ya no se mira
la mosca en donde se encuentra.
Trial>> umbral=0.6; da valor a una imagen
y permite distinguir si es claro o negro 2.2. Cada estudiante debe averiguar cómo
Trial>> implementar el filtro para el ruido “sal y
binHojaenferma=im2bw(Hojaenferma,u pimienta” y el filtro para el ruido
mbral); convierte imagen a escala de grises “Gaussiano”. Posteriormente implementar
Trial>> figure; el filtro correspondiente para la imagen
Trial>> imshow(binHojaenferma) que han investigado en el trabajo
individual de la parte teórica – fase I.
Trial>> numpixels=100; la cual nos indica
la antidad de pixeles
Trial>> Hojaenferma=imread('C:\Users\ZONA1\Do
Filtro=bwareaopen(binHojaenferma,num cuments\MATLAB\Tratamiento de
pixels); elimina componentes conectados Imagenes\Hojaenferma1.jpg');
produciendo otra imagen Trial>>
Trial>> figure; GrayHojaenferma=rgb2gray(Hojaenferma);
Trial>> imshow(Filtro) c=imnoise(Hojaenferma, 'salt &
pepper',0.2);
Analice cada imagen obtenida en este g=imnoise(GrayHojaenferma, 'salt &
ejercicio. pepper',0.2);
j=imnoise(Hojaenferma,'gaussian',0.5);
Según lo observado en las imágenes de la
h=imnoise(GrayHojaenferma,'gaussian',0.5);
hoja un umbral que se denomina 0.6 se ve figure;
mayor escala en blanco que las imágenes subplot(2,3,1);imshow(Hojaenferma);title('I
que se van acercando a 1 como donde la de magen original');
0.85 se observa con muy baja escala de subplot(2,3,2);imshow(GrayHojaenferma);ti
blancos. Como tambien se observa la tle('imagen GRISES');
subplot(2,3,3);imshow(c);title('salt & pepper
imagen de la hoja un numero especifico de
original');
pixeles, entre mayor denominación de subplot(2,3,4);imshow(g);title('salt & pepper
pixeles la imagen va tornándose con menos grises');
escalas en blanco claro que esto también se subplot(2,3,5);imshow(j);title('gaussian
da porque está directamente influenciado original');
con el umbral ya que se está leyendo la subplot(2,3,6);imshow(h);title('gaussian
imagen desde la misma escala. grises');
'); detecta los bordes horizontales y
verticales separadamente sobre una imagen
en escala de grises.
Trial>> figure; nos muestra la ventana de la
imagen a salir
Trial>> imshow(BordesSobel) nos muestra
la imagen

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).

 Explique cada línea de comando.


¿Qué hacen las funciones canny y
sobel?

Explicación

Trial>>
Hojaenferma=imread('hojaenferma1.jpg');
sale imagen real
Trial>>
GrayHojaenferma=rgb2gray(Hojaenferma);
convierte la imagen a color o escala de
grisess
Trial>> figure; nos muestra la ventana de la
imagen a salir
Trial>> imshow(Hojaenferma) nos muestra
la imagen
Trial>>
BordesCanny=edge(GrayHojaenferma,'Cann
y'); nos muestra una múltiples etapas para
detectar una amplia gama de bordes en
imágenes.
Trial>> figure; nos muestra la ventana de la
imagen a salir
Trial>> imshow(BordesCanny) ) nos
muestra la imagen
Trial>>
BordesSobel=edge(GrayHojaenferma,'Sobel
Analice cada imagen obtenida en este
ejercicio.

En este caso podemos darnos cuenta que en


la imagen cany nos muestra una gamas mas
amplia de los bordes de la hoja mientras que
en bordes sobel nos nuestra mas los bordes
horizontales de la imagen.

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).

a.

Trial>> se1=strel('line',3,2); crea un


elemento
Trial>> erosion=imerode(BordesSobel,se1);
Trial>> figure;
Trial>> imshow(erosion)

b.

Trial>> se2=strel('square',2);
Trial>>
erosion2=imerode(BordesSobel,se2);
Trial>> figure;
Trial>> imshow(erosion2)
Trial>>
Filtro=bwareaopen(relleno,numpixels);
Trial>> figure;
Trial>> imshow(Filtro)

Explique cada línea de comando. ¿Qué


diferencias encuentra entre el ejercicio a
y b?
Rta/: en este caso en la imagen a
alcanzamos a mirar los bordes de la hoja
pero casi las moscas no se alcanzan a mirar
mientras que en la imagen b no se alcanza a
mirar absolutamente nada.

Analice cada imagen obtenida en este


ejercicio.

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.

Este código necesita el código del ejercicio


2,3 para poder ser ejecutado.

a.
Trial>> se3=strel('line',3,2);
Trial>>
dilatacion=imdilate(BordesSobel,se3);
Trial>> figure;
Trial>> imshow(dilatacion)
Trial>> relleno=imfill(dilatacion,'holes');
Trial>> figure;
Trial>> imshow(relleno)
Trial>> numpixels=300;
b.
Trial>> se4=strel('square',2);
Trial>>
dilatacion2=imdilate(BordesSobel,se4);
Trial>> figure;
Trial>> imshow(dilatacion2)
Trial>> relleno2=imfill(dilatacion2,'holes');
Trial>> figure;
Trial>> imshow(relleno2)
Trial>> imshow(relleno)
Trial>> numpixels=300;
Trial>> figure;
Trial>> imshow(Filtro)

Explique cada línea de comando. ¿Qué


diferencias encuentra entre el ejercicio a y
b?

Rta/ en los dos ejrcicio tanto a como b


podemos darnos cuenta que prácticamente
el cambio que tienen las imágenes son
prácticamente los msmos.

Indilate: Dilata la imagen Ienta puede ser


tanto binaria como en escala de grises
Infill: realiza la operación morfológica de
rellenado en una imagen binaria

Analice cada imagen obtenida en este


ejercicio.

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.
Trial>>
Hojaenferma=imread('hojaenferma1.jpg');
GrayHojaenferma=rgb2gray(Hojaenferma);
figure;
imshow(Hojaenferma)
BordesCanny=edge(GrayHojaenferma,'Cann
y');
figure;
imshow(BordesCanny)
BordesSobel=edge(GrayHojaenferma,'Sobel
');
figure;
imshow(BordesSobel)
se3=strel('line',3,2);
dilatacion=imdilate(BordesSobel,se3);
figure;
imshow(dilatacion)
relleno=imfill(dilatacion,'holes');
figure;
imshow(relleno)
numpixels=110;
Filtro=bwareaopen(relleno,numpixels);
figure;
imshow(Filtro)
se4=strel('square',4);
dilatacion2=imdilate(BordesSobel,se4);
figure;
imshow(dilatacion2)
relleno2=imfill(dilatacion2,'holes');
figure;
imshow(relleno2)
imshow(relleno)
numpixels=110;
Filtro=bwareaopen(relleno,numpixels);
figure;
imshow(Filtro)
IMPLEMENTACION DE CODIGOS

MINEIRA PAPAMIJA.

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,umbr
al);
>> figure;
>> imshow(binHojaenferma)
>> numpixels=100;
>>
filtro=bwareaopen(binHojaenferma,numpixe
ls);
>> figure;
>> imshow(filtro)
>>
Imagen 1 - umbral 0.8 - numpixels 5

Realizar el siguiente experimento


modificando el código anterior.
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,umbr
al); 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 2.3. Desarrolle el siguiente código en el
mosca blanca en la imagen que ha Command Window de Matlab. (Asegúrese
seleccionado. de estar trabajando en la carpeta que ya se
ha creado).
La que me parece mejor es la de Umbral 0.7
>>
y numpixels de 200 ya que en esta se
Hojaenferma=imread('hojaenferma1.jpg');
observa justamente solo lo que son la mosca
lee la imagen a operar
blanca en donde está ubicada ya que si el
>>
umbral es menor da lectura de claridades de
GrayHojaenferma=rgb2gray(Hojaenferma);
las hoja en sí, y si le colocamos mayor
convierte una imagen RGB o en color a
número de pixeles ya no se alcanza a
escala de grises, eliminando la información
observar la mosca en donde se encuentra.
del brillo y la saturación mientras mantiene
el valor de iluminación.
2.2. Cada estudiante debe averiguar cómo >> figure; crea una ventana para ver la
implementar el filtro para el ruido “sal y figura
pimienta” y el filtro para el ruido >> imshow(Hojaenferma) muestra la
“Gaussiano”. Posteriormente implementar el imagen en una figura aparte
filtro correspondiente para la imagen que
han investigado en el trabajo individual de la >>
parte teórica – fase I. BordesCanny=edge(GrayHojaenferma,'Cann
y'); 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.

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
La imagen de las moscas casi no puede ser línea medido en una en sentido contrario a
apreciada debido a que los objetos obtenidos las agujas del reloj desde el eje horizontal.
son muy dispersos y solo son en forma de LEN es aproximadamente la distancia entre
pequeñas líneas y puntos. los centros de la estructura elementos de
elemento en extremos opuestos de la línea.
b.
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.
BordesCanny=edge(GrayHojaenferma,'Cann
y');
figure;
imshow(BordesCanny)
BordesSobel=edge(GrayHojaenferma,'Sobel
');
figure;
imshow(BordesSobel)
>>
>> se3=strel('line',3,1);
dilatacion=imdilate(BordesSobel,se3);
figure;
Explique cada línea de comando. ¿Qué imshow(dilatacion)
diferencias encuentra entre el ejercicio a y relleno=imfill(dilatacion,'holes');
b? figure;
imshow(relleno)
Imdilate: dilata los bordes de la imagen
numpixels=100;
según la estructura introducida que es
>> Filtro=bwareaopen(relleno,numpixels);
obtenida con el comando strel.
figure;
imshow(Filtro)
Imfill: Llena agujeros en la imagen de
se4=strel('square',3);
entrada. Un agujero es un conjunto de
dilatacion2=imdilate(BordesSobel,se4);
píxeles de fondo que no se puede alcanzar
figure;
rellenando el fondo desde el borde de la
imshow(dilatacion2)
imagen
relleno2=imfill(dilatacion2,'holes');
Analice cada imagen obtenida en este >> figure;
ejercicio. imshow(relleno2)
imshow(relleno)
numpixels=100;
Las imágenes de los dos puntos son iguales Filtro=bwareaopen(relleno,numpixels);
y los bordes sobel son más fuertes aparte figure;
Rellena algunos agujeros entre los bordes imshow(Filtro)
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)
IMPLEMENTACION DE CODIGOS

Daniel Esteban Agudelo Berrío

Hojaenferma=imread('Hojaenferma1.jpg');
//selecciona la ruta y la imagen a trabajar.
Hojaenferma=im2double(Hojaenferma);
//Convierte la intensidad de la imagen Con Umbral 0.7 y Numpixels de 200
Hojaenferma a doble precisión.
figure; // Indica a matlaba abrir un recuadro
en el que mostrará una figura dada.
imshow(Hojaenferma); // se indica a
matlaba la figura a mostrar.

umbral=0.8; //Seleccion del umbral a partir


Con Umbral 0.85 y Numpixels de 200
de cual valor es un pixel blanco o es negro.
binHojaenferma=im2bw(Hojaenferma,umbr
al); //Crea una imagen a partir de una
imagen de intensidad basado en el umbral
dado.
figure;
imshow(binHojaenferma);
Análisis:
numpixels=5; // Variabla que indica Luego de revisar las gráficas obtenidas al
cantidad de Pixeles ejecutar el comando en el software Matlab,
Filtro=bwareaopen(binHojaenferma,numpix la combinación de umbral y filtro que
els); permite identificar la enfermedad es la de
// se utiliza la sentencia bwareaopen la cual umbral de 0.7 y filtro de pixeles mayores a
quita todos los objetos que tengan menos de 200, pues en esta se identifica plenamente
5 pixeles de la imagen binHojaenferma que es una cantidad determinada de un
creando una nueva imagen. animal y permite identificar su forma. Se
figure; nota que al aumentar el umbral y el número
imshow(Filtro); de pixeles la imagen se va degradando y no
muestra información precisa comparando
con la imagen original. Cuando disminuye el
Resultado de las Imágenes. umbral y el número de pixeles lo que sucede
Con umbral de 0.8 y numpixels de 5: es que no se tiene una imagen precisa o más
“sólida” de lo que se está tratando de
identificar.

Con Umbral de 0.7 y Numpixels de 10:


Funciones Canny y Sobel.
Hojaenferma=imread('C:\Users\Daniel\Goo
gle Drive\Ingenieria
Teleco\SemestrelV\Tratamiento de
Código de ruido y filtro para los ruidos de Imagenes\Fase2\PruebasMatlab\Hojaenferm
Sal y pimienta y gaussiano. a1.jpg'); //selección de la imagen a analizar.
imc=imread('C:\Users\Daniel\Google GrayHojaenferma=rgb2gray(Hojaenferma);
Drive\Ingenieria //lleva la imagen Hojaenferma de RGB a
Teleco\SemestrelV\Tratamiento de escala de grises eliminando la información
Imagenes\Fase2\PruebasMatlab\Hojaenferm del tono y saturación y conserva la
a1.jpg'); luminancia.
im=rgb2gray(imc); figure;
fg = imnoise(im,'gaussian'); imshow(Hojaenferma) // Muestra la imagen
fs = imnoise(im,'salt & pepper',0.1) original, en RGB.
h1=fspecial('average'); BordesCanny=edge(GrayHojaenferma,'Cann
mediana1=medfilt2(fg); y'); comando para la detección de bordes
mediana2=medfilt2(fs); usando el metodo Canny, el cual consiste en
%Representaciones de las imágenes encontrar máximos y mínimos en los
subplot(2,3,1),subimage(fg),title('Imagen Gradientes (derivadas en los diferentes ejes,
con ruido gaussiano'); en el caso de una imagen bidimensional:
subplot(2,3,4),subimage(fs),title('Imagen x,y). Mediante el uso de umbrales, este
con ruido sal y pimienta'); método es el menos propenso al ruido y más
subplot(2,3,3),subimage(im),title('Original'); sensible a la detección de bordes débiles.
subplot(2,3,6),subimage(im),title('Original2' figure;
); imshow(BordesCanny) // muestra la imagen
con la detección del borde Canny.
Imágenes: BordesSobel=edge(GrayHojaenferma,'Sobel
'); // Detección de bordes en los distintos
niveles de intensidad asignando un bit a un
borde detectado y otro a la no detección,
este método está basado en el uso del
gradiente vertical y horizontal en cada bit y
multiplicado con la imagen en escala de
grises para determinar la existencia o no de
un borde discreto.
figure;
imshow(BordesSobel) // muestra la imagen
con la detección del borde Sobel.
Resultado de los bordes: imagen estructurada que para este caso es la
del borde.
figure;
imshow(erosion)

se2=strel('square',2); // Estructura la imagen,


en este caso de una forma cuadrada con un
tamaño de 2 pixeles.
erosion2=imerode(BordesSobel,se2); //
Análisis: Realizará el mismo procedimiento de la
Para el propósito del proyecto, se evidencia sentencia erosion pero esta vez basado en la
que el método más acorde para la detección estructura cuadradad de 2 pixeles.
de bordes el Sobel, debido a que se muestra figure;
de una forma más evidente debido al claro imshow(erosion2)
bordeado que tiene cada una de las moscas
las cuales son la plaga o enfermedad que en
el momento tiene la hoja. Mientras en el
borde Canny debido a su alta sensibilidad en
la detección de bordes no se obtiene una
imagen que brinde información.

Erosión:
Hojaenferma=imread('C:\Users\Daniel\Goo Dilatación
gle Drive\Ingenieria se3=strel('line',3,2); // Estructura la imagen
Teleco\SemestrelV\Tratamiento de en este caso de una forma lineal con una
Imagenes\Fase2\PruebasMatlab\Hojaenferm longitud de 3 y un ángulo de 2 grados.
a1.jpg'); dilatacion=imdilate(BordesSobel,se3); // Se
GrayHojaenferma=rgb2gray(Hojaenferma); aplica dilatación a la imagen con la
figure; estructura se3
imshow(Hojaenferma) figure;
BordesCanny=edge(GrayHojaenferma,'Cann imshow(dilatacion)
y'); relleno=imfill(dilatacion,'holes'); //este
figure; proceso de relleno, con la sentencia holes,
imshow(BordesCanny) indica que llenará aquellas partes que tienen
BordesSobel=edge(GrayHojaenferma,'Sobel un borde definido cerrado.
'); figure;
figure; imshow(relleno)
imshow(BordesSobel) numpixels=300;
Filtro=bwareaopen(relleno,numpixels);
se1=strel('line',3,2); // Estructura la imagen //con la sentencia bwareaopen se quitará
en este caso de una forma lineal con una todos los objetos que tengan menos de 300
longitud de 3 y un ángulo de 2 grados. pixeles
erosion=imerode(BordesSobel,se1); // luego figure;
de haber sido estructurada la imagen, esta imshow(Filtro)
sentencia mostrará las erosiones en la nueva
se4=strel('square',2); // Estructura la imagen, determinante como se desarrolla la
en este caso de una forma cuadrada con un reconstrucción morfológica y que tan
tamaño de 2 pixeles. acertados son los métodos de aproximación
dilatacion2=imdilate(BordesSobel,se4); // Se que maneja utilizando las operación y lógica
aplica dilatación a la imagen con la de conjuntos.
estructura se4
figure;
imshow(dilatacion2) IV. CONCLUSIONES
relleno2=imfill(dilatacion2,'holes'); //este
Al concluir el desarrollo de este trabajo en el
proceso de relleno, con la sentencia holes,
cual se ejecuta las técnicas de separación de
indica que llenará aquellas partes que tienen
objetos de una imagen con el uso de Matlab
un borde definido cerrado.
y se elige los diferentes tipos de filtros como
figure;
solución al mejoramiento de una imagen
imshow(relleno2)
digital. Como tambien se dio la respuesta a
imshow(relleno)
las diferentes preguntas planteadas y
numpixels=300;
tambien se hizo el proceso de la imagen
Filtro=bwareaopen(relleno,numpixels);//con
seleccionada por cada integrante logrando
la sentencia bwareaopen se quitará todos los
obtener un buen resultado en cada uno de los
objetos que tengan menos de 300 pixeles
experimentos, siendo de gran importancia
figure;
para afianzar nuestros conocimientos
imshow(Filtro)
logrando obtener un buen aprendizaje en la
materia

Se logró evidenciar que en los diferentes


análisis realizados en las distintas muestras
de hojas enfermas, la delineación de cada
objeto visto en la imagen tiene su comando
de mejor implementación por ejemplo en el
momento que los objetos son de
características lineales no es muy
recomendable el uso de square puesto este
comando es mejor usarlo para rellenar por
su caracterisiticas digitales.

El uso de los análisis sistematizados brinda


Análisis: la capacidad de analizar información a
En esta etapa se ha aplicado el método de grandes volúmenes y con una exactitud muy
dilatación perteneciente a la reconstrucción superior que al realizarlo por inspección
morfológica integrado con otros métodos humana simplemente.
como el relleno, el filtrado y el bordeado de
imágenes, obteniendo una imagen La identificación de elementos en la escala
consistente de la enfermedad que padece la de grises facilita la diferenciación de los
hoja enferma. Resulta de gran importancia la objetos a analizar.
forma final de esta imagen debido a la
información que puede aportar, ya que se ve Se puede ver que el contenido y la temática de
de una forma clara la mosca blanca. Es este curso nos van a mostrar mucho más allá, de
lo que se puede hacer con una imagen, y como Morfología, disponible
es que con determinado proceso se puede extraer en:http://alojamientos.us.es/gtocoma/pid/tem
información relevante para diversos proyectos. a5-1.pdf

Morfología matemática, disponible


en:https://es.wikipedia.org/wiki/Morfolog%
V. REFERENCIAS C3%ADa_matem%C3%A1tica
Técnicas de Segmentación en Procesamiento
Digital de Imágenes, Dra. Nora La Serna
Boletín de la Sociedad Entomológica Palomino, 1 Facultad de Ingeniería de
Aragonesa (S.E.A.), nº 53 (31/12/2013): Sistemas e Informática, disponible
443–464, BINARIZACIÓN DE en:http://sisbib.unmsm.edu.pe/BibVirtual/Pu
IMÁGENES DIGITALES Y SU blicaciones/risi/2009_n2/v6n2/a02v6n2.pdf
ALGORITMIA COMO HERRAMIENTA
APLICADA A LA ILUSTRACIÓN Segmentación de imágenes a través de
ENTOMOLÓGICA Rafael Magro reconstrucción morfológica en niveles de
disponible en: http://sea- gris. Moler Emilce, Pastore Juan Ignacio,
entomologia.org/PDF/Boletin53/443464BS Bouchet Agustina Laboratorio de Procesos y
EA53BinarizacionRMagro.pdf Medición de Señales Facultad de Ingeniería,
Universidad Nacional de Mar del Plata
Procesadores de imágenes- Reduccion de disponible
Ruido disponible en:http://sedici.unlp.edu.ar/bitstream/handle/
en:https://www.albedomedia.com/tecnologia 10915/22597/Resumen.pdf?sequence=1
/procesadores-de-imagen-reduccion-de-
ruido/ Ruidos y Filtros Segmentación, María Elena
Buemi disponible en:http://www-
Ruido y Filtrado disponible 2.dc.uba.ar/materias/t1/files/ClaseNov3.pdf
en:http://www.dc.uba.ar/materias/t1/2015/c2
Contribución al tratamiento de imagenes:
/archivos/ClaseRuidoFiltrado2C2015.pdf
filtros selectivos BEN HAMZA
ABDESSAMAD 1997
https://books.google.com.co/books?id=w32s
Ruido en la fotografía digital disponible en:
jweacaaj
https://es.wikipedia.org/wiki/Ruido_en_la_f
otograf%C3%ADa_digital#Ruido_Impulsio Tratamiento de Imágenes Y Aplicaciones
nal_o_.22Sal_y_Pimienta.22 Nadia Lizbeth Bermeo Campos, Oscar
AlonsoCespedes 2012
Ruidos y Filtros Segmentación, María Elena https://books.google.com.co/books?isbn=36
Buemi disponible en:http://www- 59002941
2.dc.uba.ar/materias/t1/files/ClaseNov3.pdf
Filtros digitales : aplicación al tratamiento
TRATAMIENTO DEL RUIDO, disponible de imágenes Patricia Pisabarro
en:http://www.udb.edu.sv/udb/archivo/guia/ Marrón, Alfonso García Renedo - 1996 -
biomedica-ingenieria/imagenes- https://books.google.com.co/books?id=zMt
medicas/2015/ii/guia-4.pdf QcgAACAAJ
Bovik, A. C. (2005). Handbook of Image
and Video Processing. Amsterdam:
Academic Press, 2005. eBook Collection
(EBSCOhost), pp. 4 – 12. Recuperado de:
http://bibliotecavirtual.unad.edu.co:2048/log
in?user=proveedor&pass=danue0a0&url=htt
p://bibliotecavirtual.unad.edu.co:2051/login.
aspx?direct=true&db=nlebk&AN=214674&
lang=es&site=ehost-live
Detección de bordes, Métodos basados en
operadores
lineales de gradiente Extraído de
http://www.sc.ehu.es/ccwgrrom/transparenci
as/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)
Image Processing Toolbox
https://edoras.sdsu.edu/doc/matlab/toolbox/i
mages/imdilate.html
Documentation MathWorks
https://www.mathworks.com/help/images/ref/
imerode.html

https://www.mathworks.com/help/images/ref/
imdilate.html

https://www.mathworks.com/help/images/ref/
imfill.html

Detección de bordes en una imagen.


Universidad de Jaén.
http://www4.ujaen.es/~satorres/practicas/prac
tica3_vc.pdf

También podría gustarte