Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Identificacion de Colores y Objetos
Identificacion de Colores y Objetos
Tratamiento de
imágenes mediante
Matlab
1 MODIFICACIÓN DE LOS COLORES ................................................................................................................. 1
1.1 OBTENCIÓN DEL NEGATIVO DE UNA IMAGEN ....................................................................................................... 1
1.2 MODIFICACIÓN DEL BRILLO DE UNA IMAGEN ....................................................................................................... 2
1.3 DIBUJO DE LA IMAGEN EN BLANCO Y NEGRO Y ESCRITURA EN UN FICHERO ......................................................... 2
2 IDENTIFICACIÓN DE OBJETOS ........................................................................................................................ 2
2.1 INTRODUCCIÓN .................................................................................................................................................... 2
2.2 DETERMINACIÓN DE UN OBJETO MEDIANTE MÁSCARAS DE GRADIENTE ............................................................... 3
2.3 ENCABEZADO DE LA FUNCIÓN.............................................................................................................................. 3
3 DIBUJO DEL MAPA Y DE LA TRAYECTORIA DEL ROBOT ....................................................................... 4
3.1 INTRODUCCIÓN .................................................................................................................................................... 4
3.2 SISTEMA DE COORDENADAS................................................................................................................................. 4
3.3 PROGRAMACIÓN .................................................................................................................................................. 5
2 IDENTIFICACIÓN DE OBJETOS
2.1 Introducción
Vamos a realizar una operación digital consistente en extraer el contorno de una figura. Usted
partirá de una imagen y creará una nueva imagen binaria. Está nueva imagen tendrá un número de
píxeles igual a la imagen de partida pero el valor RGB de estos píxeles será de 1 –si el píxel no
pertenece al contorno de la figura– o de 0 –si el píxel pertenece al contorno de la figura.
En primer lugar se ha de crear una matriz de dimensión MxN que contenga la media de los colores
de la hipermatriz de dimensión MxNx3 con los colores RGB.
Sobre esta nueva matriz hay que aplicar dos máscaras (H1, H2). Estas máscaras se llaman máscaras
de gradiente porque dan un valor de la variación del color de la imagen en la dirección X -H1- y en
la dirección Y -H2-. Hay muchas máscaras de gradiente. Nosotros utilizaremos las de Prewitt, que
tienen los siguientes valores:
−1 0 1 −1 −1 −1
Prewitt H1 = −1 0 1 H 2 = 0 0 0
−1 0 1 1 1 1
A cada píxel de la imagen, exceptuando los píxeles que se encuentran en los bordes, se le
aplicará primeramente la máscara H1 y posteriormente la máscara H2. Aplicar la máscara H1 sobre el
píxel M, N da la variación cromática en la dirección X en el punto M, N y se obtiene mediante la
siguiente operación:
3 3
g1 ( M , N ) = ∑∑ H1 ( i, j ) Pixel ( M + i − 2, N + j − 2 )
i =1 j =1
3 3
g 2 ( M , N ) = ∑∑ H 2 ( i, j ) Pixel ( M + i − 2, N + j − 2 )
i =1 j =1
Con lo que se obtiene el valor del módulo del gradiente de colores en el píxel M, N. Una vez
aplicada la máscara a lo largo de todos los píxeles se procede a marcar aquellos cuyo valor de
gradiente supere un cierto umbral.
2.3 Encabezado de la función
function contorno(archivo,umbral)
Donde archivo es una cadena de caracteres con el nombre completo del archivo (incluida su
extensión) y umbral es el valor mínimo que debe presentar g(M,N) para que sea marcado como
contorno de la figura. Esta función debe abrir dos figuras, en la primera figura dibujará el JPG del
archivo y en la segunda figura el contorno de los objetos.
Respecto a la magnitud del parámetro umbral, pruebe con valores de al rededor de 0.5.
Vamos a continuar con el ejercicio del robot que es capaz de moverse dentro de un mapa. Y más
concretamente vamos a programar un entrono gráfico en el que podamos ver el mapa y los
movimientos que realiza el robot dentro de él. En realidad, lo que usted va a hacer es equivalente a
programar el fichero laberinto.m que ha estado utilizando para chequear si funcionaba bien el
programa realizado en la práctica anterior.
3.2 Sistema de coordenadas
El desarrollo del algoritmo y de la programación que nos hemos propuesto resulta muy
sencilla si dedicamos un cierto tiempo a concretar un sistema de coordenadas para realizar los
dibujos. Lo primero que haremos será dividir el mapa en 60x60 puntos y numerarlos así:
Y
1 2 3 4 60
1
60
Donde la unidad de longitud será igual a 1. Con este esquema hay que considerar lo siguiente
y es que a la hora de dibujar en 2D, Matlab utiliza ejes cartesianos, mientras que los ejes elegidos
por usted tienen valor ascendente según se reduce la altura de lo que sería el eje Y en un sistema
cartesiano, por lo que hay que introducir la instrucción >>axis ij , que lo que hace es invertir el
sentido del eje Y.
Con este esquema posicionar los dibujos resulta muy sencillo. Si, por ejemplo, el mapa tuviera
un -1 en la fila F y en la columna C, para dibujar el cuadrado negro correspondiente a ese punto
bastaría con utilizar la función patch con las siguientes
coordenadas: C-1 C C+1 60
F-1
>>patch([C C+1 C+1 C],[F F F+1 F+1],'k')
F
F+1
60
F, C F, C F, C F, C