You are on page 1of 7

Taller N5.

Procesamiento de Imgenes en el
Dominio Espacial

Martin Alberto Rodriguez Suarez Edwin Steven Perez Molina


Facultad de Ingeniera Facultad de Ingeniera
Programa de Ingeniera Electrnica extensin Tunja Programa de Ingeniera Electrnica extensin Tunja
Universidad Pedaggica y Tecnolgica de Colombia Universidad Pedaggica y Tecnolgica de Colombia
Tunja, Boyac - Colombia Tunja, Boyac - Colombia
martin.rodriguez01@uptc.edu.co edwin.perez01@uptc.edu.co

ResumenEn el siguiente documento se expone el desarrollo de Fig.2. Interfaz GUI ejercicio 1.


una serie de ejercicios bsicos donde se aplican tcnicas del
procesamiento de imgenes en el dominio espacial como el
redimensionamiento de imgenes, operaciones entre imgenes,
animaciones, umbralizacin y la obtencin de histogramas.
Mediante el software de simulacin Matlab estos ejercicios fueron
desarrollados.

I. DESARROLLO DE LA PRACTICA

A continuacin, se muestra la descripcin de los ejercicios


desarrollados en la prctica, de acuerdo con los requerimientos
solicitados por medio de las herramientas y comandos para el
anlisis de imgenes de MATLAB. Se desarrollo una interfaz
GUI donde se recopilan los ejercicios realizados. La Fig.1
muestra la interfaz concebida. En primera medida, mediante la accin del botn OPEN
IMAGE 1 se abre una imagen con dimensiones (512 x512)
Fig.1. Interfaz GUI principal. como se puede observar en la Fig.3, esto se realiza mediante el
comando uigetfile(), en este caso se trata de una imagen en
formato jpg.
Fig.3. Imagen 1 y botn OPEN IMAGE 1.

A. Ejercicio 1.
Inicialmente se puede observar en la Fig.2 la interfaz
desarrollada para la siguiente aplicacin, cuyo objetivo es la
visualizacin de dos imgenes de diferente tamao, A continuacin, la accin del botn OPEN IMAGE 2 es abrir
redimensionar una de estas al tamao de la otra, evidenciar el una imagen de distintas dimensiones que la mostrada en la Fig.3
resultado de operaciones bsicas entre imgenes y finalmente la esta vez su tamao es (294x171) como se puede observar en la
visualizacin del valor de las dimensiones de una imagen. Fig.4 esto se realiza mediante el comando uigetfile(), en este
caso se trata de una imagen en formato jpg.
Fig.4. Imagen 2 y botn OPEN IMAGE 2. Fig.6. Suma y resta entre imgenes.

Luego la opcin REDIMENSIONAR permite en este caso


ajustar el tamao de la imagen de la Fig.4 a las dimensiones de
la imagen de la Fig.3, esto se lleva a cabo mediante el comando
imresize ajustando las dimensiones deseadas de esta manera. Finalmente, se visualiza el valor de las dimensiones de una de
las imagenes utilizadas en este caso utilizando leyendo en
formato string el valor obtenido de la imagen con el comando
size(), el botn de accin es nombrado PROPIEDADES SIZE,
El resultado de este proceso se puede evidenciar en la Fig. 5. en el resultado final se puede apreciar que la imagen es de 512 x
512 pixeles y posee tres canales, esto se observa en la Fig.7.
Fig.7. Propiedades comando size().
Fig.5. Redimensionamiento de imgenes.

B. Ejercicio 5.
Se desarrolla la interfaz grafica mostrada en la Fig.xx que se
compone de una lista donde aparecen las transformaciones
logartmica, exponencial, raz-potencia, correccin gama y
adems el proceso de umbralizacin de imagen, tambin busca
evidenciar el mecanismo de ecualizacin del histograma de una
Posteriormente, se realiza las operaciones bsicas entre imagen.
imgenes, esto es llevado acabo mediante la lectura de dos
Fig.XX. Interfaz GUI ejercicio 5.
imgenes de las mismas dimensiones, luego se hace la suma o
resta para este caso pixel a pixel entre las dos imgenes, el
resultado se almacena en una nueva imagen, para la resta se
desarrolla el mismo proceso solo cambiando la suma por una
resta pixel a pixel, el resultado y los botones de ejecucin se
puede apreciar en la Fig.6.
Donde C es una constante de ganancia y r es la imagen original.
Se implementa este modelo de transformacin en el algoritmo
de la siguiente forma.

Donde C es la constante de ganancia y B es la imagen original,


el resultado presento un cambio ms drstico en el nivel de
intensidad respecto al de la imagen predeterminada. Esto se
observa en la Fig.xx.

Fig.XX. Resultado transformacin exponencial, con C=1.9.


Cabe aclarar que la interfaz posee una lista de las
transformaciones desarrolladas, adems de dos espacios para
ingresar el valor de las constantes C y Gamma utilizadas en las
transformaciones mencionadas y un botn nombrado
ECUALIZACION que realizara el proceso de ecualizacin
del histograma de una imagen.

Inicialmente se efecta el proceso de la transformacin


logartmica sobre una imagen, teniendo en cuenta su modelo
mostrado a continuacin.

Donde C es una constante de ganancia, r es la imagen original


y s es el resultado de la transformacin, se desarrollo entonces
un algoritmo basado en este modelo para la obtencin de esta Luego de esto se efecta el proceso transformacin Raz-
transformacin de esta manera. Potencia sobre una imagen, teniendo en cuenta su modelo
mostrado a continuacin.

Donde C es la constante de ganancia y B es la imagen original,


cabe aclarar que esta imagen fue llevada a un formato tipo
double, debido a restricciones propias del software. El
Donde C es una constante de ganancia, r es la imagen original
resultado presento un aumento en el nivel de intensidad de la
y Gamma es un operador de incremento del rango dinmico de
imagen. Esto se observa en la Fig.xx.
regiones oscuras y claras de la imagen si gamma > 1 se
Fig.XX. Resultado transformacin logartmica, con C=3. incrementa el rango dinmico de las regiones claras, en cambio
s gamma < 1 se incrementa el rango dinmico de las regiones
oscuras de la imagen. En la Fig.xx se muestra el resultado de la
transformacin Raiz-Potencia con factor C=1.7 y Gamma=0.8
donde se evidencia que debido a que gamma es menor que 1 las
regiones oscuras de la imagen tienden a intensificarse si gamma
disminuye este comportamiento ser ms drstico.

Fig.XX. Resultado transformacin Raiz-Potencia, con C=1.7 y Gamma=0.8.

A continuacion se realiza el proceso de transformacin


exponencial de una imagen, teniendo en cuenta su modelo
propio.
Ahora, se observa el proceso de implementacin de la El proceso de umbralizacin adaptativa busca seleccionar
transformacin correccin gamma que realiza el proceso rangos de los niveles de intensidad de una imagen donde ser
opuesto a la transformacin Raz-Potencia, es decir cuando el binarizada es decir adoptaran niveles de 0 (negro) y 1 (blanco)
operador gamma es mayor que 1 el rango dinmico de las en rangos especficos. La implementacin de esta tcnica en el
regiones oscuras de la imagen tiende a intensificarse o algoritmo se realiz leyendo las dimensiones de una imagen,
aumentar, por otra parte, si el valor de gamma es menor que 1 posteriormente se hace un barrido pixel a pixel y se define que
el rango dinmico de las regiones claras de la imagen tiende a para valores de intensidad menores a 150 sern interpretados
aumentar. Para implementar el algoritmo de la transformacin como 0 (negro) y cualquier valor superior a 150 indicarn un 1
correccin gamma se tiene en cuenta su modelo este se puede (blanco) posteriormente se reconstruye la imagen. El resultado
apreciar a continuacin. se observa en la Fig. xx adems de su comparacin con una
imagen binarizada, esta realizada mediante el comando im2bw.
1 Fig.XX. Resultado umbralizacin adaptativa y comparacin con proceso de
= {} = binarizacin.

Donde C es una constante de ganancia, r es la imagen original


y Gamma es un operador de incremento del rango dinmico de
regiones oscuras y claras de la imagen. En el algoritmo este
modelo se implemento de la siguiente manera.

Donde C es una constante de ganancia, B es la imagen original


y Gamma es un operador de incremento del rango dinmico de
regiones oscuras y claras de la imagen. En la Fig.xx se muestra
el resultado de la transformacin correccin Gamma con C=1.3
y Gamma=0.9, esta figura evidencia que para valores del
operador gamma menores que 1 la transformacin tiende a definen tres matrices de diferentes dimensiones estas son a=[3
incrementar la intensidad de las regiones claras de la imagen, 8.2 -1], b=[0.5 4 -3.2; 4 0.7 10], c=[-3:0.1:25], la matriz a indica
siendo opuesto al comportamiento de la transformacin Raz- que tiene una fila y tres columnas, la matriz b posee dos filas y
Potencia donde la imagen para estos valores tiende a tres columnas finalmente C indica un vector desde -3 a 25 con
oscurecerse. pasos de 0.1. Luego de la definicin de a,b,c se procede al
desarrollo de los siguientes numerales, donde se hace uso de una
Fig.XX. Resultado transformacin Correccin Gamma con C=1.3 y serie de comandos.
Gamma=0.9.
1. Se definen tres variables para definir las dimensiones que
poseen cada una de las matrices anteriormente mencionadas a,b
y c, para este caso se usa el comando size(x) donde x ser la
matriz que afectar, que entregara con resultado dos valores uno
que indicara el nmero de columnas y otro que indicara el
nmero de filas posee la matriz a analizar. Las variables
definidas fueron nombradas como SIZE_A, SIZE_B, SIZE_C.
Para determinar el nmero de elementos que conforman en este
caso las matrices a y c se hace uso del comando length(x) donde
x es la matriz que ser afectada. Las variables definidas fueron se realiza mediante el uso del comando eye(3) la matriz
nombradas como L_A y L_C. Al trabajar con estas variables se identidad se forma por una diagonal de unos (1) y la matriz c=[1
evidencio que la matriz a posee 3 elementos y la matriz c posee 3 2+4*i; 02*i 1 3;9 0 1]. Para cada matriz se cre una variable
281 elementos. independiente. A continuacin, se observa el trabajo relacionado
con la operacin entre matrices desarrollado en Matlab.
2. para observar elementos especficos que posee una matriz en
alguna ubicacin, se opta por ejecutar el comando a(2,1) ya que 1. Se realizaron operaciones entre matrices almacenando en una
el ejercicio plantea escoger el elemento ubicado en la fila dos y variable el resultado de cada operacin, inicialmente se realiza
la columna uno de la matriz A, este comando inicialmente s=a+b que efecta la suma de la matriz a con la matriz b esto lo
requiere el valor de la fila y posteriormente el de la columna y realiza sumando elemento a elemento entre matrices el
la respectiva matriz, as A(fila, columna). Al identificar el resultado es almacenado en la variable s; la operacin r=a-c
antepenltimo elemento de la matriz c el comando fue c(1,279). efecta la resta elemento a elemento de las matrices a y c y
conserva el resultado en la variable r; la operacin p=a*c realiza
3. A continuacin, se requiere la seleccin de la segunda fila y la multiplicacin de la matriz a con la matriz c, haciendo el
la tercera columna de la matriz b para llevar a cabo esto se utiliz producto entre filas y columnas, posteriormente se suman los
el comando b(2,:) indicando que se afectara la matriz b y solo valores obtenidos para obtener cada elemento, la operacin
indicara los elementos de la segunda fila, por otra parte, para
d=a^2 basa su funcionamiento en multiplicar la matriz por ella
seleccionar nicamente los valores de la columna tres de la misma siguiendo el procedimiento del producto, es decir
matriz b se usa el comando b(:,3). multiplicar las filas por columnas y sumar para obtener cada
4. Para realizar el almacenamiento de variables en Matlab se elemento; para la operacin e=a^(1/2) efecta el inverso de la
utiliza el comando save, en este caso se guardarn variables tipo raz cuadrada de la matriz A en este caso y su resultado es
binarias de las variables definidas anteriormente (SIZE_A, almacenado en la variable e; para finalizar, la operacin
SIZE_B, SIZE_C, L_A, L_C), creando una variable llamada g=exp(a) desarrolla el exponencial de la matriz a es decir e^a el
almacenamiento_binario donde se crear un archivo binario con comando exp realiza esta operacin y su resultado es
extensin .mat nombrado almacenamiento_bin_var.mat. en este almacenado en la variable g.
archivo se almacenaron las variables de dimensiones de las 2. A continuacin, se realizo el cociente y producto elemento a
matrices y la cantidad de elementos de a y c. elemento entre las matrices a y c, para esto se hace uso de los
5. se realiza a su vez el almacenamiento de la matriz b en un comandos (.*) y (./) que identifican productos y cocientes entre
archivo ASCII este tipo de archivos maneja extensin .dat, este cada elemento de la misma ubicacin para dos matrices.
fue nombrado como almacenamiento_asc_var.dat y mediante el 3. La transpuesta de la matriz a, se desarrollo mediante el uso
comando save(almacenamiento_asc_var.dat b -ascii) se guard del comando (a), este efectua el cambio ordenado entre las filas
la matriz b. y columnas de una matriz en especifico, para este caso la matriz
6. Luego de trabajar con las variables y comandos desarrollados a.
se utiliza el comando CLEAR para borrar los datos almacenados 4. La conjugada de la matriz c se lleva a cabo cambiando el signo
en memoria. de la parte imaginaria de los elementos de la matriz que los
7. Una vez borrados los datos en memoria mediante el comando contengan, el comando utilizado es conj(c); el resultado es
CLEAR se realiza la lectura de los datos almacenados en el almacenado en la variable conjugada_C.
archivo binario correspondiente a las variables definidas con 5. En una matriz la traza proporciona la suma de los elementos
anterioridad de las dimensiones y cantidad de elementos de las de la diagonal principal, en este caso fue obtenida la traza de la
matrices, esto fue desarrollado mediante el uso del comando matriz a, el comando utilizado fue trace(a), el resultado fue
load('almacenamiento_bin_var.mat') que carga el contenido del almacenado en la variable TRAZA_A.
archivo binario, posteriormente mediante el uso del comando
whos se enlistan las variables en memoria en este caso SIZE_B, 6. Para hallar el determinante de la matriz a se utiliza el comando
SIZE_C, L_A, L_C. det(a), que opera mediante el mtodo de Sarrus basado en sumar
los productos de las diagonales primarias adems de la resta de
8. Una vez borrados los datos de memoria mediante el comando
los productos de las diagonales secundarias, este resultado fue
CLEAR se realiza la lectura de los datos almacenados en el almacenado en una variable llamada DET_A.
archivo tipo ASCII correspondiente a la matriz b, el comando
utilizado para cargar el archivo fue 7. Se realiza el calculo de la inversa de la matriz c, utilizando el
load(almacenamiento_ascii), posteriormente con el uso del comando inv(c), este realiza el producto del inverso del
comando whos se evidencio el contenido del archivo ascii determinante y la transpuesta todo esto hecho con la matriz c, el
mostrando las dimensiones de la matriz b en este caso 2x3. resultado fue almacenado en una variable nombrada INV_C.
C. Ejercicio 2. 8. Finalmente todas las variables creadas para este ejercicio en
este caso PRODUC_A_C,COCIEN_A_C,transpuesta_A,
conjugada_C, TRAZA_A,DET_A,INV_C, correspondientes a
Para efectuar el desarrollo de este ejercicio inicialmente se los productos y cocientes elemento a elemento de la matriz a y
definen tres matrices con diferentes caractersticas respecto a c, la transpuesta de la matriz a, la conjugada de la matriz c, la
tipos de nmero y funcin, las matrices definidas fueron a=[-3 4 traza de la matriz a, el determinante de la matriz a y la inversa
5; 2 0 0; 2 0 -1], b=3*I(3) donde I(3) es la matriz identidad esta de la matriz c son almacenados en un archivo binario con
extensin .mat, ya que este tipo de archivos no tiene restriccin smbolos de los datos se realiza sobre el comando plot(), para
de la dimensin de los datos almacenados, mediante el uso del este caso se elige color rojo r y dos puntos : que indica que
comando save (almacenamiento_binario, variables) se una lnea punteada representara la funcin.
guardan las variables mencionadas.
D. Ejercicio 3. 2. Se grafica la expresin z (exponencial) en funcin del vector
de tiempo t, mediante los comandos xlabel(), ylabel( ) y title()
Este ejercicio se realiz en base en las tablas propuestas en la
se configuran los nombres de los ejes y el titulo para este
gua de trabajo, por cada tabla se crearon dos vectores cada uno
grafico, el cambio de color y eleccin del tipo de smbolos de
correspondiente a uno de los ejes, posteriormente son
graficados, configurando las propiedades de la figura como los datos se realiza sobre el comando plot(), para este caso se
nombres de los ejes, grilla, as como el tipo de escala, teniendo elige color azul b y dos lneas continuas -- que indica que
en cuenta si es de tipo logartmico o lineal. Adems, debido a la una lnea a trazos representara la funcin.
naturaleza de los datos en este caso experimntales, la
representacin se hace mediante smbolos de o y *. 3. Se grafican las expresiones X y Z en funcin del vector de
tiempo t sobre la misma grafica, mediante los comandos
Con base en las tablas se obtuvieron cuatro graficas distintas las xlabel(), ylabel( ) y title() se configuran los nombres de los ejes
cuales se representan en la Fig,1 haciendo uso del comando y el titulo para este grafico, el cambio de color y eleccin del
subplot se determina la ubicacin de cada una de las graficas tipo de smbolos de los datos se realiza sobre el comando plot(),
sobre la figura; dependiendo las indicaciones respecto a la escala
para este caso se elige color azul b y dos lneas continuas --
se utiliz el comando plot() para graficar datos lineales, el
comando loglog() se usa para escalizar logartmicamente los dos que indica que una lnea a trazos representara la funcin x,
ejes de la grafica, por ultimo el comando semilogx() se utiliza sobrepuesta se encuentra la funcin z representada en color rojo
para escalizar un solo eje en escala logartmica para este caso el y con una lnea punteada.
eje x, el comando legend() proporciona la visualizacin de la
leyenda en cada uno de las grficos. La Fig.2 indica el resultado de la grficas y variacin de los
parmetros para cada funcin.
Fig. 1. Resultado graficos respecto a escala y tipo de datos utilizados.

Fig.2. Resultado de grficos respecto a la funcin x o z.

E. Ejercicio 4. 4. El comando ginput permite identificar puntos especficos,


mediante el posicionamiento del cursor. Durante el primer clic
De acuerdo con el ejercicio propuesto en la gua se cre un se originan los ejes del grafico. El comando [x,y]=ginput(n) da
vector de tiempo con valores entre 0 y 512 con pasos de 0.1, la posibilidad de introducir n puntos, adems indica una lista de
donde tambin se crearon dos funciones dadas por la expresin las coordenadas de cada punto tomado. La Fig.3 indica el
= 8 5 + 3 7 y = . resultado de la ejecucin del comando ginput tomando 5
puntos.
1. Inicialmente se grafica la expresin x (polinmica) en
Fig.3. Operacin del comando ginput con cinco puntos.
funcin del vector de tiempo t, mediante los comandos xlabel(),
ylabel( ) y title() se configuran los nombres de los ejes y el titulo
para este grafico, el cambio de color y eleccin del tipo de
El cdigo utilizado y la lista de coordenadas de los puntos se
observa a continuacin en la Fig.4.

Fig.4. Cdigo y coordenadas del comando ginput.

CONCLUSION
El anlisis, trabajo y operacin de matrices, adems del manejo
grafico y de un gran numero de clases de variables fue posible
llevarlo a cabo de manera sencilla y eficaz por medio del
entorno del software Matlab, ya que es una de las mejores
herramientas respecto al procesamiento de datos.

You might also like