Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
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:
.
EXPLICACION DE LAS LINEAS DE COMANDO
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
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
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');
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.
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.
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)
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
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.
a.
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)
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)
MINEIRA PAPAMIJA.
>>
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
>>
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
>> figure;
>> imshow(BordesSobel) muestra la
imagen en una figura aparte con bordes
sobel
>>
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.
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
https://www.mathworks.com/help/images/ref/
imdilate.html
https://www.mathworks.com/help/images/ref/
imfill.html