Professional Documents
Culture Documents
RECONSTRUCCIN MORFOLGICA
(Septiembre 2017)
Abstract x In the next work we will see the digital como los escneres y las cmaras
results in the processing of grayscale images and the
digitales.
different commands that exist to establish their
operation in the image processing
II. OBJETIVOS
ndex Terms RGB, HSV, Pixel, histograma,
Resolucin, imagen, aulas virtuales, sylabus, agenda
Objetivos generales
del curso.
Conocer utilizar y realizar los diferentes
anlisis de imgenes que permiten tener una
I. INTRODUCCIN cierta informacin que ayude a un proceso de
investigacin.
E
n el siguiente trabajo veremos los Objetivos Especficos
resultados en el procesamiento de una
Creacin de una nueva Interfaz.
imgenes en escala de grises y los
Permite la Creacin de un nuevo
diferentes comandos que hay para establecer
su funcionamiento dentro del procesamiento sistema de visualizacin de las
imgenes y seguimiento de s u
de imgenes.
tratamiento.
El presente trabajo pretende dar respuesta a
las diez (10) preguntas propuestas en la gua Integracin de la funcin de filtrado,
de actividades y continuar trabajando en la realizada en proyectos anteriores, en
imagen que se eligi para leer en software el nuevo entorno.
Matlab
El reconocimiento y la
La mayora de las tcnicas de umbralizacin implementacin de una funcin
estn basadas en la informacin estadstica mejorada de clasificacin.
que brinda el histograma unidimensional,
sobre todo en aquellas imgenes donde los Creacin e implementacin de
objetos tienen una superficie o textura funciones para el clculo de la
homognea y el fondo es ms o menos fiabilidad de la clasificacin
uniforme. obtenida.
.
EXPLICACION DE LAS LINEAS DE COMANDO
Square:
IMPLEMENTACION DE CODIGOS
Eliecer Solano Solano
Imagen 4
hojaenferma=imread('hojaenferma1.jpg');
hojaenferma= im2double(hojaenferma);
figure;
imshow(hojaenferma)
umbral=0.85;
binhojaenferma=im2bw(hojaenferma,umbral);
figure;
Imagen 2
imshow(hojaenferma)
numpixels=200;
hojaenferma=imread('hojaenferma1.jpg'); filtro=bwareaopen(binhojaenferma,numpixels);
hojaenferma= im2double(hojaenferma); figure;
imshow(hojaenferma) imshow(filtro)
figure;
imshow(hojaenferma)
umbral=0.7;
binhojaenferma=im2bw(hojaenferma,umbral);
figure;
imshow(hojaenferma)
numpixels=10;
filtro=bwareaopen(binhojaenferma,numpixels);
figure;
imshow(filtro)
hojaenferma=imread('hojaenferma1.jpg');
hojaenferma= im2double(hojaenferma);
figure;
imshow(hojaenferma)
umbral=0.6;
binhojaenferma=im2bw(hojaenferma,umbral);
figure;
imshow(hojaenferma)
filtro correspondiente para la imagen que
numpixels=100; han investigado en el trabajo individual de la
filtro=bwareaopen(binhojaenferma,numpixels);
figure; parte terica fase I.
imshow(filtro)
Selecciona la ruta y la imagen en la que se va a trabajar Filtro para el ruido sal y pimienta
Trial>> Hojaenferma=im2double(Hojaenferma);
convierte la intensidad de la imagen a doble precisin Hojaenferma=imread('hojaenferma1.jpg');
Trial>> figure; crea una ventana donde aparece la GrayHojaenferma=rgb2gray(Hojaenferma);
imagen c=imnoise(Hojaenferma, 'salt & pepper',0.2);
Trial>> imshow(Hojaenferma) muestra la imagen en g=imnoise(GrayHojaenferma, 'salt & pepper',0.2);
una figura j=imnoise(Hojaenferma,'gaussian',0.5);
figure;
Trial>> umbral=0.6; da valor a una imagen y permite subplot(2,3,1);imshow(Hojaenferma);title('Imagen
distinguir si es claro o negro original');
Trial>> binHojaenferma=im2bw(Hojaenferma,umbral); subplot(2,3,2);imshow(GrayHojaenferma);title('imagen
convierte imagen a escala de grises GRISES');
Trial>> figure; subplot(2,3,3);imshow(c);title('salt & pepper original');
Trial>> imshow(binHojaenferma) subplot(2,3,4);imshow(g);title('salt & pepper grises');
subplot(2,3,5);imshow(j);title('gaussian original');
Trial>> numpixels=100; la cual nos indica la antidad de subplot(2,3,6);imshow(h);title('gaussian grises');
pixeles
Trial>>
Filtro=bwareaopen(binHojaenferma,numpixels);
elimina componentes conectados produciendo otra
imagen
Trial>> figure;
Trial>> imshow(Filtro)
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;
Trial>> imshow(erosion2) Strel ('line', 3, 2) crea un elemento estructural
Lineal en el plano
Luego la dilatacin de los valores devueltos de
strel.
Y la salida grafica de la dilatacin.
Luego el relleno de los huecos y la dilatacin. 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 clculo del filtro para las reas binarias y
el relleno.
Luego muestra la salida grfica.
IMPLEMENTACION DE CODIGOS
Cristina Eliana Gmez Lozano
Imagen 1
Trial>>
Hojaenferma=imread('hojaenferma1.jpg');
Trial>>
Hojaenferma=im2double(Hojaenferma);
Trial>> figure;
Trial>> imshow(Hojaenferma)
Trial>> umbral=0.8;
Trial>>
binHojaenferma=im2bw(Hojaenferma,um
bral);
Trial>> figure;
Trial>> imshow(binHojaenferma)
Trial>> numpixels=5;
Trial>> Figura 2
Filtro=bwareaopen(binHojaenferma,num
pixels);
Trial>> figure; Trial>>
Trial>> imshow(Filtro) Hojaenferma=imread('hojaenferma1.jpg');
Trial>>
Hojaenferma=im2double(Hojaenferma);
Trial>> figure;
Trial>> imshow(Hojaenferma)
Trial>> umbral=0.7;
Trial>>
binHojaenferma=im2bw(Hojaenferma,um
bral);
Trial>> figure;
Trial>> imshow(binHojaenferma)
Trial>> numpixels=10;
Trial>>
Filtro=bwareaopen(binHojaenferma,num
pixels);
Trial>> figure;
Trial>>
imshow(Filtro)
Figura 3
Trial>>
Hojaenferma=imread('hojaenferma1.jpg');
Trial>>
Hojaenferma=im2double(Hojaenferma);
Trial>> figure;
Trial>> imshow(Hojaenferma)
Trial>> umbral=0.7;
Trial>>
binHojaenferma=im2bw(Hojaenferma,um
bral);
Trial>> figure;
Trial>> imshow(binHojaenferma)
Trial>> numpixels=200;
Trial>>
Filtro=bwareaopen(binHojaenferma,num
pixels);
Trial>> figure;
Trial>> imshow(Filtro)
Trial>> imshow(binHojaenferma)
Trial>> numpixels=200;
Trial>>
Filtro=bwareaopen(binHojaenferma,num
pixels);
Trial>> figure;
Trial>> imshow(Filtro)
Figura 4
Trial>>
Hojaenferma=imread('hojaenferma1.jpg');
Trial>>
Hojaenferma=im2double(Hojaenferma);
Trial>> figure;
Trial>> imshow(Hojaenferma)
Trial>> umbral=0.85;
Trial>>
binHojaenferma=im2bw(Hojaenferma,um
bral);
Trial>> figure;
Trial>>
Filtro=bwareaopen(binHojaenferma,n
umpixels); elimina componentes
conectados produciendo otra imagen
Trial>> figure;
Trial>> imshow(Filtro)
a.
b.
Trial>> se2=strel('square',2);
Trial>>
erosion2=imerode(BordesSobel,se2);
Trial>> figure;
Trial>> imshow(erosion2)
Trial>> numpixels=300;
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)
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)
Trial>>
Hojaenferma=imread('hojaenferma1.jpg');
GrayHojaenferma=rgb2gray(Hojaenferm
a);
figure;
imshow(Hojaenferma)
BordesCanny=edge(GrayHojaenferma,'C
anny');
figure;
imshow(BordesCanny)
BordesSobel=edge(GrayHojaenferma,'So
bel');
figure;
imshow(BordesSobel)
se3=strel('line',3,2);
Explique cada lnea de comando. Qu dilatacion=imdilate(BordesSobel,se3);
diferencias encuentra entre el ejercicio figure;
a y b? imshow(dilatacion)
relleno=imfill(dilatacion,'holes');
Rta/ en los dos ejrcicio tanto a como b figure;
podemos darnos cuenta que imshow(relleno)
prcticamente el cambio que tienen las numpixels=110;
imgenes son prcticamente los msmos. Filtro=bwareaopen(relleno,numpixels);
figure;
imshow(Filtro)
Indilate: Dilata la imagen Ienta puede se4=strel('square',4);
ser tanto binaria como en escala de dilatacion2=imdilate(BordesSobel,se4);
grises figure;
Infill: realiza la operacin morfolgica imshow(dilatacion2)
de rellenado en una imagen binaria relleno2=imfill(dilatacion2,'holes');
figure;
Analice cada imagen obtenida en este imshow(relleno2)
ejercicio. imshow(relleno)
numpixels=110;
Filtro=bwareaopen(relleno,numpixels);
Modifique el cdigo en los nmeros de figure;
square, line y numpixels hasta imshow(Filtro)
que su imagen resultante sea la ms
parecida a la que obtuvo en el punto
2.1, donde se visualizan el 80% de las
moscas blancas sin ruido externo.
IMPLEMENTACION DE CODIGOS
MINEIRA PAPAMIJA.
>>
Hojaenferma=imread('hojaenferma1.jpg');
>>
Hojaenferma=im2double(Hojaenferma);
>> figure;
>> imshow(Hojaenferma)
>> umbral=0.6;
>>
binHojaenferma=im2bw(Hojaenferma,um
bral);
>> figure;
>> imshow(binHojaenferma)
>> numpixels=100;
>>
filtro=bwareaopen(binHojaenferma,nump
ixels);
>> figure;
>> imshow(filtro)
>> Realizar el siguiente experimento
modificando el cdigo 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 lnea de comando. Qu Analice cada imagen obtenida en este
hacen las funciones im2bw y bwreaopen? ejercicio.
Podemos observar en las imgenes de la
>> hoja que en el umbral 0.6 se denota
Hojaenferma=imread('hojaenferma1.jpg'); mayor escala de blanco que el resto de las
lee la imagen a operar imgenes que se van acercando a 1.
Respecto al nmero especifico de pixeles,
>> entre mayor denominacin de pixeles la
Hojaenferma=im2double(Hojaenferma); imagen va tornndose con menos escalas
convierte la imagen a doble precisin de blanco y esto tambin se da por la
tomando la imagen como entrada, si la escala de umbral.
entrada no es del tipo doble el comando
devuelve una imagen equivalente reescalando Indique cual es la combinacin de
o compensando los datos segn sea necesario. umbral y de filtro que sirve para
>> figure; crea una ventana para ver la identificar la mosca blanca en la imagen
figura que ha seleccionado.
>> imshow(Hojaenferma) muestra la
La que me parece mejor es la de Umbral
imagen en una figura aparte
0.7 y numpixels de 200 ya que en esta se
observa justamente solo lo que son la
>> umbral=0.6; Parametriza le da valor a
mosca blanca en donde est ubicada ya
la imagen para permitir distinguir en una
que si el umbral es menor da lectura de
imagen los objetos del fondo de los
claridades de las hoja en s, y si le
objetos del primer plano
colocamos mayor nmero de pixeles ya
>>
no se alcanza a observar la mosca en
binHojaenferma=im2bw(Hojaenferma,um
donde se encuentra.
bral); convierte la imagen en escala de
grises; en una imagen binaria.
2.2. Cada estudiante debe averiguar cmo
implementar el filtro para el ruido sal y
Rta: im2bw (I, level) convierte la imagen
pimienta y el filtro para el ruido
en escala de grises I en una imagen
Gaussiano. Posteriormente implementar
binaria. La imagen de salida BW
el filtro correspondiente para la imagen
reemplaza todos los pxeles de la imagen
que han investigado en el trabajo
de entrada con luminancia mayor que el
individual de la parte terica fase I.
nivel con el valor 1 (blanco) y reemplaza
todos los otros pxeles con el valor 0
(negro)
Rta: bwreaopen Realizar la apertura del
rea.
>>
BordesCanny=edge(GrayHojaenferma,'C
anny'); Edge, canny: detectar bordes
utilizando el mtodo Canny. El mtodo
Canny encuentra aristas buscando
mximos locales del gradiente de la
funcin de edge calcula el gradiente
utilizando la derivada de un filtro
gaussiano. Este mtodo utiliza dos
umbrales para detectar bordes fuertes y
dbiles, incluyendo bordes dbiles en la
salida si estn conectados a bordes
fuertes. Mediante el uso de dos umbrales,
el mtodo de Canny es menos probable
que los otros mtodos sean engaados por
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 pequeas lneas y puntos.
b.
Hojaenferma=imread('Hojaenferma1.jpg')
; //selecciona la ruta y la imagen a
trabajar.
Hojaenferma=im2double(Hojaenferma);
//Convierte la intensidad de la imagen
Hojaenferma a doble precisin.
figure; // Indica a matlaba abrir un
recuadro en el que mostrar una figura
dada.
imshow(Hojaenferma); // se indica a
matlaba la figura a mostrar.
Con Umbral 0.7 y Numpixels de 200 Cdigo de ruido y filtro para los ruidos de
Sal y pimienta y gaussiano.
imc=imread('C:\Users\Daniel\Google
Drive\Ingenieria
Teleco\SemestrelV\Tratamiento de
Imagenes\Fase2\PruebasMatlab\Hojaenfe
rma1.jpg');
im=rgb2gray(imc);
Con Umbral 0.85 y Numpixels de 200 fg = imnoise(im,'gaussian');
fs = imnoise(im,'salt & pepper',0.1)
h1=fspecial('average');
mediana1=medfilt2(fg);
mediana2=medfilt2(fs);
%Representaciones de las imgenes
subplot(2,3,1),subimage(fg),title('Imagen
con ruido gaussiano');
Anlisis:
subplot(2,3,4),subimage(fs),title('Imagen
Luego de revisar las grficas obtenidas al
con ruido sal y pimienta');
ejecutar el comando en el software
subplot(2,3,3),subimage(im),title('Origina
Matlab, la combinacin de umbral y filtro
l');
que permite identificar la enfermedad es
subplot(2,3,6),subimage(im),title('Origina
la de umbral de 0.7 y filtro de pixeles
l2');
mayores a 200, pues en esta se identifica
plenamente que es una cantidad
determinada de un animal y permite
identificar su forma. Se nota que al
aumentar el umbral y el nmero de
pixeles la imagen se va degradando y no
muestra informacin precisa comparando
con la imagen original. Cuando
disminuye el umbral y el nmero de
pixeles lo que sucede es que no se tiene
Imgenes: BordesSobel=edge(GrayHojaenferma,'So
bel'); // Deteccin de bordes en los
distintos niveles de intensidad asignando
un bit a un borde detectado y otro a la no
deteccin, este mtodo 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 deteccin del borde Sobel.
Resultado de los bordes:
Dilatacin
se3=strel('line',3,2); // Estructura la
imagen en este caso de una forma lineal
con una longitud de 3 y un ngulo de 2
grados.
dilatacion=imdilate(BordesSobel,se3); //
Se aplica dilatacin a la imagen con la
estructura se3
figure;
imshow(dilatacion)
conocimientos 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