Professional Documents
Culture Documents
Evento:
CONATEC 2002
Sede:
INSTITUTO TECNOLÓGICO DE CIUDAD MADERO
Instructor:
M. C. José Jaime Esqueda Elizondo
Universidad Autónoma de Baja California, Unidad Tijuana
Noviembre de 2002
Dedicatorias y agradecimientos
A mi esposa, mis padres y a ese maravilloso ser que está por venir, son el motor de mi
vida.
A mis alumnos de la UABC por inspirarme y alentarme a seguir.
Al ITCM y al IPN por la formación que me dieron.
Al Dr. Juan García López, guía, maestro y amigo.
1
M. en C. José Jaime Esqueda Elizondo
Indice
I. Fundamentos de procesamiento de imágenes digitales ................................................... 5
I. Fundamentos de procesamiento de imágenes digitales ................................................... 5
I.1 Definiciones ............................................................................................................... 5
Color................................................................................................................................ 6
I.2 Relaciones entre píxeles............................................................................................. 7
I.2.1 Conectividad ....................................................................................................... 8
I.2.2 Distancia ............................................................................................................. 8
I.3 Ruido en imágenes..................................................................................................... 9
I.4 Procesamiento espacial .............................................................................................. 9
I.4.1 Operaciones aritméticas, lógicas y transformaciones geométricas................... 10
I.4.2 Operaciones lógicas .......................................................................................... 13
I.4.3 Transformaciones geométricas ......................................................................... 13
I.4.3.1 Interpolación .............................................................................................. 13
I.4.3.2 Amplificación/Reducción de imágenes ..................................................... 14
I.4.3.3 Traslación................................................................................................... 15
I.4.3.4 Convolución bidimensional ....................................................................... 16
I.4.3.5 Correlación................................................................................................. 18
I.5 Procesamiento en el dominio de la frecuencia......................................................... 19
I.5.1 Series de Fourier ............................................................................................... 19
I.5.2 Transformada de Fourier................................................................................... 20
I.5.2.1 Aplicaciones de la transformada de Fourier .............................................. 21
I.5.3 Transformada discreta coseno........................................................................... 23
I.6 Procesamiento de imágenes básico.......................................................................... 24
I.6.1 Binarización de una imagen.............................................................................. 24
I.6.2 Manipulación del contraste ............................................................................... 25
I.6.3 Modificación del contraste................................................................................ 27
I.6.4 Modificación del histograma ............................................................................ 28
I.6.5 Filtrado de una imagen...................................................................................... 29
I.6.5.1 Filtros lineales espaciales........................................................................... 29
I.6.5.2 Filtro pasa bajas espacial ........................................................................... 29
I.6.5.3 Filtrado por la mediana .............................................................................. 30
I.6.5.4 Realce de bordes ........................................................................................ 31
I.6.5.5 Detección de contornos.............................................................................. 32
I.6.5.5.1 Técnicas basadas en el gradiente ........................................................ 32
II. Manejo de las imágenes en Matlab............................................................................... 36
II.1 Clases de almacenamiento usadas en el toolbox .................................................... 36
II.2 Conversiones entre tipos de imágenes.................................................................... 36
II.2.1 Despliegue de imágenes indexadas ................................................................. 37
II.2.2 Despliegue de imágenes de intensidad. ........................................................... 38
II.2.3 Despliegue de imágenes binarias..................................................................... 38
II.2.4 Despliegue de imágenes RGB ......................................................................... 38
II.2. 5 Tipos de imágenes en Matlab ......................................................................... 38
II.2.5.1 Imágenes indexadas.................................................................................. 38
II.2.5.2 Imágenes de intensidad............................................................................. 39
II.2.5.3 Imágenes binarias ..................................................................................... 40
2
M. en C. José Jaime Esqueda Elizondo
II.2.5.4 Imágenes RBG.......................................................................................... 40
II.2.6 Selección de una sección de imágenes en Matlab ........................................... 41
III. Ejercicios..................................................................................................................... 42
Ejercicio 1. Formación de imágenes y mapas de color. ............................................ 42
Ejercicio 2. Cargar y desplegar una imagen.............................................................. 42
Ejercicio 3.Verificar el almacenamiento de la imagen cargada en la memoria. ....... 42
Ejercicio 4. Obtención de el histograma de una imagen. .......................................... 42
Ejercicio 5. Amplificación/Reducción de imágenes ................................................. 42
Ejercicio 6 Rotación de una imagen.......................................................................... 43
Ejercicio 7. Binarización de imágenes ...................................................................... 44
Ejercicio 8. Operaciones aritméticas con imágenes. ................................................. 44
Ejercicio 9. Operaciones aritméticas con imágenes. ................................................. 44
Ejercicio 10. Generación de ruido y filtrado de imágenes. ....................................... 44
Ejercicio 11. Modificación del contraste y ecualización de una imágenes............... 44
Ejercicio 12. Detección de contornos........................................................................ 44
Ejercicio 13. Detección de características usando correlación. ................................ 44
Ejercicio 14. Compresión de imágenes usando la transformada discreta coseno. .... 45
Apéndice A. Formatos de Imágenes ................................................................................. 46
¿Qué son los formatos gráficos? ............................................................................... 46
Formatos vectoriales ................................................................................................. 46
Formatos bitmap........................................................................................................ 46
Formatos de gráficos mas importantes...................................................................... 47
Bibliografía y Referencias................................................................................................. 50
Lista de Figuras
Figura 1. Imagen de 16 píxeles ........................................................................................... 5
Figura 2. Espacio de colores RGB. ..................................................................................... 6
Figura 3. Vecindad N4(p). ................................................................................................... 7
Figura 4. Vecindad ND(p).................................................................................................... 7
Figura 5. Distancia euclidiana para una imagen de 5 por 5. ............................................... 8
Figura 6. Distancia Manhattan para una imagen de 5 por 5................................................ 8
Figura 7. Distancia tablero de ajedrez................................................................................. 9
Figura 8. Diferentes tipos de ruido afectando a una imagen............................................. 10
Figura 9. Suma de dos imágenes....................................................................................... 10
Figura 10. Aumento del brillo de la imagen usando la suma de un escalar a cada píxel de
la imagen, imagen original (izquierda) e imagen modificada (derecha)........................... 11
Figura 11. Resta de dos imágenes, imagen original (izquierda), imagen a restar (centro) y
resultado (derecha). ........................................................................................................... 11
Figura 12. Resta de un escalar (50) a cada píxel de la imagen original (izquierda) ......... 11
Figura 13 Multiplicación de una imagen por si misma, imagen original (izquierda),
imagen resultante (derecha). ............................................................................................. 12
Figura 14. Multiplicación de una imagen por un escalar, imagen original (izquierda),
imagen resultante (derecha). ............................................................................................. 12
Figura 15. División de imágenes, se muestra la división de la imagen original (izquierda)
entre el fondo (centro) dando como resultado la figura de la derecha. ............................. 13
Figura 16. Operaciones lógicas aplicadas a imágenes binarias......................................... 13
Figura 17. Imagen original ................................................................................................ 15
3
M. en C. José Jaime Esqueda Elizondo
Figura 18. Amplificación de la figura 17 usando diferentes métodos de interpolación.... 15
Figura 19. Rotación de la imagen de la figura 17 usando diferentes métodos de
interpolación...................................................................................................................... 16
Figura 20. Imagen ............................................................................................................. 17
Figura 21. Máscara de convolución. ................................................................................. 17
Figura 22. Máscara rotada para la convolución. ............................................................... 17
Figura 23. Convolución para obtener el valor de A(2,4) .................................................. 18
Figura 24. Inserción de ceros (zero padding) en los extremos.......................................... 18
Figura 25. Correlación de A con h. ................................................................................... 19
Figura 26. Formación de la señal cuadrada mediante la serie de Fourier. (a) cinco señales
senoidales (términos); (b) suma de dos términos; (c) suma de tres términos; (d) suma de
cuatro términos; (e) suma de cinco términos; (f) suma de veinte términos. ..................... 20
Figura 27. División en cuatro partes iguales de la imagen transformada (B) ................... 22
Figura 28. Inserción de ceros para obtener la matriz B aumentada (B’)........................... 23
Figura 29. Compresión de imágenes usando la TDC........................................................ 25
Fig. 30. Binarización de una imagen................................................................................. 25
Figura 31. Expansión del histograma de la imagen. ......................................................... 26
Figura 32. Modificación de contraste................................................................................ 27
Figura 33. Caso general..................................................................................................... 27
Figura 34. Vecindad de a y obtención de la mediana........................................................ 31
Figura 35. Realce de una imagen ...................................................................................... 31
Figura 36. Detección de contornos mediante la primera y segunda derivada................... 33
Figura 37. Máscaras para los operadores: Roberts, Prewitt, Sobel e Isotrópico. .............. 34
Figura 38. Máscaras utilizadas para el operador laplaciano.............................................. 34
Figura 39. Ejemplos de detección de contornos................................................................ 35
Figura 40. Imagen indexada .............................................................................................. 39
Figura 41 Imagen de intensidad. ....................................................................................... 40
Figura 42. Imagen binaria ................................................................................................. 40
Figura 43. Histograma obtenido de la imagen pout.tif...................................................... 43
Lista de Tablas
Tabla I. Colores RGB.......................................................................................................... 6
Tabla II. Tipos de imágenes y clases numéricas ............................................................... 37
Tabla III. Comandos de conversión de imágenes ............................................................. 37
Tabla IV. Comandos informativos .................................................................................... 41
4
M. en C. José Jaime Esqueda Elizondo
I. Fundamentos de procesamiento de imágenes digitales
I.1 Definiciones
Visión por computadora.- Consiste en la adquisición, procesamiento, clasificación y
reconocimiento de imágenes digitales.
0 1 1 2
7 6 6 5
y
6 0 4 0
5 5 1 2
Color.- El color se forma mediante la combinación de los tres colores básicos rojo, azul y
verde (en inglés RGB). A continuación se presentan algunas definiciones básicas para
comprender los espacios de color:
Para obtener una imagen a color deben transformarse primero los parámetros cromáticos
en eléctricos y representar los colores, lo cual puede realizarse de diferentes maneras,
dando lugar a diferentes espacios de colores o mapas de color.
5
M. en C. José Jaime Esqueda Elizondo
para obtener el color deseado, ver la figura 2; para lo cual se realiza la suma aritmética de
las componentes: X = R + G + B, gráficamente representada por un cubo.
Azul Magenta
Cian Blanco
Gris
Negro Rojo
Verde Amarillo
En la recta que une el origen con el valor máximo se encuentran ubicados los grises
(escala de gris) debido a que sus tres componentes son iguales. Cuando una cámara
adquiere una imagen a color, para cada píxel en color se tienen en realidad 3
componentes, una para cada uno de los colores básicos (rojo, verde y azul); la ganancia
máxima para cada componente corresponde a la longitud de onda de los tres colores
básicos.
Color
Un color puede definirse como la combinación de tres colores básicos: rojo, verde y azul,
y expresarse mediante una tripleta de valores de 0 a 1 (R, G, B), donde R, G y B
representan las intensidades de cada uno de los tres colores básicos rojo, verde y azul,
respectivamente. En la tabla I se presentan ejemplos de colores definidos mediante estas
tripletas.
6
M. en C. José Jaime Esqueda Elizondo
Mapa de color
El mapa de color es una matriz de n x 3, donde cada renglón es una tripleta de colores. El
primer renglón corresponde al valor mínimo del eje de color y el último renglón al
máximo. Al definir diferentes distribuciones de intensidad de los tres colores básicos, se
crean diferentes mapas de color. Algunos de los mapas de color predeterminados en
MATLAB son:
hsv, cool, hot, jet, gray, flag
(x-1,y)
(x+1,y)
(x-1,y-1) (x-1,y+1)
(x,y)
(x+1,y-1) (x+1,y+1)
7
M. en C. José Jaime Esqueda Elizondo
I.2.1 Conectividad
La conectividad es un concepto importante utilizado para establecer los límites de objetos
en regiones dentro de una imagen. Para determinar si dos píxeles están conectados se
determina si son adyacentes en algún sentido (ND(p), N4(p) por ejemplo) y si sus niveles
de gris satisfacen un criterio de similaridad (por ejemplo si son iguales). Por ejemplo, en
una imagen binaria con valores de 1 y 0, dos píxeles pueden ser vecinos N4(p), pero se
dice que están conectados solo cuando tienen el mismo valor.
I.2.2 Distancia
La distancia o transformada de distancia proporciona una medición de la separación
existente entre dos puntos dentro de una imagen. Dados tres píxeles, p, q y z, con
coordenadas (x,y), (s,t) y (u,v), respectivamente, se puede definir una función de distancia
D si se cumple:
D( p, q ) ≥ 0, (D( p, q ) = 0, si p = q )
D( p, q ) = D(q, p )
D( p, z ) ≤ D( p, q ) + D(q, z )
8 5 2 5 8
5 2 1 2 5
2 1 0 1 2
5 2 1 2 5
8 5 2 5 8
Figura 5. Distancia euclidiana para una imagen de 5 por 5.
4 3 2 3 4
3 2 1 2 3
2 1 0 1 2
3 2 1 2 3
4 3 2 3 4
Figura 6. Distancia Manhattan para una imagen de 5 por 5.
8
M. en C. José Jaime Esqueda Elizondo
Distancia tablero de ajedrez: es similar a la distancia Manhattan, en donde se observa que
los 4-vecinos están a una distancia unitaria del píxel central; si se desea que los 8-vecinos
estén a la misma distancia se toma:
D( p, q ) = Max(x − s, y − t )
En la figura 7 se muestra la distancia tablero de ajedrez.
2 2 2 2 2
2 1 1 1 2
2 1 0 1 2
2 1 1 1 2
2 2 2 2 2
Figura 7. Distancia tablero de ajedrez.
Impulsional (sal y pimienta): el valor que toma el píxel no tiene relación con el valor
ideal, sino con el valor del ruido que toma valores muy altos o bajos (puntos blancos y/o
negros) causados por una saturación del sensor o por un valor mínimo captado, si se ha
perdido la señal en ese punto. Se encuentran también al trabajar con objetos a altas
temperaturas, ya que las cámaras tienen una ganancia en el infrarrojo que no es detectable
por el ojo humano; por ello las partes más calientes de un objeto pueden llegar a saturar
un píxel.
9
M. en C. José Jaime Esqueda Elizondo
I.4.1 Operaciones aritméticas, lógicas y transformaciones geométricas.
Las operaciones aritméticas más usadas en procesamiento de imágenes son; suma, resta,
multiplicación y división. Para que se pueda llevar a cabo una operación aritmética,
ambas imágenes deben ser del mismo tamaño. En la figura 9 se muestra la suma de dos
imágenes, la cual se realiza de la forma C ( x, y ) = A( x, y ) + B( x, y ) mediante el comando
imadd en Matlab.
+ =
Figura 9. Suma de dos imágenes
También es posible aumentar el brillo a una imagen sumándole un valor constante a cada
píxel. En la figura 10 se muestra el efecto de sumar un escalar (50) a una imagen, el cual
se realiza de la forma B( x, y ) = A( x, y ) + a .
10
M. en C. José Jaime Esqueda Elizondo
Figura 10. Aumento del brillo de la imagen usando la suma de un escalar a cada píxel de
la imagen, imagen original (izquierda) e imagen modificada (derecha).
- =
Figura 11. Resta de dos imágenes, imagen original (izquierda), imagen a restar (centro) y
resultado (derecha).
Figura 12. Resta de un escalar (50) a cada píxel de la imagen original (izquierda)
11
M. en C. José Jaime Esqueda Elizondo
En el campo de las imágenes, la multiplicación se puede llevar a cabo, entre dos
imágenes del mismo tamaño, multiplicando elemento a elemento cada uno de los píxeles
de la imagen, de la forma C ( x, y ) = A( x, y ) ⋅ B( x, y ) , en Matlab esto se realiza con el
comando immultiply. En la figura 13 se muestra la multiplicación de dos imágenes.
Cuando se multiplica cada uno de los píxeles de una imagen por un escalar, se le conoce
como escalamiento, el cual se realiza de la siguiente forma B( x, y ) = a ⋅ A( x, y ) . Cuando
el escalar o constante es menor a 1, se oscurece la imagen y si es mayor a uno aumenta el
brillo de la imagen. En la figura 14 se muestra el resultado de multiplicar la imagen
original por el escalar 1.2
Figura 14. Multiplicación de una imagen por un escalar, imagen original (izquierda),
imagen resultante (derecha).
12
M. en C. José Jaime Esqueda Elizondo
racionalización. En la figura 15 se presenta la división entre imágenes, la cual se realiza
de la forma C ( x, y ) = A( x, y ) ÷ B( x, y ) .
I.4.3.1 Interpolación
La interpolación es el proceso en el cual se estiman los valores de una imagen en una
sección específica, cuando por ejemplo, se cambia el tamaño de una imagen y en la nueva
imagen existen más píxeles que en la imagen original. Dentro de Matlab los comandos
13
M. en C. José Jaime Esqueda Elizondo
imresize e imrotate utilizan interpolación bidimensional como paso intermedio en
sus procesos.
De forma general, la interpolación de una imagen se presenta como:
Nótese que el número de píxeles considerado aumenta la complejidad del cálculo, es por
eso que la interpolación bilineal es más lenta que el método del vecino más próximo y el
método bicúbico es más lento que el método bilineal. Nótese también que si se considera
un mayor número de píxeles, se tendrán mejores resultados.
Para la mayoría de las funciones el método utilizado por omisión es el de vecino más
próximo. Este método produce resultados aceptables para todos los tipos de imágenes y
es el único método apropiado para imágenes indexadas. Sin embargo, para imágenes de
intensidad y RBG generalmente se especifica la interpolación bilineal o bicúbica porque
estos métodos proporcionan mejores resultados. Para imágenes RGB, la interpolación se
ejecuta en los planos de color rojo, verde y azul de forma individual.
14
M. en C. José Jaime Esqueda Elizondo
Figura 17. Imagen original
I.4.3.3 Traslación
Si se requiere trasladar el origen de una imagen se aplican las ecuaciones:
x f = xi + x o
y f = yi + yo
Que en coordenadas homogéneas es:
x f 1 0 xo xi
y = 0 1 y o y i
f
1 0 0 1 1
15
M. en C. José Jaime Esqueda Elizondo
Rotación respecto al origen
x f cosθ − senθ 0 xi
y = senθ cosθ 0 y i
f
1 0 0 1 1
x f 1 0 xo cosθ − senθ 0 1 0 − x o x i
y = 0 1 y o senθ cosθ 0 0 1 − y o y i
f
1 0 0 1 0 0 1 0 0 1 1
16
M. en C. José Jaime Esqueda Elizondo
! + f (1,0 )h(1,2) + f (1,1)h(1,1) + f (1,2 )h(1,0 ) + !
! + f (2,0 )h(0,2 ) + f (2,1)h(0,1) + f (2,2 )h(0,0 )
23 5 7 14 16
A= 4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
h= 3 5 7
4 9 2
7 5 3
6 1 8
17
M. en C. José Jaime Esqueda Elizondo
2 9 4
17 24 1 8 15
7 5 3
23 5 7 14 16
6 1 8
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
2 9 4
0 0 0
7 5 3
0 17 24 1 8 15
6 1 8
0 23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
I.4.3.5 Correlación
La correlación es una operación parecida a la convolución, en la cual el valor de un píxel
de salida se calcula como la suma ponderada de los píxeles vecinos. La diferencia está en
que la matriz de pesos o máscara, en este caso llamada núcleo o kernel de correlación no
se rota durante el cálculo. La correlación está dada por:
∞ ∞
g (x, y ) = h(x, y ) " f (x, y ) = ∑ ∑ f (i, j )h(x + i, y + j )
∗
i = −∞ j = ∞
18
M. en C. José Jaime Esqueda Elizondo
La correlación se utiliza para encontrar el parecido entre píxeles de una imagen. Si los
píxeles son iguales o parecidos, se dice que están altamente correlacionados entre si. La
correlación permite hallar patrones.
La diferencia entre la correlación y la convolución estriba en que la máscara de
correlación no se rota como en la convolución. En la figura 25 se muestra como se
calcula la correlación para el píxel (2,4) de la imagen A usando como máscara de
correlación a h.
8 1 6
17 24 1 8 15
3 5 7
23 5 7 14 16
4 9 2
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
19
M. en C. José Jaime Esqueda Elizondo
expresan esta relación con las funciones periódicas seno y coseno. Así, cualquier función
f(t) con periodo To se puede expresar como:
∞
f (t ) = a 0 + ∑ a k cos(kω 0 t ) + bk sen(kω 0 t )
k =1
Donde:
2π
T0 T0 T0
1 2 2
a0 =
T0 ∫
0
f (t ) ft , a k =
T0 ∫
0
f (t ) cos(kω 0 t )dt , bk =
T0 ∫ f (t )sen(kω t )dt , ω
0
0 0 =
T0
0.5 0.5
0 0
-0.5 -0.5
-1 -1
0 1 2 3 4 5 6 0 1 2 3 4 5 6
(a) (b)
1 1
0.5 0.5
0 0
-0.5 -0.5
-1 -1
0 1 2 3 4 5 6 0 1 2 3 4 5 6
(c) (d)
1 1
0.5 0.5
0 0
-0.5 -0.5
-1 -1
0 1 2 3 4 5 6 0 1 2 3 4 5 6
(e) (f)
Figura 26. Formación de la señal cuadrada mediante la serie de Fourier. (a) cinco señales
senoidales (términos); (b) suma de dos términos; (c) suma de tres términos; (d) suma de
cuatro términos; (e) suma de cinco términos; (f) suma de veinte términos.
20
M. en C. José Jaime Esqueda Elizondo
Para el caso unidimensional discreto, el par transformado de Fourier está dado por:
N −1 j 2π
F [x(n)] = X (k ) = ∑ x(n)e
− kn
N
; k = 0, 1, ..., N-1 (ec. de análisis)
n =0
N −1 j 2π
F −1 [X (k )] = x(n) =
1
∑ X ( k )e
kn
N
; n = 0, 1, ..., N-1 (ec. de síntesis)
N k =0
F [x(k , l )] = X (k , l ) =
− −
∑∑ x(m, n)e
km ln
M N
e ; k = 0, 1, ..., M-1; l = 0, 1, …, N-1
m=0 n=0
M −1 N −1 j 2π j 2π
F −1 [X (k , l )] = x(m, n) =
1
∑∑ X (k , l )e
km ln
M N
e ; m = 0, 1, ..., M-1; n = 0,1,…, N-1
MN k =0 l =0
Los valores X(k,l) son los coeficientes de la transformada de Fourier de la imagen x(m,n).
A los coeficientes referentes a la frecuencia cero, X(0,0) usualmente se les conoce como
la componente de corriente directa. La transformada de Fourier se encuentra
implementada en Matlab en el comando fft (para el caso unidimensional), fft2 (para el
caso bidimensional) y fftn (para el caso N-dimensional). Las transformadas inversas se
encuentran en los comandos ifft (para el caso unidimensional), ifft2 para el caso
bidimensional e ifftn (para el caso N-dimensional).
Convolución rápida
Una propiedad clave de la transformada de Fourier es que la multiplicación de dos
transformadas de Fourier de dos funciones corresponde a la convolución de las funciones
espaciales asociadas. Esta propiedad, junto con la transformada rápida de Fourier forman
la base para el algoritmo de la convolución.
21
M. en C. José Jaime Esqueda Elizondo
Supóngase que A es una matriz de M por N y B es una matriz de P por Q; la convolución
de A y B se obtiene de la siguiente forma:
1. Se agregan ceros a A y a B para que su longitud sea de al menos (M+P+1) por
(N+Q-1). Generalmente se les agrega ceros a A y B para que su tamaño sea una
potencia de 2 debido a que el algoritmo de la fft2 es más rápido para potencias
de dos.
2. Se calcula la transformada de Fourier bidimensional mediante fft2
3. Se multiplican las dos transformadas
4. Se obtiene la transformada inversa de Fourier bidimensional de la multiplicación
mediante el comando ifft2.
Amplificación de imágenes
Para realizar la ampliación de una imagen se utiliza una interpolación en el dominio del
tiempo (espacial) mediante la transformada discreta de Fourier, siempre y cuando los
lados de la imagen tengan un número de píxeles que sea potencia de dos. A continuación
se presenta el procedimiento para cuadruplicar el tamaño de una imagen (duplicar cada
lado),
1. Transformar la imagen A al dominio de la frecuencia (imagen o matriz B).
2. Dividir la imagen transformada (imagen o matriz B) en cuatro partes iguales, tal
como se muestra en la figura 27.
N
2
N
I II
N
2
III IV
22
M. en C. José Jaime Esqueda Elizondo
4. El siguiente paso es antitransformar la matriz aumentada B’ para obtener una
matriz A’ aumentada, de dimensiones 2N x 2N.
5. Dividir cada elemento de la matriz X’ entre 64. La relación es 4(2n-1), donde n es el
número de veces que se amplifica la imagen, en este caso n = 2.
El procedimiento anterior amplifica la imagen original por un factor de 2 (el área original
se cuadruplica). Si se requiere un factor de amplificación diferente de dos, por ejemplo un
factor α, deberán agregarse a B (α -1) ceros.
I II
I II I II
Ceros Ceros
III IV III IV
III IV
Imagen
Inserción de N ceros a
(Matriz B)
cada renglón
Inserción de N ceros a
(a) (b) cada columna
(c)
Figura 28. Inserción de ceros para obtener la matriz B aumentada (B’).
Los valores Bpq son los coeficientes de la transformada discreta coseno de A. La TDC es
invertible, y su inversa está dada por:
M −1 N −1
π (2m + 1) p π (2n + 1)q 0 ≤ m ≤ M −1
Amn = ∑∑α pα q B pq cos cos ,
m =0 n = 0 2M 2N 0 ≤ n ≤ N −1
23
M. en C. José Jaime Esqueda Elizondo
1 1
, p=0 , q=0
αp = M αp = N
2 1 ≤ p ≤ M −1 2 1 ≤ q ≤ N −1
M N
La ecuación de la TDC inversa se puede interpretar como una matriz A de M por N que
puede escribirse como la suma de MN funciones de la forma:
π (2m + 1) p π (2n + 1)q 0 ≤ m ≤ M −1
α pα q cos cos ,
2M 2N 0 ≤ n ≤ N −1
A estas funciones se les llama funciones básicas de la TDC, estos coeficientes Bpq se
conocen como pesos aplicados a cada función base. La razón por la cual las imágenes
pueden ser comprimidas y recuperadas exitosamente con pequeños errores es la gran
cantidad de redundancia en las imágenes típicas. El propósito de esta transformada es
obtener un conjunto de coeficientes que representen la imagen con valores que no estén
correlacionados (es decir, cada valor en el arreglo o imagen proporciona nueva
información no dada por ningún otro valor en el arreglo). Algunos valores en el arreglo
transformado dan poca o ninguna información acerca de la imagen original y pueden ser
descartados. En la figura 29 se presenta un ejemplo de compresión usando la
transformada discreta coseno (comando dct2) usado para transformar la imagen
mostrada. La imagen transformada muestra de forma logarítmica la distribución de los
niveles de gris en la imagen transformada. La imagen cuantizada muestra los niveles de
gris transformados representativos de forma logarítmica, los tonos negros pueden
desecharse (en este caso se desecharon valores inferiores a 10), con lo que se comprime
la imagen y por último se muestra la imagen reconstruida.
24
M. en C. José Jaime Esqueda Elizondo
Figura 29. Compresión de imágenes usando la TDC.
25
M. en C. José Jaime Esqueda Elizondo
c−a
y = T (c ) = A
b−a
donde: a y b son los límites inferior y superior, c es el valor de gris de la imagen original
y A es el valor máximo que se desea que tengan los píxeles de la imagen.
a c b
donde:
y, x son los niveles de gris de las imágenes resultante y original
α, β, γ son ganancias de cada tramo
a, b y L son los intervalos de ganancia
26
M. en C. José Jaime Esqueda Elizondo
Figura 32. Modificación de contraste
vb
Imagen original
va
a b L
Imagen original
Figura 33. Caso general
27
M. en C. José Jaime Esqueda Elizondo
m es el valor de gris de la imagen original
p es el nuevo valor de gris en la imagen resultante
a es la potencia a la que se eleva
El valor 255 se utiliza para normalizar los valores entre 0 y 255 si se trabaja con
imágenes con niveles de gris de 8 bits, de lo contrario se debe remplazar este valor por el
valor máximo representable con el número de bits utilizados.
Con la función cuadrada y cúbica se oscurece la imagen resultante. Con las funciones raíz
cuadrada, raíz cúbica y logarítmica sucede lo inverso.
28
M. en C. José Jaime Esqueda Elizondo
Debido a que los niveles de gris son únicamente valores enteros, se realiza un cambio en
los niveles de gris de acuerdo a:
256
inuevo = Parte entera H (i anterior ) − 1
NM
Aunque el ruido esta siempre presente, el que afecte más o menos a un píxel determinado
es aleatorio. Si se trata de un ruido Gaussiano, este esta definido por una distribución
normal de media cero y variancia típica de σ .
1 1 1
1 1 1
1 1 1
29
M. en C. José Jaime Esqueda Elizondo
1 1 1
1 2 1
1 1 1
Si se desea dar mayor peso al píxel central que a sus vecinos, y a los vecinos tipo 4 que a
los de tipo 8, se tiene
1 2 1
2 4 2
1 2 1
En general, se tiene:
1 b 1
2
b b b
1 b 1
debiendo ser la ganancia de todas ellas la unidad para no variar la imagen. El filtrado de
imágenes en Matlab está implementado en el comando filter2.
Mediana
30
M. en C. José Jaime Esqueda Elizondo
0 0 0
a b
0 22 10 10 255 15
vecindad de a = [0,0,0,0,22,10,0,0,0]
11 18 25 2 9
31
M. en C. José Jaime Esqueda Elizondo
Imagen resultante = (Ganancia)(Imagen Original) – Bajas frecuencias
-1 -1 -1
-1 A -1
-1 -1 -1
donde:
A = 9 · Ganancia –1
y todo ello multiplicado por un noveno.
32
M. en C. José Jaime Esqueda Elizondo
f(x)
f ' (x)
f '' (x)
Gx =
∆f
∆x
-1 1
∗ f(x,y)
∗
∆f
Gy = -1 f(x,y)
∆y
1
33
M. en C. José Jaime Esqueda Elizondo
Estas máscaras generalmente no se utilizan debido a que son muy poco sensibles al ruido
al tomar en cuenta solamente la información de dos píxeles. Entre los filtros (operadores)
más usados, que además permiten obtener un gradiente suavizado, se encuentran:
Roberts, Prewitt, Sobel e Isotrópico. En la figura 37 se muestran las máscaras referentes a
estos operadores.
0 -1 -1 0 -1 0 1 -1 -1 -1
1 0 0 1 -1 0 1 0 0 0
Operador de Roberts -1 0 1 1 1 1
Operador de Prewitt
-1 0 1 -1 -2 -1 -1 0 1 -1 − 2 -1
-2 0 2 0 0 0 − 2 0 2 0 0 0
-1 0 1 1 2 1 -1 0 1 1 2 1
∂x ∂y
-1 -1 -1 0 -1 0
-1 8 -1 -1 0 -1
-1 -1 -1 0 -1 0
34
M. en C. José Jaime Esqueda Elizondo
En la figura 39 se presentan algunos ejemplos de detección de contornos.
35
M. en C. José Jaime Esqueda Elizondo
II. Manejo de las imágenes en Matlab
La estructura básica de datos en Matlab es el arreglo, el cual se puede definir como un
conjunto ordenado de datos reales o complejos. En el caso de las imágenes, estas pueden
ser representadas por matrices formadas por conjuntos ordenados de valores reales que
representan la intensidad de color o de niveles de gris.
Esta convención hace que el trabajar con imágenes en Matlab sea similar al trabajar con
matrices con datos de cualquier tipo. Por ejemplo, se puede seleccionar un solo píxel de
una imagen-matriz de la forma I(2,15), con lo cual Matlab regresa el valor del píxel
localizado en el renglón 2, columna 15 de la imagen-matriz I.
Para reducir el espacio en memoria requerido para almacenar imágenes, Matlab almacena
los datos en arreglos de 8 o 16 bits sin signo, clases uint8 y uint16, respectivamente.
Estos arreglos requieren cuando mucho la octava o cuarta parte de la memoria requerida
por un arreglo tipo double.
36
M. en C. José Jaime Esqueda Elizondo
Tabla II. Tipos de imágenes y clases numéricas
Tipo de imagen Clase de Interpretación
almacenamiento
Binaria lógica Arreglo de 1s y 0s
Indexada1 double Arreglo de enteros en el rango [1, p]
uint8 o uint16 Arreglo de enteros en el rango [1, p-1]
Intensidad1 double Arreglo de valores en punto flotante, su
rango típico es [0, 1]
uint8 o uint16 Arreglo de enteros, rango típico [0, 255]
o [0, 65535], respectivamente
RGB (color verdadero) double Arreglo de valores en punto flotante de
m x n x 3 en el rango [0, 1]
uint8 o uint16 Arreglo de enteros de m x n x 3 en el
rango [0, 255] o [0, 65535],
respectivamente
1. El mapa de color asociado es un arreglo de p x 3 de valores en punto flotante en el
rango [0, 1]. Para imágenes de intensidad, el mapa de color típicamente es una escala de
gris.
37
M. en C. José Jaime Esqueda Elizondo
II.2.2 Despliegue de imágenes de intensidad.
Para desplegar las imágenes de intensidad (escala de gris) se utiliza imshow(I), donde
imshow despliega la imagen escalando los valores de intensidad para que funcionen
como índices de un mapa de color en escala de gris. Si I es tipo double, un píxel con
valor 1.0 se despliega como blanco y los demás valores como niveles de gris.
38
M. en C. José Jaime Esqueda Elizondo
Figura 40. Imagen indexada
El toolbox de Image Processing permite manejar imágenes de clase uint16, pero antes de
procesar estas imágenes, deben convertirse a clase double o uint8. Para convertir a
double, utilizar el comando im2double, para reducir la imagen a 256 colores o menos
(clase uint8), utilizar el comando imapprox.
39
M. en C. José Jaime Esqueda Elizondo
Figura 41 Imagen de intensidad.
40
M. en C. José Jaime Esqueda Elizondo
los componentes de colores rojo, verde y azul para cada píxel. En estas imágenes, el color
se forma mediante la combinación de las intensidades almacenadas en cada plano de
color para cada píxel.
info = imfinfo(archivo,formato)
info = imfinfo(archivo)
I2 =imcrop(I)
X2 =imcrop(X,map)
RGB2 =imcrop(RGB)
41
M. en C. José Jaime Esqueda Elizondo
III. Ejercicios
A continuación se presenta una serie de ejercicios
Para cargar una imagen, se utiliza el comando imread, en este caso se cargará una
imagen en formato TIFF (consulte el apéndice A para saber con qué formatos puede
operar el toolbox de Image Processing) llamada pout.tif, la cual viene con el toolbox de
Image Processing y se guarda la imagen en un arreglo llamado I.
>>I=imread(‘pout.tif’)
42
M. en C. José Jaime Esqueda Elizondo
utilice el comando imresize y observe los resultados con las opciones nearest (vecino, la
cual es la opción por omisión), bilinear (bilineal), bicubic (bicúbica).
>>I=imread('lenaojo.tiff');
>>imshow(I);
>>J=imresize(I,2);
>>imshow(J)
43
M. en C. José Jaime Esqueda Elizondo
Ejercicio 7. Binarización de imágenes
La binarización de una imagen se obtiene con el comando im2bw. Cargue la imagen
cameraman.tif y binarice la imagen usando diferentes valores de umbral.
>>I=imread('cameraman.tif');
>>imshow(I);
>>J=im2bw(I);
>>figure
>>imshow(J)
bw =imread('text.tif');
a=bw(59:71,81:91);%Extrae la letra a buscar.
imshow(bw);
figure,imshow(a);
C =real(ifft2(fft2(bw).*fft2(rot90(a,2),256,256)));
max(C(:))%Encuentra el valor maximo de C
thresh =45;%Utiliza un umbral menor que el valor maximo
figure,imshow(C >thresh)%Despliega los píxeles con valor mayor al
%umbral
44
M. en C. José Jaime Esqueda Elizondo
Ejercicio 14. Compresión de imágenes usando la transformada discreta coseno.
Aplique la transformada discreta coseno a las imágenes autum.tif, lena.tiff y pout.tif
siguiendo el ejemplo
umbral=10;
RGB = imread('autumn.tif');
I = rgb2gray(RGB);
subplot(221),imshow(I), title('Original')
J = dct2(I);
figure(1)
subplot(222),imshow(log(abs(J)),[]), title('Transformada')
J(abs(J)<umbral) = 0;
K = idct2(J);
subplot(223),imshow(log(abs(J)),[]); title('Cuantizada')
subplot(224), imshow(K,[0 255]), title('Reconstruida')
45
M. en C. José Jaime Esqueda Elizondo
Apéndice A. Formatos de Imágenes
Formatos vectoriales
Son más simples que los bitmap. Consisten en una serie de dibujos lineales basados en
una lista de objetos gráficos, por ejemplo: líneas, curvas, triángulos, círculos, rectángulos,
etc. Estos objetos, y muchos más, ubicados estratégicamente en la pantalla, forman
dibujos lineales complejos. En este tipo de formatos las áreas vacías entre las líneas
pueden ser llenadas con colores o con "rellenos", pequeños diseños que se repiten una y
otra vez sin dejar espacios vacíos hasta llenar el área en cuestión. El tamaño de las
imágenes almacenadas en este tipo de formatos puede ser modificado sin notar pérdida
alguna de calidad. Gracias a esta característica son muy útiles a la hora de imprimir
imágenes.
Formatos bitmap
Contienen imágenes basadas en pixeles (por ejemplo una imagen cuya resolución es de
640 x 480 pixeles, contiene 640 pixeles horizontales y 480 pixeles verticales). Las
imágenes generadas por scanner son de tipo bitmap. Cuanto mayor sea la gama de
colores, más realismo se consigue con este tipo de formato. Las imágenes bitmap poseen
un tamaño natural en el cual se imprimirán perfectamente, pero, a diferencia de las
vectoriales, no ofrecen grandes posibilidades con respecto a la variación del tamaño. Al
aumentar el tamaño bruscamente, es fácil notar una gran disminución de la calidad. Otro
punto en contra de los formatos bitmap es la cantidad de memoria y espacio que ocupan.
Debido a esto, la mayoría de ellos utilizan diversos métodos de compresión de la
información que constituye la imágen.
Nota: El bitmap o mapa de bits es una Imagen formada por miles o millones de puntos de
colores, una junto a otra y una debajo de otra, pueden tener una profundidad de colores
de: 16, 256, color de Alta densidad (65,536 colores) o Color Verdadero (16,777,216
colores), y pueden o no incluir canal de transparencia pueden ser con o sin compresión.
Ideales para digitalizar fotografías o diseño de carteles con efectos de sombras esfumados
complejos, simulación de realce y otros.
46
M. en C. José Jaime Esqueda Elizondo
Formatos de gráficos mas importantes
47
M. en C. José Jaime Esqueda Elizondo
completar esa imagen. Gracias al interlacing visualizamos distintas partes de la imagen al
bajarla de Internet o un BBS, y es posible darse cuenta si realmente nos sirve antes de que
la imagen esté completa. Si esa imagen no es lo que esperábamos, es posible cancelar la
operación. Gracias a la popularidad de este formato, se han desarrollado infinidad de
programas shareware para manipular GIFs. Ya sea para exhibirlos, modificarlos,
convertirlos o incluso comprimirlos. Si alguno de estos programas modifica el archivo
.GIF, es muy probable que aparezca alguna información sobre esta aplicación en el
application block.
JPG (JPEG)
El formato JPEG ofrece los imprescindibles 16 millones de colores (truecolor), unido a
una compresión realmente asombrosa (valores superiores a 20:1 son habituales). Sólo
tiene una limitación: para obtener esos valores de compresión modifica sutilmente la
imágen, descartándose su uso en aplicaciones en las que se desea mantener una calidad
bit a bit. El diseño de este formato está pensado para almacenar imágenes del "mundo
real", también llamadas imágenes de tono continuo, como digitalizaciones o
renderizaciones de alta calidad. Si se intenta almacenar imágenes de tipo vectorial o
dibujos sencillos no realísticos, se observará como la compresión disminuye
enormemente, y las modificaciones hechas sobre la imagen original por el algoritmo de
compresión se observan a simple vista. La abreviación JPEG viene de las iniciales de
Joint Photographic Experts Group. Se trata del grupo de expertos que definieron las
bases de este formato. El formato JPEG sólo puede almacenar imágenes de 24 bits (true
color), utilizando tres canales para su almacenamiento o de escala de grises, usando sólo
un canal. La compresión JPEG consiste en una serie de complejas operaciones
matemáticas, tales como: conversión del formato del color, transformación separada de
coseno (DCT), cuantizaciones y codificación entrópica. JPEG, junto con GIF, son los
formatos de imágenes usados en WWW.
48
M. en C. José Jaime Esqueda Elizondo
introducido por Aldus Corporation y es el formato más usado cuando se trabaja con
scanners debido a su útil manejo del color.
49
M. en C. José Jaime Esqueda Elizondo
Bibliografía y Referencias
[1] Arturo de la Escalera, “Visión por computador”
[2] Juan García López, “Procesamiento Digital de Señales”
[3] Mathworks, “Image Processing Toolbox, User`s Guide”, Version 3
[4] J. R. Parker, “Practical Computer Vision using C”, John Wiley & Sons, Inc., New
York
[5] A. Low, “Introductory Computer Vision and Image Processing”, Prentice-Hall,
Englewood Cliffs, New Jersey, 1989
[6] Brend Jähne, “Digital Image Processing, Concepts, Algorithms and Scientific
Applications”, 4th Edition, Springer
[7] R. C. González, Woods, R. E., “Digital Image Processing”, Addison Wesley, 1993
50
M. en C. José Jaime Esqueda Elizondo