SlideShare una empresa de Scribd logo
1 de 51
Descargar para leer sin conexión
Fundamentos de Procesamiento de Imágenes
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
M. en C. José Jaime Esqueda Elizondo
1
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.
Agradezco de sobremanera la ayuda de mis alumnos: Pedro Fernández Robledo, Mario
A. Velarde C., Nelson Hernández Cons, Gisell Haydee Arias, Eduardo Hernández
Acosta, Pilar Ivette Sánchez Benítez, Samuel García Alvarado, Julio César Trizón.
Asimismo a José Luis Vargas Cruz y a Jorge Espinosa Caballero, que colaboraron con el
Apéndice A.
M. en C. José Jaime Esqueda Elizondo
2
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
M. en C. José Jaime Esqueda Elizondo
3
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
M. en C. José Jaime Esqueda Elizondo
4
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
M. en C. José Jaime Esqueda Elizondo
5
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.
Píxel.- Elemento básico de una imagen (picture element).
Imagen.- Arreglo bidimensional de píxeles con diferente intensidad luminosa (escala de
gris).
0 1 1 2
7 6 6 5
6 0 4 0
5 5 1 2
x
y
Figura 1. Imagen de 16 píxeles
Si la intensidad luminosa de cada píxel se representa por n bits, entonces existirán 2n
escalas de gris diferentes.
Matemáticamente, una imagen se representa por )
,
( y
x
f
r = , donde r es la intensidad
luminosa del píxel cuyas coordenadas son (x,y). Matemáticamente, un sistema para
procesar imágenes se representa como [ ]
)
,
(
)
,
( y
x
f
T
y
x
g = .
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:
Brillo.- Indica si un área está más o menos iluminada.
Tono.- Indica si un área parece similar al rojo, amarillo, verde o azul o a una proporción
de ellos.
Luminosidad.- Brillo de una zona respecto a otra zona blanca en la imagen.
Croma.- Indica la coloración de un área respecto al brillo de un blanco de referencia.
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.
Espacio RGB.- se basa en la combinación de tres señales de luminancia cromática
distinta: rojo, verde, azul (Red, Green, Blue). La forma más sencilla de obtener un color
específico es determinar la cantidad de color rojo, verde y azul que se requiere combinar
M. en C. José Jaime Esqueda Elizondo
6
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.
Negro
Gris
Blanco
Cian
Verde Amarillo
Rojo
Magenta
Azul
Figura 2. Espacio de colores RGB.
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.
Tabla I. Colores RGB
Color R G B
Blanco 1 1 1
Rojo 1 0 0
Amarillo 1 1 0
Verde 0 1 0
Turquesa 0 1 1
Gris 0.5 0.5 0.5
Rojo Oscuro 0.5 0 0
Azul 0 0 1
Aguamarina 0.5 1 0.83
Negro 0 0 0
M. en C. José Jaime Esqueda Elizondo
7
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
Histograma de una imagen.
El histograma de una imagen es una representación del número de píxeles de cierto nivel
de gris en función de los niveles de gris.
I.2 Relaciones entre píxeles
Un píxel p con coordenadas (x,y) tiene cuatro vecinos horizontales y verticales, cuyas
coordenadas son: (x+1,y), (x-1,y), (x,y-1), (x,y+1). A este conjunto de píxeles se llama
vecindad 4 o 4 vecinos de p y se denota por N4(p), ver la figura 3. Nótese que para cada
uno de estos píxeles hay una distancia de 1 de p y que en los bordes de la imagen algunos
de estos píxeles quedarán fuera de la imagen.
(x-1,y)
(x,y) (x,y+1)
(x+1,y)
(x,y-1)
Figura 3. Vecindad N4(p).
Existen también 4 vecinos diagonales de p con coordenadas: (x+1,y+1), (x+1,y-1), (x-
1,y-1), (x-1,y-1) y se les denota por ND(p), ver la figura 4. N4(p) y ND(p) juntos forman la
vecindad 8 denotada por N8(p).
(x-1,y-1)
(x,y)
(x+1,y+1)
(x-1,y+1)
(x+1,y-1)
Figura 4. Vecindad ND(p).
M. en C. José Jaime Esqueda Elizondo
8
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:
( ) ( )
( )
q
p
si
q
p
D
q
p
D =
=
≥ ,
0
,
,
0
,
( ) ( )
p
q
D
q
p
D ,
, =
( ) ( ) ( )
z
q
D
q
p
D
z
p
D ,
,
, +
≤
Las funciones de distancia comúnmente usadas son: distancia euclidiana, distancia
Manhattan o de cuadra y distancia tablero de ajedrez.
Distancia euclidiana entre p y q: ( ) ( ) ( )
t
y
s
x
q
p
DE −
+
−
=
2
, . En la figura 5 se
muestra la distancia euclidiana para una imagen de 5 por 5.
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.
Distancia Manhattan: se toman solamente en cuenta los vecinos de orden 4, es decir:
t
y
s
x
D −
+
−
=
En la figura 6 se muestra la distancia Manhattan de 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.
M. en C. José Jaime Esqueda Elizondo
9
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:
( ) ( )
t
y
s
x
Max
q
p
D −
−
= ,
,
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.
I.3 Ruido en imágenes
Todas las imágenes tienen cierta cantidad de ruido, la cual se puede deber a la cámara o
al medio de transmisión de la señal. Generalmente el ruido se manifiesta como píxeles
aislados que toman un nivel de gris diferente al de sus vecinos. Los algoritmos de filtrado
que se verán más adelante permiten eliminar o disminuir este ruido. El ruido puede
clasificarse en los siguientes tipos:
Gaussiano: produce pequeñas variaciones en la imagen; generalmente se debe a
diferentes ganancias en la cámara, ruido en los digitalizadores, perturbaciones en la
transmisión, etc. Se considera que el valor final del píxel sería el ideal más una cantidad
correspondiente al error que puede describirse como una variable aleatoria gaussiana.
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.
Multiplicativo: La imagen obtenida es el resultado de la multiplicación de dos señales.
En la figura 8 se muestran los diferentes ruidos afectando a una imagen.
I.4 Procesamiento espacial
El procesamiento espacial esta formado por aquellas técnicas que operan directamente
sobre los valores de los píxeles de la imagen. Las transformaciones son de la siguiente
forma:
( ) ( )
( )
y
x
I
F
y
x
S ,
, =
donde I(x,y) es la imagen original, S(x,y) la imagen resultante y F la transformación.
M. en C. José Jaime Esqueda Elizondo
10
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 )
,
(
)
,
(
)
,
( y
x
B
y
x
A
y
x
C +
= mediante el comando
imadd en Matlab.
Figura 8. Diferentes tipos de ruido afectando a una imagen.
+ =
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 a
y
x
A
y
x
B +
= )
,
(
)
,
( .
M. en C. José Jaime Esqueda Elizondo
11
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).
La resta de imágenes consiste en restar de una imagen el valor correspondiente de otra
imagen. Esta operación es un paso intermedio en algunos procesamientos más complejos,
como la detección de movimiento, etc. La resta, al igual que la suma de imágenes
requiere que ambas imágenes sean de igual tamaño. En la figura 11 se muestra el efecto
de restar una imagen de otra, de la forma )
,
(
)
,
(
)
,
( y
x
B
y
x
A
y
x
C −
= mediante el
comando imsubtract en Matlab.
- =
Figura 11. Resta de dos imágenes, imagen original (izquierda), imagen a restar (centro) y
resultado (derecha).
En la figura 12 se muestra la resta de un escalar (50) a cada píxel de la imagen original, la
cual se lleva a cabo de la forma a
y
x
A
y
x
B −
= )
,
(
)
,
( .
Figura 12. Resta de un escalar (50) a cada píxel de la imagen original (izquierda)
M. en C. José Jaime Esqueda Elizondo
12
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 )
,
(
)
,
(
)
,
( y
x
B
y
x
A
y
x
C ⋅
= , en Matlab esto se realiza con el
comando immultiply. En la figura 13 se muestra la multiplicación de dos imágenes.
Figura 13 Multiplicación de una imagen por si misma, imagen original (izquierda),
imagen resultante (derecha).
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 )
,
(
)
,
( y
x
A
a
y
x
B ⋅
= . 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).
La división de imágenes consiste en una división de elemento a elemento, como las
demás operaciones vistas anteriormente. La división entre imágenes puede utilizarse para
detectar cambios en dos imágenes, sin embargo, en lugar de dar el cambio absoluto de
cada píxel, la división da el cambio fraccional o razón de cambio entre los valores de dos
píxeles correspondientes. A la división de imágenes también se le conoce como
M. en C. José Jaime Esqueda Elizondo
13
racionalización. En la figura 15 se presenta la división entre imágenes, la cual se realiza
de la forma )
,
(
)
,
(
)
,
( y
x
B
y
x
A
y
x
C ÷
= .
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.
I.4.2 Operaciones lógicas
Las principales operaciones lógicas utilizadas en el procesamiento de imágenes son:
AND, OR, NOT, las cuales se aplican solo a imágenes binarizadas. En la figura 16 se
muestran las operaciones lógicas aplicadas a imágenes binarias.
Figura 16. Operaciones lógicas aplicadas a imágenes binarias.
I.4.3 Transformaciones geométricas
Las transformaciones geométricas modifican las relaciones espaciales entre píxeles; a
continuación se presentan algunas.
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
M. en C. José Jaime Esqueda Elizondo
14
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:
( ) ( ) ( )
∑∑ −
−
= j
y
i
x
h
j
i
g
y
x
f ,
,
,
donde: g(x,y) es la imagen original, f(x,y) representa la imagen procesada y h(x,y) es la
interpolación (máscara). En el toolbox de Image Processing se encuentran
implementados los siguientes métodos de interpolación: interpolación por el vecino más
próximo, interpolación bilineal e interpolación bicúbica. Dichos métodos se explicarán
más delante de forma breve. Los tres métodos de interpolación funcionan de forma
similar, en cada caso para determinar el valor para un píxel interpolado, se encuentra el
punto en la imagen original que corresponde a la imagen interpolada. Se asigna el valor
del píxel interpolado calculando el promedio ponderado de el conjunto de píxeles
hallados en la vecindad de dicho punto. Los tres métodos difieren en el conjunto de
píxeles que consideran:
• Vecino más próximo: al píxel interpolado se le asigna el valor del píxel que
corresponde
• Interpolación bilineal: el valor del píxel interpolado es el promedio ponderado de los
píxeles en la vecindad 2x2 más cercana.
• Interpolación bicúbica: el valor del píxel interpolado es el promedio ponderado de
los píxeles presentes en la vecindad 4x4 más cercana.
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.
I.4.3.2 Amplificación/Reducción de imágenes
Para el cambio de tamaño de una imagen (amplificación/reducción) se utiliza el comando
imresize. Este comando permite especificar: el tamaño de la imagen de salida
(procesada), el método de interpolación utilizado y el filtro a usar para evitar el efecto
alias. El efecto alias se presenta al reducir el tamaño de una imagen. Esto es debido a que
se presenta una pérdida de información cuando se reduce el tamaño de una imagen.
En las figuras 17 y 18 se presenta un ejemplo de amplificación de imágenes usando los
métodos de interpolación descritos anteriormente. La interpolación mediante Fourier se
expone más adelante.
M. en C. José Jaime Esqueda Elizondo
15
Figura 17. Imagen original
Figura 18. Amplificación de la figura 17 usando diferentes métodos de interpolación.
I.4.3.3 Traslación
Si se requiere trasladar el origen de una imagen se aplican las ecuaciones:
o
i
f
o
i
f
y
y
y
x
x
x
+
=
+
=
Que en coordenadas homogéneas es:




















=










1
1
0
0
1
0
0
1
1
i
i
o
o
f
f
y
x
y
x
y
x
M. en C. José Jaime Esqueda Elizondo
16
Rotación respecto al origen



















 −
=










1
1
0
0
0
cos
0
cos
1
i
i
f
f
y
x
sen
sen
y
x
θ
θ
θ
θ
Rotación respecto a un punto cualquiera




















−
−









 −










=










1
1
0
0
1
0
0
1
1
0
0
0
cos
0
cos
1
0
0
1
0
0
1
1
i
i
o
o
o
o
f
f
y
x
y
x
sen
sen
y
x
y
x
θ
θ
θ
θ
En la figura 19 se muestra la rotación de la figura 17 usando diferentes métodos de
interpolación.
Figura 19. Rotación de la imagen de la figura 17 usando diferentes métodos de
interpolación.
I.4.3.4 Convolución bidimensional
La convolución bidimensional discreta es la base de algunos procesamientos comunes,
como el filtrado de imágenes. En la convolución, el valor de un píxel de salida se calcula
mediante la suma ponderada de los píxeles vecinos. Dentro del campo del procesamiento
de imágenes, la convolución se realiza entre la imagen y una matriz (los coeficientes del
filtro) llamada máscara para filtrar una imagen. En Matlab la convolución bidimensional
(aplicada a imágenes) se encuentra en el comando conv2. La convolución de f(x,y) y
h(x,y) está dada por:
( ) ( ) ( ) ( ) ( )
∑ ∑
∞
−∞
=
∞
−∞
=
−
−
=
∗
=
i j
j
y
i
x
h
j
i
f
y
x
f
y
x
h
y
x
g ,
,
,
,
,
Lo más común es usar convoluciones de 3 x 3 elementos; entonces la ecuación anterior se
convierte en:
( ) ( ) ( ) ( ) ( )
∑∑
= =
−
−
=
∗
=
2
0
2
0
,
,
,
,
,
i j
j
y
i
x
h
j
i
f
y
x
f
y
x
h
y
x
g
que, por ejemplo, para obtener g(2,2) se tiene:
( ) ( ) ( )
∑∑
= =
=
−
−
=
2
0
2
0
2
,
2
,
2
,
2
i j
j
i
h
j
i
f
g
( ) ( ) ( ) ( ) ( ) ( ) !
+
+
+ 0
,
2
2
,
0
1
,
2
1
,
0
2
,
2
0
,
0 h
f
h
f
h
f
M. en C. José Jaime Esqueda Elizondo
17
( ) ( ) ( ) ( ) ( ) ( ) !
! +
+
+
+ 0
,
1
2
,
1
1
,
1
1
,
1
2
,
1
0
,
1 h
f
h
f
h
f
( ) ( ) ( ) ( ) ( ) ( )
0
,
0
2
,
2
1
,
0
1
,
2
2
,
0
0
,
2 h
f
h
f
h
f +
+
+
!
Considérese que la imagen es la mostrada en la figura 20:
A =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
Figura 20. Imagen
y la máscara se muestra en la figura 21:
8 1 6
3 5 7
4 9 2
h =
Figura 21. Máscara de convolución.
En la figura 22 se muestra como calcular el píxel de salida (procesada) mediante los
siguientes pasos:
1. Rotar la máscara de convolución 180 grados a partir del elemento del centro. La
máscara rotada queda entonces como:
8
1
6
3
5
7
4
9
2
Figura 22. Máscara rotada para la convolución.
2. Sobreponer el elemento central de la máscara de tal forma que quede sobre el
elemento de interés, en este caso el elemento (2,4) de A, tal como se muestra en la
figura 23.
M. en C. José Jaime Esqueda Elizondo
18
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
8
1
6
3
5
7
4
9
2
Figura 23. Convolución para obtener el valor de A(2,4)
3. Multiplicar cada peso (valor) de la máscara rotada por el píxel de A que se
encuentra “bajo” la máscara.
4. Sumar los productos individuales obtenidos en el paso 3.
Por ejemplo, para el píxel (2,4), el píxel de salida (procesado) es:
1 · 2 + 8 · 9 + 15 · 4 + 7 · 7 + 14 · 5 + 16 · 3 + 13 · 6 + 20 · 1 +22 · 8 = 575
Cuando se trabaja en los extremos de la imagen, se acostumbra insertar ceros (zero
padding) en los extremos, tal como se muestra en la figura 24.
8
1
6
3
5
7
4
9
2
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
0
0
0 0 0
Figura 24. Inserción de ceros (zero padding) en los extremos.
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:
( ) ( ) ( ) ( ) ( )
∑∑
∞
−∞
=
∞
∞
=
∗
+
+
=
=
i j
j
y
i
x
h
j
i
f
y
x
f
y
x
h
y
x
g ,
,
,
,
, "
M. en C. José Jaime Esqueda Elizondo
19
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
3 5 7
4 9 2
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
Figura 25. Correlación de A con h.
El algoritmo de la correlación opera de la siguiente forma:
1. Sobreponer el elemento central de la máscara de tal forma que quede sobre el
elemento de interés, en este caso el elemento (2,4) de A, tal como se muestra en la
figura 22.
2. Multiplicar cada peso (valor) de la máscara rotada por el píxel de A que se
encuentra “bajo” la máscara.
3. Sumar los productos individuales obtenidos en el paso 2.
Por ejemplo, para el píxel (2,4), el píxel de salida (procesado) es:
1 · 8 + 8 · 1 + 15 · 6 + 7 · 3 + 14 · 5 + 16 · 7 + 13 · 4 + 20 · 9 +22 · 2 = 585
I.5 Procesamiento en el dominio de la frecuencia
En el campo de las imágenes, el dominio de la frecuencia es aquel en el que una imagen
se representa como la suma de señales periódicas con diferentes frecuencias. Por ejemplo,
la transformada de Fourier de una imagen es la representación de dicha imagen como una
suma de exponenciales complejos de diferentes magnitudes, frecuencias y fases. Este tipo
de transformaciones frecuenciales se llevan a cabo para una amplia gama de
procesamientos, entre los cuales se encuentran: la convolución, el mejoramiento de
imágenes, la detección de características, compresión, etc.
I.5.1 Series de Fourier
Dada una función periódica en el dominio del tiempo f(t), es lógico pensar que esta
función se puede expresar mediante la suma de otras funciones periódicas. Lo anterior se
expresa mediante las series de Fourier, las cuales dan las fórmulas matemáticas que
M. en C. José Jaime Esqueda Elizondo
20
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:
∑
∞
=
+
+
=
1
0
0
0 )
(
)
cos(
)
(
k
k
k t
k
sen
b
t
k
a
a
t
f ω
ω
Donde:
∫
=
0
0
0
0 )
(
1
T
ft
t
f
T
a , ∫
=
0
0
0
0
)
cos(
)
(
2
T
k dt
t
k
t
f
T
a ω , ∫
=
0
0
0
0
)
(
)
(
2
T
k dt
t
k
sen
t
f
T
b ω ,
0
0
2
T
π
ω =
La serie de Fourier de la señal cuadrada se puede representar como:
∑
∞
= +
+
=
0 1
2
)
)
1
2
((
4
)
(
k k
t
k
sen
t
f
π
En la figura 26 se presenta la señal cuadrada
0 1 2 3 4 5 6
-1
-0.5
0
0.5
1
(a)
0 1 2 3 4 5 6
-1
-0.5
0
0.5
1
(b)
0 1 2 3 4 5 6
-1
-0.5
0
0.5
1
(c)
0 1 2 3 4 5 6
-1
-0.5
0
0.5
1
(d)
0 1 2 3 4 5 6
-1
-0.5
0
0.5
1
(e)
0 1 2 3 4 5 6
-1
-0.5
0
0.5
1
(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.
I.5.2 Transformada de Fourier
La transformada de Fourier es una extensión de las series de Fourier a señales no
periódicas. El par transformado analítico de Fourier está dado por:
[ ] ∫
∞
∞
−
−
=
= dt
e
t
x
f
X
t
x
F ft
j π
2
)
(
)
(
)
( (ec. de análisis)
[ ] ∫ ∫
∞
∞
−
∞
∞
−
−
=
=
= ω
ω
π
ω
π
d
e
X
df
e
f
X
f
X
F
t
x t
j
ft
j
)
(
2
1
)
(
)
(
)
( 2
1
(ec. de síntesis)
donde )
(
2
)
( f
X
X π
ω = .
M. en C. José Jaime Esqueda Elizondo
21
Para el caso unidimensional discreto, el par transformado de Fourier está dado por:
[ ] ∑
−
=
−
=
=
1
0
2
)
(
)
(
)
(
N
n
kn
N
j
e
n
x
k
X
n
x
F
π
; k = 0, 1, ..., N-1 (ec. de análisis)
[ ] ∑
−
=
−
=
=
1
0
2
1
)
(
1
)
(
)
(
N
k
kn
N
j
e
k
X
N
n
x
k
X
F
π
; n = 0, 1, ..., N-1 (ec. de síntesis)
Para el caso bidimensional discreto, se tiene que:
[ ] ∑∑
−
=
−
=
−
−
=
=
1
0
1
0
ln
2
2
)
,
(
)
,
(
)
,
(
M
m
N
n
N
j
km
M
j
e
e
n
m
x
l
k
X
l
k
x
F
π
π
; k = 0, 1, ..., M-1; l = 0, 1, …, N-1
[ ] ∑∑
−
=
−
=
−
=
=
1
0
1
0
ln
2
2
1
)
,
(
1
)
,
(
)
,
(
M
k
N
l
N
j
km
M
j
e
e
l
k
X
MN
n
m
x
l
k
X
F
π
π
; m = 0, 1, ..., M-1; n = 0,1,…, N-1
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).
La fase obtenida mediante la transformada de Fourier contiene información esencial
sobre la estructura de la imagen. La amplitud por si sola implica solo que existe una
estructura periódica dentro de la imagen, pero no especifica donde se encuentra. Es
decir, si no se conoce la fase de la transformada de Fourier, se puede determinar que
objetos hay en la imagen, pero no su posición. Por lo tanto, resulta obvio que si se obtiene
un espectro de potencia, se tendría muy poca información sobre la imagen debido a que la
fase se ha perdido. Si se asocia un nivel de gris con la amplitud de un proceso físico, por
ejemplo una oscilación armónica, entonces el espectro de potencia proporciona la
distribución de la energía en el dominio de la frecuencia.
I.5.2.1 Aplicaciones de la transformada de Fourier
En esta sección se presentan algunos procesamientos de imágenes relacionados con la
transformada de Fourier.
Respuesta a la frecuencia de filtros lineales
La transformada de Fourier de la respuesta al impulso de un filtro lineal proporciona la
respuesta a la frecuencia del filtro. Esto puede obtenerse mediante el comando freqz2,
el cual calcula y despliega la respuesta a la frecuencia de un filtro.
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.
M. en C. José Jaime Esqueda Elizondo
22
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.
Localización de características en imágenes
La transformada de Fourier se utiliza también para realizar correlaciones. La correlación
se utiliza para localizar algunas características en una imagen. Por ejemplo si se desea
encontrar la letra “a” en una imagen que contenga texto, se establece un patrón (sección
de la imagen con la característica de búsqueda deseada) con la letra “a” . Posteriormente
se obtiene la correlación de la imagen patrón y la imagen original rotando 180º la imagen
patrón y se utiliza la técnica de convolución basada en la transformada de Fourier,
descrita anteriormente (Nota: la convolución es equivalente a la correlación si se rota el
kernel de convolución 180º. Para buscar coincidencias en la imagen se utiliza la
transformada de Fourier y la transformada inversa de Fourier.
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.
I II
III IV
N
N
N
2
N
2
Figura 27. División en cuatro partes iguales de la imagen transformada (B)
3. Insertar N ceros a cada renglón de la matriz B, ver la figura 28 (b); enseguida
insertar N ceros a cada columna, tal como se muestra en la figura 28(c) para
formar una matriz aumentada, B’.
M. en C. José Jaime Esqueda Elizondo
23
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.
Imagen
(Matriz B)
Inserción de N ceros a
cada renglón
Ceros
I II
III IV
Ceros
IV
III
II
I
Inserción de N ceros a
cada columna
(a) (b)
(c)
III
I II
IV
Figura 28. Inserción de ceros para obtener la matriz B aumentada (B’).
I.5.3 Transformada discreta coseno
La transformada discreta coseno (TDC) representa una imagen como la suma de
senoidales de diferentes amplitudes y frecuencias. La transformada discreta coseno tiene
una propiedad tal que para una imagen típica, la mayoría de la información visualmente
significativa de una imagen se concentra en solo unos cuantos coeficientes de la DCT.
Por esta razón, la TDC es comúnmente usada en aplicaciones de compresión de
imágenes. Por ejemplo, la TDC es el corazón del algoritmo estándar de compresión de
imágenes conocido como JPEG (Joint Photographic Experts Group).
La transformada discreta coseno de una matriz A de M por N, tal como se define a
continuación:
( ) ( )
1
0
1
0
,
2
1
2
cos
2
1
2
cos
1
0
1
0 −
≤
≤
−
≤
≤
+
+
= ∑∑
−
=
−
= N
q
M
p
N
q
n
M
p
m
A
B
M
m
N
n
mn
q
p
pq
π
π
α
α







−
≤
≤
=
=







−
≤
≤
=
=
1
1
2
0
q
,
1
1
1
2
0
,
1
N
q
N
N
M
p
M
p
M
p
p α
α
Los valores Bpq son los coeficientes de la transformada discreta coseno de A. La TDC es
invertible, y su inversa está dada por:
( ) ( )
1
0
1
0
,
2
1
2
cos
2
1
2
cos
1
0
1
0 −
≤
≤
−
≤
≤
+
+
= ∑∑
−
=
−
= N
n
M
m
N
q
n
M
p
m
B
A
M
m
N
n
pq
q
p
mn
π
π
α
α
M. en C. José Jaime Esqueda Elizondo
24







−
≤
≤
=
=







−
≤
≤
=
=
1
1
2
0
q
,
1
1
1
2
0
,
1
N
q
N
N
M
p
M
p
M
p
p α
α
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:
( ) ( )
1
0
1
0
,
2
1
2
cos
2
1
2
cos
−
≤
≤
−
≤
≤
+
+
N
n
M
m
N
q
n
M
p
m
q
p
π
π
α
α
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.
I.6 Procesamiento de imágenes básico
En esta sección se presentan y describen algunos procesamientos más comunes.
I.6.1 Binarización de una imagen
La binarización de una imagen consiste en comparar los niveles de gris presentes en la
imagen con un valor (umbral) predeterminado. Si el nivel de gris de la imagen es menor
que el umbral predeterminado, se le asigna al píxel de la imagen binarizada el valor 0
(negro), y si es mayor, se le asigna un 1 (blanco). De esta forma se obtiene una imagen
en blanco y negro. Generalmente se utiliza un umbral de 128 si se trabaja con 255 niveles
de gris, pero en algunas aplicaciones se requiere de otro umbral. En la figura 30 se
muestra un ejemplo de imagen binarizada.
M. en C. José Jaime Esqueda Elizondo
25
Figura 29. Compresión de imágenes usando la TDC.
Fig. 30. Binarización de una imagen
I.6.2 Manipulación del contraste
El histograma que se muestra en la figura 31 toma valores limitados, por lo que el
contraste en la imagen es muy bajo y apenas se aprecian los detalles. Se desea encontrar
una función que produzca una nueva imagen que si cubra todo el conjunto de valores
posibles de la imagen (niveles de gris). Si a y b son los valores mínimos y máximos,
respectivamente, puede definirse la función T(c) que asigna los nuevos valores de gris a
partir de los antiguos:
M. en C. José Jaime Esqueda Elizondo
26
a
b
a
c
A
c
T
y
−
−
=
= )
(
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 b
c
0
A
Figura 31. Expansión del histograma de la imagen.
En la figura 32 se muestra el resultado de aplicar a la imagen la modificación del
contraste, procesamiento también conocido como ecualización de la imagen. El contraste
(separación entre los niveles de gris) ha mejorado y ahora se aprecian mejor los detalles
de la imagen. En el nuevo histograma puede observarse como la separación entre los
diferentes niveles de gris es mayor. En este caso la separación es igual para todos los
niveles de gris debido a que la transformación es lineal. Nótese que aunque la imagen se
ve mejor, la información es la misma en ambas imágenes, lo único que se ha hecho es
asignar nuevos niveles de gris, pero los píxeles que tenían un nivel de gris determinado
en la imagen original diferente a los niveles de gris inferior y superior, son los mismos en
la imagen nueva.
Para un caso más general la función buscada tendrá la forma (ver la figura 33)





≤
≤
+
−
≤
≤
+
−
≤
≤
=
=
L
x
b
y
b
x
b
x
a
y
a
x
a
x
x
x
T
y
b
a
)
(
)
(
0
)
(
γ
β
α
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
M. en C. José Jaime Esqueda Elizondo
27
Figura 32. Modificación de contraste
a b L
Imagen original
Imagen
original
a
v
b
v
Figura 33. Caso general
I.6.3 Modificación del contraste
La modificación del contraste consiste en aplicar una función a cada uno de los píxeles de
la imagen, de la forma: a
m
p =
donde:
M. en C. José Jaime Esqueda Elizondo
28
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
Entre las transformaciones más usuales se encuentran:
Función inversa m
p −
= 255
Función cuadrada
255
2
m
p =
Función cúbica 2
3
255
m
p =
Función raíz cuadrada m
p 255
=
Función raíz cúbica 3 2
255 m
p =
Función logarítmica
)
255
1
ln(
)
1
ln(
255
+
+
=
m
p
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.
I.6.4 Modificación del histograma
Los métodos anteriores modifican cada nivel de gris y dependen únicamente de su valor y
por lo tanto, son locales. Si se desea adquirir una información global de la imagen, la
forma más fácil de hacerlo es analizar y modificar el histograma. Esto se hace con la idea
de que éste se ajuste a una forma predeterminada; la forma más usual se conoce como
ecualización del histograma, en la que se pretende que éste sea horizontal, es decir, que
para todos los valores de gris se tenga el mismo número de píxeles.
La ecualización del histograma se realiza trabajando sobre el histograma acumulado, el
cual está dado por:
∑
=
=
i
k
k
h
i
H
0
)
(
)
(
Si el histograma fuera totalmente plano, el histograma para cada nivel de gris sería:
256
)
1
(
)
'
(
NM
i
i
G +
=
donde N y M son las dimensiones de la imagen y 256 corresponde al número de niveles
dado por el número de bits con los que se representan (en este caso 8 bits).
Como se desea que G(i’) = H(i), se tiene que;
)
(
256
)
1
'
( i
H
NM
i =
+ 1
)
(
256
' −
=
∴ i
H
NM
i
M. en C. José Jaime Esqueda Elizondo
29
Debido a que los niveles de gris son únicamente valores enteros, se realiza un cambio en
los niveles de gris de acuerdo a:
( ) 





−
= 1
256
entera
Parte anterior
nuevo i
H
NM
i
I.6.5 Filtrado de una imagen
El filtrado es una técnica para modificar o mejorar a una imagen. Por ejemplo, un filtro
puede resaltar o atenuar algunas características. El filtrado es una operación de
vecindario, en la cual el valor de un píxel dado en la imagen procesada se calcula
mediante algún algoritmo que toma en cuenta los valores de los píxeles de la vecindad de
la imagen original.
I.6.5.1 Filtros lineales espaciales
El ruido en una imagen es una característica que se desea eliminar, y al ser este
variaciones sobre los niveles de gris, le corresponden las frecuencias altas. Si se supone
que el ruido es una señal que se suma a la señal (imagen) original, el nivel de gris de un
píxel puede definirse como la suma del nivel de gris ideal y el ruido:
f(x, y) = fi(x, y) + r(x, y)
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 σ .
I.6.5.2 Filtro pasa bajas espacial
Una forma de eliminar el ruido consiste en hacer pasar la imagen por un filtro pasa bajas
que disminuya la ganancia de las componentes de alta frecuencia. El filtro más sencillo e
intuitivo es aquel que tiene coeficientes unitarios en todos los elementos, tal como se
muestra a continuación.
1 1 1
1 1 1
1 1 1
Si al resultado se le multiplica por un noveno, se obtiene la media de todos los píxeles,
por lo que el ruido disminuye. Sin embargo, este filtro presupone que la influencia de
todos los píxeles es igual. Otra consideración es que cuanto más alejado esté el píxel del
central, su valor será menor y se obtiene la siguiente máscara:
M. en C. José Jaime Esqueda Elizondo
30
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
b b b
1 b 1
2
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.
I.6.5.3 Filtrado por la mediana
El filtrado por la mediana permite eliminar el ruido tipo sal y pimienta, es decir, elimina
puntos blancos y negros presentes en la imagen. En una secuencia de números x1, x2, ...xN,
la mediana es aquel valor que cumple que (N-1)/2 elementos tienen un valor menor o
igual a ella y que (N-1)/2 tiene un valor mayor o menor que la mediana. La mediana se
obtiene ordenando las intensidades de los píxeles de menor a mayor, y el píxel que se
encuentra en (N-1)/2 es la mediana , tal como se muestra en la figura 34. A continuación
se muestra como el filtrado por la mediana puede eliminar un valor.
vecindad de x = [0,0,0,0,255,0,0,0,0]
vecindad de x = [0,0,0,0,0,0,0,0,255]
Mediana
M. en C. José Jaime Esqueda Elizondo
31
22 10 10 255 15
0 0 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
0
0
0 0 0
vecindad de a = [0,0,0,0,22,10,0,0,0]
a b
Se ordena de mayor a menor
vecindad de a = [0,0,0,0,0,0,0,10,22]
Mediana
Figura 34. Vecindad de a y obtención de la mediana.
En Matlab este filtro se encuentra implementado en el comando medfilt2.
I.6.5.4 Realce de bordes
El realce de bordes en una imagen tiene un efecto opuesto a la eliminación de ruido;
consiste en enfatizar o resaltar aquellos píxeles que tienen un valor de gris diferente al de
sus vecinos. Cabe resaltar que si la imagen contiene ruido, su efecto se multiplicará, por
lo que ser recomienda primero eliminar el ruido. En la figura 35 se muestra un ejemplo
de realce de contornos.
Figura 35. Realce de una imagen
En el realce de imágenes consiste en aumentar la ganancia de las altas frecuencia, es
decir:
M. en C. José Jaime Esqueda Elizondo
32
Imagen resultante = (Ganancia)(Imagen Original) – Bajas frecuencias
De forma general, la máscara usada para realzar los bordes es:
-1 -1 -1
-1 A -1
-1 -1 -1
donde:
A = 9 · Ganancia –1
y todo ello multiplicado por un noveno.
I.6.5.5 Detección de contornos
La detección de contornos es un paso intermedio en el reconocimiento de patrones en
imágenes digitales. En una imagen, los contornos corresponden a los limites de los
objetos presentes en la imagen. Para hallar los contornos se buscan los lugares en la
imagen en los que la intensidad del píxel cambia rápidamente, generalmente usando
alguno de los siguientes criterios:
• Lugares donde la primera derivada (gradiente) de la intensidad es de magnitud
mayor que la de un umbral predefinido
• Lugares donde la segunda derivada (laplaciano) de la intensidad tiene un cruce por
cero.
En el primer caso se buscarán grandes picos y en el segundo cambios de signo, tal como
se muestra en la figura 36.
I.6.5.5.1 Técnicas basadas en el gradiente
Estas técnicas se basan en una aproximación al concepto de la derivada para espacios
discretos. Esta generalización se basa en el cálculo de diferencias entre píxeles vecinos;
estas diferencias, según la relación de píxeles considerados, puede dar lugar a derivadas
unidimensionales o bidimensionales, así como aplicarse en una dirección determinada de
la imagen o en todas direcciones. Otras aproximaciones diferenciales de gran utilidad son
la de Roberts y la de Sobel.
El operador gradiente G aplicado a una imagen f(x,y) esta definido como:
[ ] 





∂
∂
∂
∂
=
=
∇
y
f
x
f
G
G
y
x
f y
x
)
,
(
M. en C. José Jaime Esqueda Elizondo
33
f(x)
f ' (x)
f '' (x)
Figura 36. Detección de contornos mediante la primera y segunda derivada.
El vector gradiente representa el cambio máximo de intensidad para el punto (x,y); su
magnitud y dirección están dados por:
2
2
y
xx G
G
f +
=
∇








=
∠∇
x
y
G
G
f arctan
siendo la dirección del gradiente perpendicular al borde. Para reducir el costo
computacional, generalmente se aplica:
y
x G
G
f +
=
∇
Debido a que las imágenes digitales no son señales continuas, se tiene:
[ ] 





∆
∆
∆
∆
=
=
∇
y
f
x
f
G
G
y
x
f y
x
)
,
(
que se puede representar mediante las máscaras:
x
f
Gx
∆
∆
= -1 1
∗ f(x,y)
y
f
Gy
∆
∆
= -1
1
∗ f(x,y)
M. en C. José Jaime Esqueda Elizondo
34
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
0 1
Operador de Roberts
-1 0
-1 0
-1 0
1
1
1
-1 -1
0 0
1 1
-1
0
1
Operador de Prewitt
-1 0
-2 0
-1 0
1
2
1
-1 -2
0 0
1 2
-1
0
1
Operador de Sobel
-1 0
0
-1 0
1
1
-1
0 0
1
-1
0
1
2
− 2
2
−
2
Operador Isotrópico
Figura 37. Máscaras para los operadores: Roberts, Prewitt, Sobel e Isotrópico.
I.6.5.5.2 Técnicas basadas en el laplaciano
El laplaciano es la segunda derivada de una función y representa la derivada de esta
respecto a todas las direcciones, y esta dado por:
( ) 2
2
2
2
2
,
y
f
x
f
y
x
f
∂
∂
+
∂
∂
=
∇
Generalmente para el laplaciano se utilizan las máscaras mostradas en la figura 38.
Nótese que el píxel central toma el valor negativo de la suma de todos los que lo rodean,
de tal forma que la suma aritmética de todos los píxeles sea cero.
-1 -1
-1 8
-1 -1
-1
-1
-1
0 -1
-1 0
0 -1
0
-1
0
Figura 38. Máscaras utilizadas para el operador laplaciano.
M. en C. José Jaime Esqueda Elizondo
35
En la figura 39 se presentan algunos ejemplos de detección de contornos.
Figura 39. Ejemplos de detección de contornos.
La detección de contornos se encuentra implementada en Matlab en el comando edge.
M. en C. José Jaime Esqueda Elizondo
36
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.
Matlab almacena la mayoría de las imágenes como arreglos bidimensionales (matrices)
en los cuales cada elemento de la matriz corresponde a la intensidad de un píxel de la
imagen. Por ejemplo, una imagen de 200 renglones por 300 columnas se almacena en
Matlab como una matriz de 200x300. Algunas imágenes, como las imágenes a color
(RGB), que requieren de un arreglo tridimensional, donde en el primer plano en el
espacio tridimensional representa la intensidad de rojo de los píxeles, el segundo plano
representa la intensidad de verde de los píxeles y el tercer plano representa la intensidad
de azul de los píxeles.
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.
II.1 Clases de almacenamiento usadas en el toolbox
Por omisión, Matlab almacena la mayoría de los datos en clase double (doble). Los datos
en estos arreglos se almacenan como datos de punto flotante de doble precisión (64 bits).
En el caso de las imágenes, esta representación no es la ideal, debido a que en una
imagen se tiene un número grande de píxeles. Por ejemplo, si se tiene una imagen de
1000 x 1000 píxeles tiene un millón de píxeles y debido a que cada píxel se representa
con al menos un elemento del arreglo, se requerirían aproximadamente 8 MB de memoria
para almacenarla.
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.
II.2 Conversiones entre tipos de imágenes
Para ciertas operaciones es necesario convertir una imagen de su tipo original a otro tipo
de imagen que facilite su procesamiento. Por ejemplo, si se desea filtrar una imagen a
color almacenada como imagen indexada, primero se debe convertir la imagen a formato
RGB. Esto es para que Matlab filtre los valores de intensidad de la imagen de forma
apropiada. Si se intenta filtrar una imagen indexada, el filtro simplemente se aplica a los
índices que se encuentran en la matriz indexada y los resultados no serán los deseados.
En la Tabla II se presentan los tipos de imágenes y en la Tabla III se presentan los
comandos usados para la conversión entre tipos de imágenes. En el Apéndice A se
presenta más información sobre los tipos de imágenes.
M. en C. José Jaime Esqueda Elizondo
37
Tabla II. Tipos de imágenes y clases numéricas
Tipo de imagen Clase de
almacenamiento
Interpretación
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.
Tabla III. Comandos de conversión de imágenes
Comando Descripción
dither Crea una imagen binaria a partir de una imagen de intensidad en
escala de gris por difuminación. Crea una imagen indexada a partir de
una imagen RGB por difuminación.
gray2ind Crea una imagen indexada a partir de una imagen de intensidad en
escala de gris
grayslice Crea una imagen indexada a partir de una imagen en intensidad en
escala gris mediante un umbral
im2bw Crea una imagen binaria a partir de una imagen de intensidad, imagen
indexada o RGB basado en un umbral de luminancia
ind2rgb Crea una imagen RGB a partir de una imagen indexada
mat2gray Crea una imagen de intensidad en escala de gris a partir de los datos
almacenados en una matriz escalándolos
rgb2gray Crea una imagen de intensidad en escala de gris a partir de una
imagen RGB
rgb2ind Crea una imagen indexada a partir de una imagen RGB
II.2.1 Despliegue de imágenes indexadas
Para desplegar una imagen indexada, se utiliza el comando imshow, pero se especifica
tanto la matriz-imagen como el mapa de color de la forma: imshow(X,mapa), donde
imshow despliega para cada píxel de X el color almacenado en la correspondiente
columna del mapa de color.
M. en C. José Jaime Esqueda Elizondo
38
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.
II.2.3 Despliegue de imágenes binarias
El despliegue de imágenes binarias se sigue la siguiente sintaxis imshow(I). En
Matlab esta clase de imágenes es de tipo logical, debido a que este tipo de imágenes solo
contiene 1s (blanco) y 0s (negro).
Para invertir los colores al desplegar la imagen, se utiliza la operación NOT en Matlab, es
decir, se utiliza imshow(-BN). Para desplegar la imagen en otros dos colores se puede
hacer uso de un mapa formado por los dos colores deseados. Por ejemplo, si se desea
desplegar una imagen binaria solo en rojo y azul, imshow(I,[1 0 0; 0 0 1]).
II.2.4 Despliegue de imágenes RGB
Las imágenes RGB, también conocidas como imágenes de color verdadero (truecolor),
representan directamente valores de color, mejor que usando un mapa de color. Para
desplegar este tipo de imágenes, la sintaxis básica es imshow(RGB), donde RGB es un
arreglo de m x n x 3. Para cada píxel (renglón, columna) de RGB, el comando imshow
despliega el color representado por la tripleta (renglón, columna,1:3).
II.2. 5 Tipos de imágenes en Matlab
El toolbox de Procesamiento de Imágenes maneja cuatro tipos de imágenes básicos:
imágenes indexadas, imágenes con intensidad, imágenes binarias e imágenes RGB, los
cuales se discutirán a continuación.
II.2.5.1 Imágenes indexadas
Una imagen indexada consiste de una matriz de datos X y un mapa de color, mapa. Los
datos de la matriz pueden ser de clase uint8, uint16 o double. El mapa de color es una
matriz (arreglo) de m x 3 de clase double que contiene valores en punto flotante en el
rango de 0 a 1. Cada una de las columnas especifica las componentes de rojo, verde y
azul de un solo color. Una imagen indexada utiliza el mapeo directo de los valores de un
píxel a los valores del mapa de color. El color para cada píxel de la imagen se determina
usando el correspondiente valor de X como un índice dentro de mapa. El valor de 1
apunta a la primer columna del mapa, el valor 2 apunta a la segunda columna y así
sucesivamente.
Generalmente se almacena un mapa de color con una imagen indexada y
automáticamente se carga al usar el comando imread. Sin embargo, el usuario no está
limitado a usar el mapa de color por omisión. En la figura 40 se muestra la estructura de
una imagen indexada. Los píxeles en la imagen son enteros, los cuales apuntan (índices) a
los valores de color almacenados en el mapa de color.
M. en C. José Jaime Esqueda Elizondo
39
Figura 40. Imagen indexada
La relación entre los valores de la imagen y el mapa de color depende de la clase de la
matriz que almacena la imagen. Si la matriz es de clase double, el valor 1 apunta a la
primera columna del mapa de color, el valor 2 apunta a la segunda columna y así
sucesivamente. Si la matriz que almacena la imagen es de clase uint8 o uint16, existe un
offset, el valor 0 apunta a la primer columna del mapa de color, el valor 1 apunta a la
segunda columna, y así sucesivamente.
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.
II.2.5.2 Imágenes de intensidad
Una imagen de intensidad es una matriz de datos, llamada I, cuyos valores representan
intensidades dentro de un rango. Matlab almacena las imágenes de intensidad como una
sola matriz, donde cada elemento corresponde a la intensidad de un píxel de la imagen.
La matriz puede ser de clase double, uint8 o uint16. Debido a que las imágenes de
intensidad rara vez se guardan con un mapa de color, pero Matlab usa un mapa de color
para desplegarla. Los elementos en una matriz de intensidad representan varios niveles de
intensidad o niveles de gris, donde generalmente el 0 representa el negro y la intensidad
ya sea 1, 255 o 65535 representa el blanco. En la figura 41 se muestra una imagen de
intensidad.
M. en C. José Jaime Esqueda Elizondo
40
Figura 41 Imagen de intensidad.
II.2.5.3 Imágenes binarias
En una imagen binaria, cada píxel asume un valor discreto; esencialmente dichos valores
corresponden a 1 o 0, encendido o apagado. Una imagen binaria se almacena en un
arreglo de píxeles 1s o 0s. En la figura 42 se muestra una imagen binaria.
Figura 42. Imagen binaria
II.2.5.4 Imágenes RBG
A las imágenes RGB generalmente se les conoce como imágenes de color verdadero. En
Matlab estas imágenes se almacenan mediante 3 arreglos de dimensión m x n que definen
M. en C. José Jaime Esqueda Elizondo
41
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.
En la Tabla IV se presentan algunos comandos de Matlab que pueden utilizarse para
determinar el tipo de imagen con que se está trabajando
Tabla IV. Comandos informativos
Comando Descripción
isbw Regresa un valor verdadero (1) si la imagen es binaria
isgray Regresa un valor verdadero (1) si la imagen es de intensidad
isind Regresa un valor verdadero (1) si la imagen es indexada
isrgb Regresa un valor verdadero (1) si la imagen es RGB
imfinfo Regresa información sobre la imagen
Los comandos listados en la Tabla III se pueden utilizar de la siguiente forma:
bandera = isbw(A)
info = imfinfo(archivo,formato)
info = imfinfo(archivo)
II.2.6 Selección de una sección de imágenes en Matlab
Para tomar una sección de cualquier imagen se utiliza el comando imcrop. A
continuación se presenta la sintaxis de este comando:
I2 =imcrop(I)
X2 =imcrop(X,map)
RGB2 =imcrop(RGB)
Si se omite el argumento de entrada, el comando opera sobre la imagen actual. Para
seleccionar la región a cortar, simplemente presione el botón derecho del ratón y forme
un rectángulo sobre la región. Si presiona la tecla Shift, se captura una sección cuadrada.
Cuando se suelta el botón del ratón, el comando regresa la sección seleccionada al
argumento de salida especificado. Si no se especifica ningún argumento, el comando
simplemente despliega la imagen seleccionada en una nueva figura.
También es posible seleccionar la sección de interés de forma no interactiva; en este caso
se debe especificar el rectángulo de la forma:
I2 =imcrop(I,[xmin ymin ancho alto])
X2 =imcrop(X,map,[xmin ymin ancho alto])
RGB2 =imcrop(RGB,[xmin ymin ancho alto])
M. en C. José Jaime Esqueda Elizondo
42
III. Ejercicios
A continuación se presenta una serie de ejercicios
Ejercicio 1. Formación de imágenes y mapas de color.
Crear una matriz de 32x32, desplegarla como imagen usando el comando imshow,
cambiar los mapas de color con el comando colormap y observar los cambios.
>> y=rand(32,32);
>> imshow(y)
>> colormap(jet)
>> colormap(hot)
Ejercicio 2. Cargar y desplegar una imagen.
Primero se limpia el espacio de trabajo y se cierra cualquier ventana que este abierta
>> clear all, close all
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’)
La imagen se despliega mediante el comando imshow.
>>imshow(I)
Repetir el ejercicio usando la imagen a color flowers.tif.
Ejercicio 3.Verificar el almacenamiento de la imagen cargada en la memoria.
Teclear el comando whos para verificar como se almacenó I en la memoria.
>> whos
y Matlab despliega
Name Size Bytes Class
I 291x240 69840 uint8 array
Grand total is 69840 elements using 69840 bytes
Ejercicio 4. Obtención de el histograma de una imagen.
Para observar la distribución de las intensidades de gris en la imagen se utiliza el
comando imhist.. Primero cargar la imagen pout.tif y posteriormente desplegar el
histograma de la imagen, tal como se muestra en la figura 43.
>>I=imread(‘pout.tiff’);
>>imhist(I)
Repetir con la imagen a color flowers.tif
Ejercicio 5. Amplificación/Reducción de imágenes
Para verificar los métodos de amplificación de imágenes se utilizan los comandos
imresize, fft2 e ifft2. Primero cárguese en memoria la imagen lenaojo.tiff, posteriormente
M. en C. José Jaime Esqueda Elizondo
43
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)
Posteriormente implemente el método de amplificación de imágenes usando la
transformada de Fourier y compare los resultados obtenidos con lo obtenido con el
comando imresize. El resultado se muestra en la figura 16.
Figura 43. Histograma obtenido de la imagen pout.tif.
Ejercicio 6 Rotación de una imagen
Para rotar una imagen se utiliza el comando imrotate, el cual acepta principalmente dos
argumentos: la imagen a rotar y el ángulo, este último puede especificarse en grados. Si
se especifica un valor positivo, la imagen gira en sentido contrario a las manecillas del
reloj; si se especifica un valor negativo, se rota la imagen en sentido de las manecillas del
reloj. También se puede agregar como argumento el método de interpolación a utilizar y
el tamaño de la imagen procesada. Rote 30º la imagen lenaojo.tiff utilizando los tres
métodos (vecino, bilineal y bicúbico), los resultados se muestran en la figura 17.
>>I=imread('lenaojo.tiff');
>>imshow(I);
>>J=imrotate(I,30,'nearest');
>>imshow(J)
M. en C. José Jaime Esqueda Elizondo
44
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)
El resultado de la binarización se observa en la figura 27.
Ejercicio 8. Operaciones aritméticas con imágenes.
Aplique las operaciones aritméticas suma, resta y multiplicación a las imágenes rice.tif y
cameraman.tif. Realice las operaciones expuestas entre imágenes. Ahora pruebe con la
imagen flowers.tif las operaciones ahora usando un escalar. Compare sus resultados con
los mostrados en las figuras 9 a 15. Repita las operaciones con las imágenes a color
lena256a.tif y lena256b.tif.
Ejercicio 9. Operaciones aritméticas con imágenes.
Aplique las operaciones lógicas a las imágenes rice.tif y cameraman.tif. Realice las
operaciones expuestas entre imágenes. Compare los resultados obtenidos con los
mostrados en la figura 16.
Ejercicio 10. Generación de ruido y filtrado de imágenes.
Añada diferentes tipos de ruido a las imágenes cameraman.tif y lena256a.tif.
Posteriormente pruebe los diferentes tipos del filtros existentes.
Ejercicio 11. Modificación del contraste y ecualización de una imágenes.
Utilice el comando histeq para ecualizar la imagen de lena.tiff, cameraman.tif y pout.tif.
Ejercicio 12. Detección de contornos
Utilice el comando edge para hallar contornos en las imágenes lena.tiff, eight.tif y rice.tif.
Ejercicio 13. Detección de características usando correlación.
Utilice la correlación para encontrar la letra “a” en la imagen text.tif, tal como se muestra
en el siguiente programa
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
M. en C. José Jaime Esqueda Elizondo
45
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')
M. en C. José Jaime Esqueda Elizondo
46
Apéndice A. Formatos de Imágenes
¿Qué son los formatos gráficos?
Básicamente, los formatos gráficos son archivos en los cuales se guarda información que
conforma una imagen. Cada formato es independiente. Las posibilidades que ofrece cada
formato con respecto a la gama de colores, a la compatibilidad, a la rapidez de carga, etc.,
merece ser explicada para determinar cuál de ellos es el más adecuado para la tarea que
estamos realizando. Con respecto a la estructura, la mayoría posee una cabecera que
indica al programa que lo solicite, las características de la imagen que almacenan; por
ejemplo su color, tipo, resolución, etc. Cada formato tiene una organización propia de su
estructura. Se pueden dividir en dos grandes grupos: los formatos vectoriales y los
formatos bitmap (mapa de bits).
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.
M. en C. José Jaime Esqueda Elizondo
47
Formatos de gráficos mas importantes
BMP (Bitmapped File Format)
Junto con el surgimiento de Windows 3.x se desarrolla un nuevo formato gráfico bitmap
que constituye el estándar adoptado por este entorno operativo, es decir al BMP, en el
cual están almacenadas las imágenes que constituyen los llamados wallpapers. Este
formato guarda las imágenes descomprimidas, lo que significa mayor velocidad de carga
y mayor espacio requerido. Con respecto a la resolución, cualquiera es aceptable. Las
imágenes pueden ser de 1, 4, 8 y 24 bits. La estructura de los BMPs es sencilla: se trata
de un header que contiene varias características de la imagen. Este encabezado está
compuesto por información acerca del tamaño, el número de colores, y una paleta de
colores (si es necesario) de la imagen. A continuación del encabezado se encuentra la
información que constituye la imagen en sí. Tiene una curiosa forma de almacenarla:
comienza desde la última línea inferior. Es por eso que los programas encargados de
exhibir los BMPs en pantalla trazan la imagen de abajo hacia arriba. Es un formato muy
utilizado en la actualidad y la mayoría de las aplicaciones lo utilizan.
GIF (Graphic Interchange Format)
Es el formato gráfico bitmap por excelencia. Fue creado por Compuserve en junio de
1987 y con el paso del tiempo se ha convertido en el formato más difundido en el mundo.
A la primera versión se la llamó GIF87a, y a la segunda, GIF89a. Esta última versión
presenta nuevas características para facilitar el manejo de imágenes en este formato. Los
GIFs utilizan una paleta de entre 2 y 256 colores. Poseen una rutina de compresión muy
eficaz que, aunque demora un poco la carga, reduce los archivos a una tamaño mucho
menor que otros formatos. Gracias a esa rutina de compresión que empequeñece los
archivos, el GIF es el formato óptimo para ser bajado de BBS o Internet. La resolución
máxima alcanzada es la de 1024 x 768 pixels en 256 colores, pero no hay razón por la
cual no pueda crearse una imagen de mayor tamaño. Incluso hay GIFs que almacenan
más de una imagen en un solo archivo, ideal para hacer slideshows. Su estructura está
basada en bloques. Sobre todo desde la incorporación del GIF 89a, se ha dado más
importancia a los bloques. Estos pueden contener uno de estos elementos: una imagen,
instrucciones acerca de cómo exhibirla, texto, información característica de alguna
aplicación, un marcador que determina el final del archivo, etc. Muchos GIFs solamente
contienen un bloque que determina su imagen. Todos los GIFs poseen dos tipos de
paleta: la paleta global y la paleta local. La global determina los colores de todas las
imágenes almacenadas en el GIF, y la local determina específicamente la paleta de cada
imagen del GIF (en el caso de haber una sola imagen, la única paleta disponible será la
global). Existe un bloque llamado comment block, o "bloque de comentarios", donde
puede incluirse un breve comentario personal acerca de la imagen en cuestión. Incluso
existe una opción para aplicar a los GIF llamada interlacing. Consiste en lo siguiente:
generalmente, cuando un programa exhibe un GIF en pantalla, comienza desde la primera
línea superior hasta llegar a la última línea inferior y de una pasada completa la imagen.
Pero si el GIF es interlaced, la imagen se visualizará de otra manera: harán falta cuatro
pasadas en lugar de una. En cada pasada se visualizan líneas que conforman la imagen,
pero esta vez no aparecen seguidas una de la otra, sino distribuidas en la parte superior,
central e inferior de la imagen. Este proceso se repite hasta finalizar las cuatro pasadas y
M. en C. José Jaime Esqueda Elizondo
48
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.
IMG (Aplicación GEM)
Este formato bitmap es el utilizado por la antigua aplicación GEM. Es capaz de
almacenar imágenes de entre 2 y 256 colores. No hay restricciones con respecto al
tamaño de las imágenes y utiliza una rutina de compresión medianamente eficaz. El único
inconveniente es que hay muy pocas aplicaciones que lo utilizan, y se hace un poco
pesado tener que convertir este formato a otro más conocido cuando haya que
modificarlo y luego volver a convertirlo a IMG.
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.
TIFF (Tagged Image File Format - TIFF) O TIF
Más que una imagen en una archivo, el formato TIF (formato de archivo de imagen
etiquetada) contiene una serie de bloques que conforman la imagen. Estos bloques
pueden contener cierta información sobre la imagen en sí, su tamaño, su manejo del
color, información a las aplicaciones que utilicen ese archivo, texto, y hasta thumbnails.
Un thumbnail o miniatura es una pequeña representación de una imagen mucho más
extensa, a la cual el programa accede rápidamente y no pierde tiempo descomprimiendo
toda la imagen. Sirve para ver el contenido del archivo de una manera rápida y segura.
Este formato es totalmente compatible con PC y Macintosh. Soporta gran cantidad de
colores y es uno de los formatos preferidos por las aplicaciones de hoy en día. Fue
M. en C. José Jaime Esqueda Elizondo
49
introducido por Aldus Corporation y es el formato más usado cuando se trabaja con
scanners debido a su útil manejo del color.
RAW (Raw Binary Image Format )
En el formato RAW (formato imagen crudo binario) se guardan la datos tal cual esta en la
imagen sin ningún tipo de análisis de la misma, además los datos son brutos, o sea, están
sin procesamiento y generalmente sin formatos, no teniendo informaciones de "header".
Ellos son de fácil lectura y escritura y son almacenados en 8 bits por pixel, variando de 0
a 255 niveles de gris.
En cuanto al cuerpo de la imagen, este formato es el más sencillo de todos porque no se
utiliza ningún método de compresión para la imagen como se menciono antes, sino que
simplemente se almacena en el disco de manera lineal. Es decir, se almacenan de forma
consecutiva los datos de la imagen y de la paleta en el archivo, y opcionalmente la
cabecera (header), que normalmente se coloca al principio. Con este método se puede
saber el tamaño del archivo crudo resultante, sabiendo el ancho y el alto de la imagen, el
número de colores y la longitud de la cabecera y la paleta. Los ficheros RAW (a veces
también llamados SCR, CLP o similar) se basan pues simplemente en el almacenamiento
de los mapas de bits en archivos binarios.
M. en C. José Jaime Esqueda Elizondo
50
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

Más contenido relacionado

La actualidad más candente

Animación 2D y 3D_Módulo2_Conceptos y técnicas de animación. El lenguaje del ...
Animación 2D y 3D_Módulo2_Conceptos y técnicas de animación. El lenguaje del ...Animación 2D y 3D_Módulo2_Conceptos y técnicas de animación. El lenguaje del ...
Animación 2D y 3D_Módulo2_Conceptos y técnicas de animación. El lenguaje del ...JackelineHuamanRojas
 
Prod. de madera en sist. agroforestales catie
Prod. de madera en sist. agroforestales   catieProd. de madera en sist. agroforestales   catie
Prod. de madera en sist. agroforestales catieMario Ruíz Ramos
 
Plan de manejo ijv
Plan de manejo ijvPlan de manejo ijv
Plan de manejo ijvJulio Cortes
 
Matlab adv esp
Matlab adv espMatlab adv esp
Matlab adv espLuis Maury
 
Guía para la detección e intervención temprana con menores en riesgo
Guía para la detección e intervención temprana con menores en riesgoGuía para la detección e intervención temprana con menores en riesgo
Guía para la detección e intervención temprana con menores en riesgoAsociación El Mundo de los ASI
 
Geologia aplicada a la ingenieria civil
Geologia aplicada a la ingenieria civilGeologia aplicada a la ingenieria civil
Geologia aplicada a la ingenieria civilSaul Caro
 
Calculo integral rojas
Calculo integral rojasCalculo integral rojas
Calculo integral rojasDavid Alex
 
Ursula aldana durán tania vásquez luque el impacto del proyecto sierra sur ...
Ursula aldana durán   tania vásquez luque el impacto del proyecto sierra sur ...Ursula aldana durán   tania vásquez luque el impacto del proyecto sierra sur ...
Ursula aldana durán tania vásquez luque el impacto del proyecto sierra sur ...UNDP Policy Centre
 
MANUAL DE DISEÑO, CONSTRUCCIÓN, MANTENCIÓN Y MONITOREO DE TABLEROS DE MADERA ...
MANUAL DE DISEÑO, CONSTRUCCIÓN, MANTENCIÓN Y MONITOREO DE TABLEROS DE MADERA ...MANUAL DE DISEÑO, CONSTRUCCIÓN, MANTENCIÓN Y MONITOREO DE TABLEROS DE MADERA ...
MANUAL DE DISEÑO, CONSTRUCCIÓN, MANTENCIÓN Y MONITOREO DE TABLEROS DE MADERA ...Carlos Vial
 
Salud y seguridad de los trabajadores del sector salud.pdf
Salud y seguridad de los trabajadores del sector salud.pdfSalud y seguridad de los trabajadores del sector salud.pdf
Salud y seguridad de los trabajadores del sector salud.pdfAna González Sánchez
 

La actualidad más candente (16)

Animación 2D y 3D_Módulo2_Conceptos y técnicas de animación. El lenguaje del ...
Animación 2D y 3D_Módulo2_Conceptos y técnicas de animación. El lenguaje del ...Animación 2D y 3D_Módulo2_Conceptos y técnicas de animación. El lenguaje del ...
Animación 2D y 3D_Módulo2_Conceptos y técnicas de animación. El lenguaje del ...
 
Minimanual cardiologia
Minimanual   cardiologiaMinimanual   cardiologia
Minimanual cardiologia
 
EEG Mindroid
EEG MindroidEEG Mindroid
EEG Mindroid
 
Prod. de madera en sist. agroforestales catie
Prod. de madera en sist. agroforestales   catieProd. de madera en sist. agroforestales   catie
Prod. de madera en sist. agroforestales catie
 
Refuerzo 6
Refuerzo 6Refuerzo 6
Refuerzo 6
 
Plan de manejo ijv
Plan de manejo ijvPlan de manejo ijv
Plan de manejo ijv
 
Matlab adv esp
Matlab adv espMatlab adv esp
Matlab adv esp
 
Guía para la detección e intervención temprana con menores en riesgo
Guía para la detección e intervención temprana con menores en riesgoGuía para la detección e intervención temprana con menores en riesgo
Guía para la detección e intervención temprana con menores en riesgo
 
Manual sobre sentido de vida 070519 (2)
Manual sobre sentido de vida 070519 (2)Manual sobre sentido de vida 070519 (2)
Manual sobre sentido de vida 070519 (2)
 
Geologia aplicada a la ingenieria civil
Geologia aplicada a la ingenieria civilGeologia aplicada a la ingenieria civil
Geologia aplicada a la ingenieria civil
 
Calculo integral rojas
Calculo integral rojasCalculo integral rojas
Calculo integral rojas
 
Ursula aldana durán tania vásquez luque el impacto del proyecto sierra sur ...
Ursula aldana durán   tania vásquez luque el impacto del proyecto sierra sur ...Ursula aldana durán   tania vásquez luque el impacto del proyecto sierra sur ...
Ursula aldana durán tania vásquez luque el impacto del proyecto sierra sur ...
 
MANUAL DE DISEÑO, CONSTRUCCIÓN, MANTENCIÓN Y MONITOREO DE TABLEROS DE MADERA ...
MANUAL DE DISEÑO, CONSTRUCCIÓN, MANTENCIÓN Y MONITOREO DE TABLEROS DE MADERA ...MANUAL DE DISEÑO, CONSTRUCCIÓN, MANTENCIÓN Y MONITOREO DE TABLEROS DE MADERA ...
MANUAL DE DISEÑO, CONSTRUCCIÓN, MANTENCIÓN Y MONITOREO DE TABLEROS DE MADERA ...
 
Cs220
Cs220Cs220
Cs220
 
Dr Geo
Dr GeoDr Geo
Dr Geo
 
Salud y seguridad de los trabajadores del sector salud.pdf
Salud y seguridad de los trabajadores del sector salud.pdfSalud y seguridad de los trabajadores del sector salud.pdf
Salud y seguridad de los trabajadores del sector salud.pdf
 

Similar a Fundamentos de procesamiento_de_imagenes

Algoritmo de Reconocimiento de Objetos en Escenas Complejas para Aplicaciones...
Algoritmo de Reconocimiento de Objetos en Escenas Complejas para Aplicaciones...Algoritmo de Reconocimiento de Objetos en Escenas Complejas para Aplicaciones...
Algoritmo de Reconocimiento de Objetos en Escenas Complejas para Aplicaciones...CIMAT
 
Tesis Licenciatura
Tesis LicenciaturaTesis Licenciatura
Tesis LicenciaturaCIMAT
 
Sistema de posicionamiento de objetos mediante visión estéreo embarcable en v...
Sistema de posicionamiento de objetos mediante visión estéreo embarcable en v...Sistema de posicionamiento de objetos mediante visión estéreo embarcable en v...
Sistema de posicionamiento de objetos mediante visión estéreo embarcable en v...Jorge Tarlea
 
Analisis de kani, cross, y viga conjugada
Analisis de kani, cross, y viga conjugadaAnalisis de kani, cross, y viga conjugada
Analisis de kani, cross, y viga conjugadamichelangelo6
 
ANALISIS DE ESTRUCTURAS-fuerza virtual
ANALISIS DE ESTRUCTURAS-fuerza virtualANALISIS DE ESTRUCTURAS-fuerza virtual
ANALISIS DE ESTRUCTURAS-fuerza virtualFernando Pineda
 
Bases optometricas para_una_lectura_eficaz
Bases optometricas para_una_lectura_eficazBases optometricas para_una_lectura_eficaz
Bases optometricas para_una_lectura_eficazkarensuach
 
12. Técnicas de comunicación para profesionales de enfermería autor Carlos J....
12. Técnicas de comunicación para profesionales de enfermería autor Carlos J....12. Técnicas de comunicación para profesionales de enfermería autor Carlos J....
12. Técnicas de comunicación para profesionales de enfermería autor Carlos J....edgargarcia355632
 
Estadistica en Fenomenos Naturales y procesos
Estadistica en Fenomenos Naturales y procesos Estadistica en Fenomenos Naturales y procesos
Estadistica en Fenomenos Naturales y procesos Luis Angel Gonzalez Ortiz
 
Demo matemáticas básicas y esenciales i
Demo matemáticas básicas y esenciales iDemo matemáticas básicas y esenciales i
Demo matemáticas básicas y esenciales iSamali Correa
 
3. benavente gonzales, karen
3. benavente gonzales, karen3. benavente gonzales, karen
3. benavente gonzales, karenIESTPTECNOTRONIC
 
7 8 yahir de jesus mariaca beltran - sergio reyes galindo
7 8 yahir de jesus mariaca beltran - sergio reyes galindo7 8 yahir de jesus mariaca beltran - sergio reyes galindo
7 8 yahir de jesus mariaca beltran - sergio reyes galindoSilvia Acuña
 
Apuntes de exámenes pasados para que túu
Apuntes de exámenes pasados para que túuApuntes de exámenes pasados para que túu
Apuntes de exámenes pasados para que túuquispecolqueflorenci
 
Tic en educación
Tic en educaciónTic en educación
Tic en educaciónMóni Alemi
 
Aprendiendo a aprender, novak gowin
Aprendiendo a aprender, novak gowinAprendiendo a aprender, novak gowin
Aprendiendo a aprender, novak gowinpereyraurbanista
 

Similar a Fundamentos de procesamiento_de_imagenes (20)

brazo robótico
brazo robóticobrazo robótico
brazo robótico
 
Algoritmo de Reconocimiento de Objetos en Escenas Complejas para Aplicaciones...
Algoritmo de Reconocimiento de Objetos en Escenas Complejas para Aplicaciones...Algoritmo de Reconocimiento de Objetos en Escenas Complejas para Aplicaciones...
Algoritmo de Reconocimiento de Objetos en Escenas Complejas para Aplicaciones...
 
Tesis Licenciatura
Tesis LicenciaturaTesis Licenciatura
Tesis Licenciatura
 
Sistema de posicionamiento de objetos mediante visión estéreo embarcable en v...
Sistema de posicionamiento de objetos mediante visión estéreo embarcable en v...Sistema de posicionamiento de objetos mediante visión estéreo embarcable en v...
Sistema de posicionamiento de objetos mediante visión estéreo embarcable en v...
 
0281 williams
0281 williams0281 williams
0281 williams
 
Analisis de kani, cross, y viga conjugada
Analisis de kani, cross, y viga conjugadaAnalisis de kani, cross, y viga conjugada
Analisis de kani, cross, y viga conjugada
 
ANALISIS DE ESTRUCTURAS-fuerza virtual
ANALISIS DE ESTRUCTURAS-fuerza virtualANALISIS DE ESTRUCTURAS-fuerza virtual
ANALISIS DE ESTRUCTURAS-fuerza virtual
 
Bases optometricas para_una_lectura_eficaz
Bases optometricas para_una_lectura_eficazBases optometricas para_una_lectura_eficaz
Bases optometricas para_una_lectura_eficaz
 
investigacion.
investigacion.investigacion.
investigacion.
 
Tesis gunther usb
Tesis gunther usbTesis gunther usb
Tesis gunther usb
 
12. Técnicas de comunicación para profesionales de enfermería autor Carlos J....
12. Técnicas de comunicación para profesionales de enfermería autor Carlos J....12. Técnicas de comunicación para profesionales de enfermería autor Carlos J....
12. Técnicas de comunicación para profesionales de enfermería autor Carlos J....
 
Maestria
MaestriaMaestria
Maestria
 
Estadistica en Fenomenos Naturales y procesos
Estadistica en Fenomenos Naturales y procesos Estadistica en Fenomenos Naturales y procesos
Estadistica en Fenomenos Naturales y procesos
 
Demo matemáticas básicas y esenciales i
Demo matemáticas básicas y esenciales iDemo matemáticas básicas y esenciales i
Demo matemáticas básicas y esenciales i
 
3. benavente gonzales, karen
3. benavente gonzales, karen3. benavente gonzales, karen
3. benavente gonzales, karen
 
7 8 yahir de jesus mariaca beltran - sergio reyes galindo
7 8 yahir de jesus mariaca beltran - sergio reyes galindo7 8 yahir de jesus mariaca beltran - sergio reyes galindo
7 8 yahir de jesus mariaca beltran - sergio reyes galindo
 
Apuntes de exámenes pasados para que túu
Apuntes de exámenes pasados para que túuApuntes de exámenes pasados para que túu
Apuntes de exámenes pasados para que túu
 
Tic en educación
Tic en educaciónTic en educación
Tic en educación
 
TFM_MJVillanueva
TFM_MJVillanuevaTFM_MJVillanueva
TFM_MJVillanueva
 
Aprendiendo a aprender, novak gowin
Aprendiendo a aprender, novak gowinAprendiendo a aprender, novak gowin
Aprendiendo a aprender, novak gowin
 

Último

2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologicaJUDITHYEMELINHUARIPA
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDEdith Puclla
 
semana-08-clase-transformadores-y-norma-eep.ppt
semana-08-clase-transformadores-y-norma-eep.pptsemana-08-clase-transformadores-y-norma-eep.ppt
semana-08-clase-transformadores-y-norma-eep.pptKelinnRiveraa
 
TAIICHI OHNO, historia, obras, reconocimientos
TAIICHI OHNO, historia, obras, reconocimientosTAIICHI OHNO, historia, obras, reconocimientos
TAIICHI OHNO, historia, obras, reconocimientoscuentaparainvestigac
 
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTO
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTOPRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTO
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTOwillanpedrazaperez
 
sistema de CLORACIÓN DE AGUA POTABLE gst
sistema de CLORACIÓN DE AGUA POTABLE gstsistema de CLORACIÓN DE AGUA POTABLE gst
sistema de CLORACIÓN DE AGUA POTABLE gstDavidRojas870673
 
27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.pptjacnuevarisaralda22
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATevercoyla
 
CI164 Materiales de Construcción 202401 - Sesión 03 Propiedades No Mecánicas.pdf
CI164 Materiales de Construcción 202401 - Sesión 03 Propiedades No Mecánicas.pdfCI164 Materiales de Construcción 202401 - Sesión 03 Propiedades No Mecánicas.pdf
CI164 Materiales de Construcción 202401 - Sesión 03 Propiedades No Mecánicas.pdfsarm0803
 
Mecatronica Automotriz .pdf
Mecatronica Automotriz              .pdfMecatronica Automotriz              .pdf
Mecatronica Automotriz .pdfleonardocahua1
 
Sistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptxSistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptx170766
 
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdfsmendozap1
 
2e38892c-fc5d-490e-b751-ce772cf4756f.pdf
2e38892c-fc5d-490e-b751-ce772cf4756f.pdf2e38892c-fc5d-490e-b751-ce772cf4756f.pdf
2e38892c-fc5d-490e-b751-ce772cf4756f.pdfLuisFernandoTQ
 
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)Ricardo705519
 
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfCONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfwduranteg
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZgustavoiashalom
 
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTAPORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTElisaLen4
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEduardoBriones22
 
Tipos de Valvulas para uso industrial y comercial
Tipos de Valvulas para uso industrial y comercialTipos de Valvulas para uso industrial y comercial
Tipos de Valvulas para uso industrial y comercialmacsal12345
 
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...WeslinDarguinHernand
 

Último (20)

2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCD
 
semana-08-clase-transformadores-y-norma-eep.ppt
semana-08-clase-transformadores-y-norma-eep.pptsemana-08-clase-transformadores-y-norma-eep.ppt
semana-08-clase-transformadores-y-norma-eep.ppt
 
TAIICHI OHNO, historia, obras, reconocimientos
TAIICHI OHNO, historia, obras, reconocimientosTAIICHI OHNO, historia, obras, reconocimientos
TAIICHI OHNO, historia, obras, reconocimientos
 
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTO
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTOPRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTO
PRESENTACION DE LAS PLAGAS Y ENFERMEDADES DEL PALTO
 
sistema de CLORACIÓN DE AGUA POTABLE gst
sistema de CLORACIÓN DE AGUA POTABLE gstsistema de CLORACIÓN DE AGUA POTABLE gst
sistema de CLORACIÓN DE AGUA POTABLE gst
 
27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
 
CI164 Materiales de Construcción 202401 - Sesión 03 Propiedades No Mecánicas.pdf
CI164 Materiales de Construcción 202401 - Sesión 03 Propiedades No Mecánicas.pdfCI164 Materiales de Construcción 202401 - Sesión 03 Propiedades No Mecánicas.pdf
CI164 Materiales de Construcción 202401 - Sesión 03 Propiedades No Mecánicas.pdf
 
Mecatronica Automotriz .pdf
Mecatronica Automotriz              .pdfMecatronica Automotriz              .pdf
Mecatronica Automotriz .pdf
 
Sistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptxSistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptx
 
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
 
2e38892c-fc5d-490e-b751-ce772cf4756f.pdf
2e38892c-fc5d-490e-b751-ce772cf4756f.pdf2e38892c-fc5d-490e-b751-ce772cf4756f.pdf
2e38892c-fc5d-490e-b751-ce772cf4756f.pdf
 
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
 
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfCONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
 
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTAPORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
 
Tipos de Valvulas para uso industrial y comercial
Tipos de Valvulas para uso industrial y comercialTipos de Valvulas para uso industrial y comercial
Tipos de Valvulas para uso industrial y comercial
 
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
 

Fundamentos de procesamiento_de_imagenes

  • 1. Fundamentos de Procesamiento de Imágenes 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
  • 2. M. en C. José Jaime Esqueda Elizondo 1 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. Agradezco de sobremanera la ayuda de mis alumnos: Pedro Fernández Robledo, Mario A. Velarde C., Nelson Hernández Cons, Gisell Haydee Arias, Eduardo Hernández Acosta, Pilar Ivette Sánchez Benítez, Samuel García Alvarado, Julio César Trizón. Asimismo a José Luis Vargas Cruz y a Jorge Espinosa Caballero, que colaboraron con el Apéndice A.
  • 3. M. en C. José Jaime Esqueda Elizondo 2 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
  • 4. M. en C. José Jaime Esqueda Elizondo 3 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
  • 5. M. en C. José Jaime Esqueda Elizondo 4 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
  • 6. M. en C. José Jaime Esqueda Elizondo 5 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. Píxel.- Elemento básico de una imagen (picture element). Imagen.- Arreglo bidimensional de píxeles con diferente intensidad luminosa (escala de gris). 0 1 1 2 7 6 6 5 6 0 4 0 5 5 1 2 x y Figura 1. Imagen de 16 píxeles Si la intensidad luminosa de cada píxel se representa por n bits, entonces existirán 2n escalas de gris diferentes. Matemáticamente, una imagen se representa por ) , ( y x f r = , donde r es la intensidad luminosa del píxel cuyas coordenadas son (x,y). Matemáticamente, un sistema para procesar imágenes se representa como [ ] ) , ( ) , ( y x f T y x g = . 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: Brillo.- Indica si un área está más o menos iluminada. Tono.- Indica si un área parece similar al rojo, amarillo, verde o azul o a una proporción de ellos. Luminosidad.- Brillo de una zona respecto a otra zona blanca en la imagen. Croma.- Indica la coloración de un área respecto al brillo de un blanco de referencia. 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. Espacio RGB.- se basa en la combinación de tres señales de luminancia cromática distinta: rojo, verde, azul (Red, Green, Blue). La forma más sencilla de obtener un color específico es determinar la cantidad de color rojo, verde y azul que se requiere combinar
  • 7. M. en C. José Jaime Esqueda Elizondo 6 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. Negro Gris Blanco Cian Verde Amarillo Rojo Magenta Azul Figura 2. Espacio de colores RGB. 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. Tabla I. Colores RGB Color R G B Blanco 1 1 1 Rojo 1 0 0 Amarillo 1 1 0 Verde 0 1 0 Turquesa 0 1 1 Gris 0.5 0.5 0.5 Rojo Oscuro 0.5 0 0 Azul 0 0 1 Aguamarina 0.5 1 0.83 Negro 0 0 0
  • 8. M. en C. José Jaime Esqueda Elizondo 7 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 Histograma de una imagen. El histograma de una imagen es una representación del número de píxeles de cierto nivel de gris en función de los niveles de gris. I.2 Relaciones entre píxeles Un píxel p con coordenadas (x,y) tiene cuatro vecinos horizontales y verticales, cuyas coordenadas son: (x+1,y), (x-1,y), (x,y-1), (x,y+1). A este conjunto de píxeles se llama vecindad 4 o 4 vecinos de p y se denota por N4(p), ver la figura 3. Nótese que para cada uno de estos píxeles hay una distancia de 1 de p y que en los bordes de la imagen algunos de estos píxeles quedarán fuera de la imagen. (x-1,y) (x,y) (x,y+1) (x+1,y) (x,y-1) Figura 3. Vecindad N4(p). Existen también 4 vecinos diagonales de p con coordenadas: (x+1,y+1), (x+1,y-1), (x- 1,y-1), (x-1,y-1) y se les denota por ND(p), ver la figura 4. N4(p) y ND(p) juntos forman la vecindad 8 denotada por N8(p). (x-1,y-1) (x,y) (x+1,y+1) (x-1,y+1) (x+1,y-1) Figura 4. Vecindad ND(p).
  • 9. M. en C. José Jaime Esqueda Elizondo 8 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: ( ) ( ) ( ) q p si q p D q p D = = ≥ , 0 , , 0 , ( ) ( ) p q D q p D , , = ( ) ( ) ( ) z q D q p D z p D , , , + ≤ Las funciones de distancia comúnmente usadas son: distancia euclidiana, distancia Manhattan o de cuadra y distancia tablero de ajedrez. Distancia euclidiana entre p y q: ( ) ( ) ( ) t y s x q p DE − + − = 2 , . En la figura 5 se muestra la distancia euclidiana para una imagen de 5 por 5. 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. Distancia Manhattan: se toman solamente en cuenta los vecinos de orden 4, es decir: t y s x D − + − = En la figura 6 se muestra la distancia Manhattan de 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.
  • 10. M. en C. José Jaime Esqueda Elizondo 9 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: ( ) ( ) t y s x Max q p D − − = , , 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. I.3 Ruido en imágenes Todas las imágenes tienen cierta cantidad de ruido, la cual se puede deber a la cámara o al medio de transmisión de la señal. Generalmente el ruido se manifiesta como píxeles aislados que toman un nivel de gris diferente al de sus vecinos. Los algoritmos de filtrado que se verán más adelante permiten eliminar o disminuir este ruido. El ruido puede clasificarse en los siguientes tipos: Gaussiano: produce pequeñas variaciones en la imagen; generalmente se debe a diferentes ganancias en la cámara, ruido en los digitalizadores, perturbaciones en la transmisión, etc. Se considera que el valor final del píxel sería el ideal más una cantidad correspondiente al error que puede describirse como una variable aleatoria gaussiana. 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. Multiplicativo: La imagen obtenida es el resultado de la multiplicación de dos señales. En la figura 8 se muestran los diferentes ruidos afectando a una imagen. I.4 Procesamiento espacial El procesamiento espacial esta formado por aquellas técnicas que operan directamente sobre los valores de los píxeles de la imagen. Las transformaciones son de la siguiente forma: ( ) ( ) ( ) y x I F y x S , , = donde I(x,y) es la imagen original, S(x,y) la imagen resultante y F la transformación.
  • 11. M. en C. José Jaime Esqueda Elizondo 10 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 ) , ( ) , ( ) , ( y x B y x A y x C + = mediante el comando imadd en Matlab. Figura 8. Diferentes tipos de ruido afectando a una imagen. + = 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 a y x A y x B + = ) , ( ) , ( .
  • 12. M. en C. José Jaime Esqueda Elizondo 11 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). La resta de imágenes consiste en restar de una imagen el valor correspondiente de otra imagen. Esta operación es un paso intermedio en algunos procesamientos más complejos, como la detección de movimiento, etc. La resta, al igual que la suma de imágenes requiere que ambas imágenes sean de igual tamaño. En la figura 11 se muestra el efecto de restar una imagen de otra, de la forma ) , ( ) , ( ) , ( y x B y x A y x C − = mediante el comando imsubtract en Matlab. - = Figura 11. Resta de dos imágenes, imagen original (izquierda), imagen a restar (centro) y resultado (derecha). En la figura 12 se muestra la resta de un escalar (50) a cada píxel de la imagen original, la cual se lleva a cabo de la forma a y x A y x B − = ) , ( ) , ( . Figura 12. Resta de un escalar (50) a cada píxel de la imagen original (izquierda)
  • 13. M. en C. José Jaime Esqueda Elizondo 12 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 ) , ( ) , ( ) , ( y x B y x A y x C ⋅ = , en Matlab esto se realiza con el comando immultiply. En la figura 13 se muestra la multiplicación de dos imágenes. Figura 13 Multiplicación de una imagen por si misma, imagen original (izquierda), imagen resultante (derecha). 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 ) , ( ) , ( y x A a y x B ⋅ = . 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). La división de imágenes consiste en una división de elemento a elemento, como las demás operaciones vistas anteriormente. La división entre imágenes puede utilizarse para detectar cambios en dos imágenes, sin embargo, en lugar de dar el cambio absoluto de cada píxel, la división da el cambio fraccional o razón de cambio entre los valores de dos píxeles correspondientes. A la división de imágenes también se le conoce como
  • 14. M. en C. José Jaime Esqueda Elizondo 13 racionalización. En la figura 15 se presenta la división entre imágenes, la cual se realiza de la forma ) , ( ) , ( ) , ( y x B y x A y x C ÷ = . 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. I.4.2 Operaciones lógicas Las principales operaciones lógicas utilizadas en el procesamiento de imágenes son: AND, OR, NOT, las cuales se aplican solo a imágenes binarizadas. En la figura 16 se muestran las operaciones lógicas aplicadas a imágenes binarias. Figura 16. Operaciones lógicas aplicadas a imágenes binarias. I.4.3 Transformaciones geométricas Las transformaciones geométricas modifican las relaciones espaciales entre píxeles; a continuación se presentan algunas. 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
  • 15. M. en C. José Jaime Esqueda Elizondo 14 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: ( ) ( ) ( ) ∑∑ − − = j y i x h j i g y x f , , , donde: g(x,y) es la imagen original, f(x,y) representa la imagen procesada y h(x,y) es la interpolación (máscara). En el toolbox de Image Processing se encuentran implementados los siguientes métodos de interpolación: interpolación por el vecino más próximo, interpolación bilineal e interpolación bicúbica. Dichos métodos se explicarán más delante de forma breve. Los tres métodos de interpolación funcionan de forma similar, en cada caso para determinar el valor para un píxel interpolado, se encuentra el punto en la imagen original que corresponde a la imagen interpolada. Se asigna el valor del píxel interpolado calculando el promedio ponderado de el conjunto de píxeles hallados en la vecindad de dicho punto. Los tres métodos difieren en el conjunto de píxeles que consideran: • Vecino más próximo: al píxel interpolado se le asigna el valor del píxel que corresponde • Interpolación bilineal: el valor del píxel interpolado es el promedio ponderado de los píxeles en la vecindad 2x2 más cercana. • Interpolación bicúbica: el valor del píxel interpolado es el promedio ponderado de los píxeles presentes en la vecindad 4x4 más cercana. 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. I.4.3.2 Amplificación/Reducción de imágenes Para el cambio de tamaño de una imagen (amplificación/reducción) se utiliza el comando imresize. Este comando permite especificar: el tamaño de la imagen de salida (procesada), el método de interpolación utilizado y el filtro a usar para evitar el efecto alias. El efecto alias se presenta al reducir el tamaño de una imagen. Esto es debido a que se presenta una pérdida de información cuando se reduce el tamaño de una imagen. En las figuras 17 y 18 se presenta un ejemplo de amplificación de imágenes usando los métodos de interpolación descritos anteriormente. La interpolación mediante Fourier se expone más adelante.
  • 16. M. en C. José Jaime Esqueda Elizondo 15 Figura 17. Imagen original Figura 18. Amplificación de la figura 17 usando diferentes métodos de interpolación. I.4.3.3 Traslación Si se requiere trasladar el origen de una imagen se aplican las ecuaciones: o i f o i f y y y x x x + = + = Que en coordenadas homogéneas es:                     =           1 1 0 0 1 0 0 1 1 i i o o f f y x y x y x
  • 17. M. en C. José Jaime Esqueda Elizondo 16 Rotación respecto al origen                     − =           1 1 0 0 0 cos 0 cos 1 i i f f y x sen sen y x θ θ θ θ Rotación respecto a un punto cualquiera                     − −           −           =           1 1 0 0 1 0 0 1 1 0 0 0 cos 0 cos 1 0 0 1 0 0 1 1 i i o o o o f f y x y x sen sen y x y x θ θ θ θ En la figura 19 se muestra la rotación de la figura 17 usando diferentes métodos de interpolación. Figura 19. Rotación de la imagen de la figura 17 usando diferentes métodos de interpolación. I.4.3.4 Convolución bidimensional La convolución bidimensional discreta es la base de algunos procesamientos comunes, como el filtrado de imágenes. En la convolución, el valor de un píxel de salida se calcula mediante la suma ponderada de los píxeles vecinos. Dentro del campo del procesamiento de imágenes, la convolución se realiza entre la imagen y una matriz (los coeficientes del filtro) llamada máscara para filtrar una imagen. En Matlab la convolución bidimensional (aplicada a imágenes) se encuentra en el comando conv2. La convolución de f(x,y) y h(x,y) está dada por: ( ) ( ) ( ) ( ) ( ) ∑ ∑ ∞ −∞ = ∞ −∞ = − − = ∗ = i j j y i x h j i f y x f y x h y x g , , , , , Lo más común es usar convoluciones de 3 x 3 elementos; entonces la ecuación anterior se convierte en: ( ) ( ) ( ) ( ) ( ) ∑∑ = = − − = ∗ = 2 0 2 0 , , , , , i j j y i x h j i f y x f y x h y x g que, por ejemplo, para obtener g(2,2) se tiene: ( ) ( ) ( ) ∑∑ = = = − − = 2 0 2 0 2 , 2 , 2 , 2 i j j i h j i f g ( ) ( ) ( ) ( ) ( ) ( ) ! + + + 0 , 2 2 , 0 1 , 2 1 , 0 2 , 2 0 , 0 h f h f h f
  • 18. M. en C. José Jaime Esqueda Elizondo 17 ( ) ( ) ( ) ( ) ( ) ( ) ! ! + + + + 0 , 1 2 , 1 1 , 1 1 , 1 2 , 1 0 , 1 h f h f h f ( ) ( ) ( ) ( ) ( ) ( ) 0 , 0 2 , 2 1 , 0 1 , 2 2 , 0 0 , 2 h f h f h f + + + ! Considérese que la imagen es la mostrada en la figura 20: A = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 Figura 20. Imagen y la máscara se muestra en la figura 21: 8 1 6 3 5 7 4 9 2 h = Figura 21. Máscara de convolución. En la figura 22 se muestra como calcular el píxel de salida (procesada) mediante los siguientes pasos: 1. Rotar la máscara de convolución 180 grados a partir del elemento del centro. La máscara rotada queda entonces como: 8 1 6 3 5 7 4 9 2 Figura 22. Máscara rotada para la convolución. 2. Sobreponer el elemento central de la máscara de tal forma que quede sobre el elemento de interés, en este caso el elemento (2,4) de A, tal como se muestra en la figura 23.
  • 19. M. en C. José Jaime Esqueda Elizondo 18 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 8 1 6 3 5 7 4 9 2 Figura 23. Convolución para obtener el valor de A(2,4) 3. Multiplicar cada peso (valor) de la máscara rotada por el píxel de A que se encuentra “bajo” la máscara. 4. Sumar los productos individuales obtenidos en el paso 3. Por ejemplo, para el píxel (2,4), el píxel de salida (procesado) es: 1 · 2 + 8 · 9 + 15 · 4 + 7 · 7 + 14 · 5 + 16 · 3 + 13 · 6 + 20 · 1 +22 · 8 = 575 Cuando se trabaja en los extremos de la imagen, se acostumbra insertar ceros (zero padding) en los extremos, tal como se muestra en la figura 24. 8 1 6 3 5 7 4 9 2 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 0 0 0 0 0 Figura 24. Inserción de ceros (zero padding) en los extremos. 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: ( ) ( ) ( ) ( ) ( ) ∑∑ ∞ −∞ = ∞ ∞ = ∗ + + = = i j j y i x h j i f y x f y x h y x g , , , , , "
  • 20. M. en C. José Jaime Esqueda Elizondo 19 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 3 5 7 4 9 2 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 Figura 25. Correlación de A con h. El algoritmo de la correlación opera de la siguiente forma: 1. Sobreponer el elemento central de la máscara de tal forma que quede sobre el elemento de interés, en este caso el elemento (2,4) de A, tal como se muestra en la figura 22. 2. Multiplicar cada peso (valor) de la máscara rotada por el píxel de A que se encuentra “bajo” la máscara. 3. Sumar los productos individuales obtenidos en el paso 2. Por ejemplo, para el píxel (2,4), el píxel de salida (procesado) es: 1 · 8 + 8 · 1 + 15 · 6 + 7 · 3 + 14 · 5 + 16 · 7 + 13 · 4 + 20 · 9 +22 · 2 = 585 I.5 Procesamiento en el dominio de la frecuencia En el campo de las imágenes, el dominio de la frecuencia es aquel en el que una imagen se representa como la suma de señales periódicas con diferentes frecuencias. Por ejemplo, la transformada de Fourier de una imagen es la representación de dicha imagen como una suma de exponenciales complejos de diferentes magnitudes, frecuencias y fases. Este tipo de transformaciones frecuenciales se llevan a cabo para una amplia gama de procesamientos, entre los cuales se encuentran: la convolución, el mejoramiento de imágenes, la detección de características, compresión, etc. I.5.1 Series de Fourier Dada una función periódica en el dominio del tiempo f(t), es lógico pensar que esta función se puede expresar mediante la suma de otras funciones periódicas. Lo anterior se expresa mediante las series de Fourier, las cuales dan las fórmulas matemáticas que
  • 21. M. en C. José Jaime Esqueda Elizondo 20 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: ∑ ∞ = + + = 1 0 0 0 ) ( ) cos( ) ( k k k t k sen b t k a a t f ω ω Donde: ∫ = 0 0 0 0 ) ( 1 T ft t f T a , ∫ = 0 0 0 0 ) cos( ) ( 2 T k dt t k t f T a ω , ∫ = 0 0 0 0 ) ( ) ( 2 T k dt t k sen t f T b ω , 0 0 2 T π ω = La serie de Fourier de la señal cuadrada se puede representar como: ∑ ∞ = + + = 0 1 2 ) ) 1 2 (( 4 ) ( k k t k sen t f π En la figura 26 se presenta la señal cuadrada 0 1 2 3 4 5 6 -1 -0.5 0 0.5 1 (a) 0 1 2 3 4 5 6 -1 -0.5 0 0.5 1 (b) 0 1 2 3 4 5 6 -1 -0.5 0 0.5 1 (c) 0 1 2 3 4 5 6 -1 -0.5 0 0.5 1 (d) 0 1 2 3 4 5 6 -1 -0.5 0 0.5 1 (e) 0 1 2 3 4 5 6 -1 -0.5 0 0.5 1 (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. I.5.2 Transformada de Fourier La transformada de Fourier es una extensión de las series de Fourier a señales no periódicas. El par transformado analítico de Fourier está dado por: [ ] ∫ ∞ ∞ − − = = dt e t x f X t x F ft j π 2 ) ( ) ( ) ( (ec. de análisis) [ ] ∫ ∫ ∞ ∞ − ∞ ∞ − − = = = ω ω π ω π d e X df e f X f X F t x t j ft j ) ( 2 1 ) ( ) ( ) ( 2 1 (ec. de síntesis) donde ) ( 2 ) ( f X X π ω = .
  • 22. M. en C. José Jaime Esqueda Elizondo 21 Para el caso unidimensional discreto, el par transformado de Fourier está dado por: [ ] ∑ − = − = = 1 0 2 ) ( ) ( ) ( N n kn N j e n x k X n x F π ; k = 0, 1, ..., N-1 (ec. de análisis) [ ] ∑ − = − = = 1 0 2 1 ) ( 1 ) ( ) ( N k kn N j e k X N n x k X F π ; n = 0, 1, ..., N-1 (ec. de síntesis) Para el caso bidimensional discreto, se tiene que: [ ] ∑∑ − = − = − − = = 1 0 1 0 ln 2 2 ) , ( ) , ( ) , ( M m N n N j km M j e e n m x l k X l k x F π π ; k = 0, 1, ..., M-1; l = 0, 1, …, N-1 [ ] ∑∑ − = − = − = = 1 0 1 0 ln 2 2 1 ) , ( 1 ) , ( ) , ( M k N l N j km M j e e l k X MN n m x l k X F π π ; m = 0, 1, ..., M-1; n = 0,1,…, N-1 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). La fase obtenida mediante la transformada de Fourier contiene información esencial sobre la estructura de la imagen. La amplitud por si sola implica solo que existe una estructura periódica dentro de la imagen, pero no especifica donde se encuentra. Es decir, si no se conoce la fase de la transformada de Fourier, se puede determinar que objetos hay en la imagen, pero no su posición. Por lo tanto, resulta obvio que si se obtiene un espectro de potencia, se tendría muy poca información sobre la imagen debido a que la fase se ha perdido. Si se asocia un nivel de gris con la amplitud de un proceso físico, por ejemplo una oscilación armónica, entonces el espectro de potencia proporciona la distribución de la energía en el dominio de la frecuencia. I.5.2.1 Aplicaciones de la transformada de Fourier En esta sección se presentan algunos procesamientos de imágenes relacionados con la transformada de Fourier. Respuesta a la frecuencia de filtros lineales La transformada de Fourier de la respuesta al impulso de un filtro lineal proporciona la respuesta a la frecuencia del filtro. Esto puede obtenerse mediante el comando freqz2, el cual calcula y despliega la respuesta a la frecuencia de un filtro. 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.
  • 23. M. en C. José Jaime Esqueda Elizondo 22 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. Localización de características en imágenes La transformada de Fourier se utiliza también para realizar correlaciones. La correlación se utiliza para localizar algunas características en una imagen. Por ejemplo si se desea encontrar la letra “a” en una imagen que contenga texto, se establece un patrón (sección de la imagen con la característica de búsqueda deseada) con la letra “a” . Posteriormente se obtiene la correlación de la imagen patrón y la imagen original rotando 180º la imagen patrón y se utiliza la técnica de convolución basada en la transformada de Fourier, descrita anteriormente (Nota: la convolución es equivalente a la correlación si se rota el kernel de convolución 180º. Para buscar coincidencias en la imagen se utiliza la transformada de Fourier y la transformada inversa de Fourier. 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. I II III IV N N N 2 N 2 Figura 27. División en cuatro partes iguales de la imagen transformada (B) 3. Insertar N ceros a cada renglón de la matriz B, ver la figura 28 (b); enseguida insertar N ceros a cada columna, tal como se muestra en la figura 28(c) para formar una matriz aumentada, B’.
  • 24. M. en C. José Jaime Esqueda Elizondo 23 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. Imagen (Matriz B) Inserción de N ceros a cada renglón Ceros I II III IV Ceros IV III II I Inserción de N ceros a cada columna (a) (b) (c) III I II IV Figura 28. Inserción de ceros para obtener la matriz B aumentada (B’). I.5.3 Transformada discreta coseno La transformada discreta coseno (TDC) representa una imagen como la suma de senoidales de diferentes amplitudes y frecuencias. La transformada discreta coseno tiene una propiedad tal que para una imagen típica, la mayoría de la información visualmente significativa de una imagen se concentra en solo unos cuantos coeficientes de la DCT. Por esta razón, la TDC es comúnmente usada en aplicaciones de compresión de imágenes. Por ejemplo, la TDC es el corazón del algoritmo estándar de compresión de imágenes conocido como JPEG (Joint Photographic Experts Group). La transformada discreta coseno de una matriz A de M por N, tal como se define a continuación: ( ) ( ) 1 0 1 0 , 2 1 2 cos 2 1 2 cos 1 0 1 0 − ≤ ≤ − ≤ ≤ + + = ∑∑ − = − = N q M p N q n M p m A B M m N n mn q p pq π π α α        − ≤ ≤ = =        − ≤ ≤ = = 1 1 2 0 q , 1 1 1 2 0 , 1 N q N N M p M p M p p α α Los valores Bpq son los coeficientes de la transformada discreta coseno de A. La TDC es invertible, y su inversa está dada por: ( ) ( ) 1 0 1 0 , 2 1 2 cos 2 1 2 cos 1 0 1 0 − ≤ ≤ − ≤ ≤ + + = ∑∑ − = − = N n M m N q n M p m B A M m N n pq q p mn π π α α
  • 25. M. en C. José Jaime Esqueda Elizondo 24        − ≤ ≤ = =        − ≤ ≤ = = 1 1 2 0 q , 1 1 1 2 0 , 1 N q N N M p M p M p p α α 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: ( ) ( ) 1 0 1 0 , 2 1 2 cos 2 1 2 cos − ≤ ≤ − ≤ ≤ + + N n M m N q n M p m q p π π α α 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. I.6 Procesamiento de imágenes básico En esta sección se presentan y describen algunos procesamientos más comunes. I.6.1 Binarización de una imagen La binarización de una imagen consiste en comparar los niveles de gris presentes en la imagen con un valor (umbral) predeterminado. Si el nivel de gris de la imagen es menor que el umbral predeterminado, se le asigna al píxel de la imagen binarizada el valor 0 (negro), y si es mayor, se le asigna un 1 (blanco). De esta forma se obtiene una imagen en blanco y negro. Generalmente se utiliza un umbral de 128 si se trabaja con 255 niveles de gris, pero en algunas aplicaciones se requiere de otro umbral. En la figura 30 se muestra un ejemplo de imagen binarizada.
  • 26. M. en C. José Jaime Esqueda Elizondo 25 Figura 29. Compresión de imágenes usando la TDC. Fig. 30. Binarización de una imagen I.6.2 Manipulación del contraste El histograma que se muestra en la figura 31 toma valores limitados, por lo que el contraste en la imagen es muy bajo y apenas se aprecian los detalles. Se desea encontrar una función que produzca una nueva imagen que si cubra todo el conjunto de valores posibles de la imagen (niveles de gris). Si a y b son los valores mínimos y máximos, respectivamente, puede definirse la función T(c) que asigna los nuevos valores de gris a partir de los antiguos:
  • 27. M. en C. José Jaime Esqueda Elizondo 26 a b a c A c T y − − = = ) ( 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 b c 0 A Figura 31. Expansión del histograma de la imagen. En la figura 32 se muestra el resultado de aplicar a la imagen la modificación del contraste, procesamiento también conocido como ecualización de la imagen. El contraste (separación entre los niveles de gris) ha mejorado y ahora se aprecian mejor los detalles de la imagen. En el nuevo histograma puede observarse como la separación entre los diferentes niveles de gris es mayor. En este caso la separación es igual para todos los niveles de gris debido a que la transformación es lineal. Nótese que aunque la imagen se ve mejor, la información es la misma en ambas imágenes, lo único que se ha hecho es asignar nuevos niveles de gris, pero los píxeles que tenían un nivel de gris determinado en la imagen original diferente a los niveles de gris inferior y superior, son los mismos en la imagen nueva. Para un caso más general la función buscada tendrá la forma (ver la figura 33)      ≤ ≤ + − ≤ ≤ + − ≤ ≤ = = L x b y b x b x a y a x a x x x T y b a ) ( ) ( 0 ) ( γ β α 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
  • 28. M. en C. José Jaime Esqueda Elizondo 27 Figura 32. Modificación de contraste a b L Imagen original Imagen original a v b v Figura 33. Caso general I.6.3 Modificación del contraste La modificación del contraste consiste en aplicar una función a cada uno de los píxeles de la imagen, de la forma: a m p = donde:
  • 29. M. en C. José Jaime Esqueda Elizondo 28 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 Entre las transformaciones más usuales se encuentran: Función inversa m p − = 255 Función cuadrada 255 2 m p = Función cúbica 2 3 255 m p = Función raíz cuadrada m p 255 = Función raíz cúbica 3 2 255 m p = Función logarítmica ) 255 1 ln( ) 1 ln( 255 + + = m p 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. I.6.4 Modificación del histograma Los métodos anteriores modifican cada nivel de gris y dependen únicamente de su valor y por lo tanto, son locales. Si se desea adquirir una información global de la imagen, la forma más fácil de hacerlo es analizar y modificar el histograma. Esto se hace con la idea de que éste se ajuste a una forma predeterminada; la forma más usual se conoce como ecualización del histograma, en la que se pretende que éste sea horizontal, es decir, que para todos los valores de gris se tenga el mismo número de píxeles. La ecualización del histograma se realiza trabajando sobre el histograma acumulado, el cual está dado por: ∑ = = i k k h i H 0 ) ( ) ( Si el histograma fuera totalmente plano, el histograma para cada nivel de gris sería: 256 ) 1 ( ) ' ( NM i i G + = donde N y M son las dimensiones de la imagen y 256 corresponde al número de niveles dado por el número de bits con los que se representan (en este caso 8 bits). Como se desea que G(i’) = H(i), se tiene que; ) ( 256 ) 1 ' ( i H NM i = + 1 ) ( 256 ' − = ∴ i H NM i
  • 30. M. en C. José Jaime Esqueda Elizondo 29 Debido a que los niveles de gris son únicamente valores enteros, se realiza un cambio en los niveles de gris de acuerdo a: ( )       − = 1 256 entera Parte anterior nuevo i H NM i I.6.5 Filtrado de una imagen El filtrado es una técnica para modificar o mejorar a una imagen. Por ejemplo, un filtro puede resaltar o atenuar algunas características. El filtrado es una operación de vecindario, en la cual el valor de un píxel dado en la imagen procesada se calcula mediante algún algoritmo que toma en cuenta los valores de los píxeles de la vecindad de la imagen original. I.6.5.1 Filtros lineales espaciales El ruido en una imagen es una característica que se desea eliminar, y al ser este variaciones sobre los niveles de gris, le corresponden las frecuencias altas. Si se supone que el ruido es una señal que se suma a la señal (imagen) original, el nivel de gris de un píxel puede definirse como la suma del nivel de gris ideal y el ruido: f(x, y) = fi(x, y) + r(x, y) 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 σ . I.6.5.2 Filtro pasa bajas espacial Una forma de eliminar el ruido consiste en hacer pasar la imagen por un filtro pasa bajas que disminuya la ganancia de las componentes de alta frecuencia. El filtro más sencillo e intuitivo es aquel que tiene coeficientes unitarios en todos los elementos, tal como se muestra a continuación. 1 1 1 1 1 1 1 1 1 Si al resultado se le multiplica por un noveno, se obtiene la media de todos los píxeles, por lo que el ruido disminuye. Sin embargo, este filtro presupone que la influencia de todos los píxeles es igual. Otra consideración es que cuanto más alejado esté el píxel del central, su valor será menor y se obtiene la siguiente máscara:
  • 31. M. en C. José Jaime Esqueda Elizondo 30 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 b b b 1 b 1 2 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. I.6.5.3 Filtrado por la mediana El filtrado por la mediana permite eliminar el ruido tipo sal y pimienta, es decir, elimina puntos blancos y negros presentes en la imagen. En una secuencia de números x1, x2, ...xN, la mediana es aquel valor que cumple que (N-1)/2 elementos tienen un valor menor o igual a ella y que (N-1)/2 tiene un valor mayor o menor que la mediana. La mediana se obtiene ordenando las intensidades de los píxeles de menor a mayor, y el píxel que se encuentra en (N-1)/2 es la mediana , tal como se muestra en la figura 34. A continuación se muestra como el filtrado por la mediana puede eliminar un valor. vecindad de x = [0,0,0,0,255,0,0,0,0] vecindad de x = [0,0,0,0,0,0,0,0,255] Mediana
  • 32. M. en C. José Jaime Esqueda Elizondo 31 22 10 10 255 15 0 0 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 0 0 0 0 0 vecindad de a = [0,0,0,0,22,10,0,0,0] a b Se ordena de mayor a menor vecindad de a = [0,0,0,0,0,0,0,10,22] Mediana Figura 34. Vecindad de a y obtención de la mediana. En Matlab este filtro se encuentra implementado en el comando medfilt2. I.6.5.4 Realce de bordes El realce de bordes en una imagen tiene un efecto opuesto a la eliminación de ruido; consiste en enfatizar o resaltar aquellos píxeles que tienen un valor de gris diferente al de sus vecinos. Cabe resaltar que si la imagen contiene ruido, su efecto se multiplicará, por lo que ser recomienda primero eliminar el ruido. En la figura 35 se muestra un ejemplo de realce de contornos. Figura 35. Realce de una imagen En el realce de imágenes consiste en aumentar la ganancia de las altas frecuencia, es decir:
  • 33. M. en C. José Jaime Esqueda Elizondo 32 Imagen resultante = (Ganancia)(Imagen Original) – Bajas frecuencias De forma general, la máscara usada para realzar los bordes es: -1 -1 -1 -1 A -1 -1 -1 -1 donde: A = 9 · Ganancia –1 y todo ello multiplicado por un noveno. I.6.5.5 Detección de contornos La detección de contornos es un paso intermedio en el reconocimiento de patrones en imágenes digitales. En una imagen, los contornos corresponden a los limites de los objetos presentes en la imagen. Para hallar los contornos se buscan los lugares en la imagen en los que la intensidad del píxel cambia rápidamente, generalmente usando alguno de los siguientes criterios: • Lugares donde la primera derivada (gradiente) de la intensidad es de magnitud mayor que la de un umbral predefinido • Lugares donde la segunda derivada (laplaciano) de la intensidad tiene un cruce por cero. En el primer caso se buscarán grandes picos y en el segundo cambios de signo, tal como se muestra en la figura 36. I.6.5.5.1 Técnicas basadas en el gradiente Estas técnicas se basan en una aproximación al concepto de la derivada para espacios discretos. Esta generalización se basa en el cálculo de diferencias entre píxeles vecinos; estas diferencias, según la relación de píxeles considerados, puede dar lugar a derivadas unidimensionales o bidimensionales, así como aplicarse en una dirección determinada de la imagen o en todas direcciones. Otras aproximaciones diferenciales de gran utilidad son la de Roberts y la de Sobel. El operador gradiente G aplicado a una imagen f(x,y) esta definido como: [ ]       ∂ ∂ ∂ ∂ = = ∇ y f x f G G y x f y x ) , (
  • 34. M. en C. José Jaime Esqueda Elizondo 33 f(x) f ' (x) f '' (x) Figura 36. Detección de contornos mediante la primera y segunda derivada. El vector gradiente representa el cambio máximo de intensidad para el punto (x,y); su magnitud y dirección están dados por: 2 2 y xx G G f + = ∇         = ∠∇ x y G G f arctan siendo la dirección del gradiente perpendicular al borde. Para reducir el costo computacional, generalmente se aplica: y x G G f + = ∇ Debido a que las imágenes digitales no son señales continuas, se tiene: [ ]       ∆ ∆ ∆ ∆ = = ∇ y f x f G G y x f y x ) , ( que se puede representar mediante las máscaras: x f Gx ∆ ∆ = -1 1 ∗ f(x,y) y f Gy ∆ ∆ = -1 1 ∗ f(x,y)
  • 35. M. en C. José Jaime Esqueda Elizondo 34 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 0 1 Operador de Roberts -1 0 -1 0 -1 0 1 1 1 -1 -1 0 0 1 1 -1 0 1 Operador de Prewitt -1 0 -2 0 -1 0 1 2 1 -1 -2 0 0 1 2 -1 0 1 Operador de Sobel -1 0 0 -1 0 1 1 -1 0 0 1 -1 0 1 2 − 2 2 − 2 Operador Isotrópico Figura 37. Máscaras para los operadores: Roberts, Prewitt, Sobel e Isotrópico. I.6.5.5.2 Técnicas basadas en el laplaciano El laplaciano es la segunda derivada de una función y representa la derivada de esta respecto a todas las direcciones, y esta dado por: ( ) 2 2 2 2 2 , y f x f y x f ∂ ∂ + ∂ ∂ = ∇ Generalmente para el laplaciano se utilizan las máscaras mostradas en la figura 38. Nótese que el píxel central toma el valor negativo de la suma de todos los que lo rodean, de tal forma que la suma aritmética de todos los píxeles sea cero. -1 -1 -1 8 -1 -1 -1 -1 -1 0 -1 -1 0 0 -1 0 -1 0 Figura 38. Máscaras utilizadas para el operador laplaciano.
  • 36. M. en C. José Jaime Esqueda Elizondo 35 En la figura 39 se presentan algunos ejemplos de detección de contornos. Figura 39. Ejemplos de detección de contornos. La detección de contornos se encuentra implementada en Matlab en el comando edge.
  • 37. M. en C. José Jaime Esqueda Elizondo 36 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. Matlab almacena la mayoría de las imágenes como arreglos bidimensionales (matrices) en los cuales cada elemento de la matriz corresponde a la intensidad de un píxel de la imagen. Por ejemplo, una imagen de 200 renglones por 300 columnas se almacena en Matlab como una matriz de 200x300. Algunas imágenes, como las imágenes a color (RGB), que requieren de un arreglo tridimensional, donde en el primer plano en el espacio tridimensional representa la intensidad de rojo de los píxeles, el segundo plano representa la intensidad de verde de los píxeles y el tercer plano representa la intensidad de azul de los píxeles. 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. II.1 Clases de almacenamiento usadas en el toolbox Por omisión, Matlab almacena la mayoría de los datos en clase double (doble). Los datos en estos arreglos se almacenan como datos de punto flotante de doble precisión (64 bits). En el caso de las imágenes, esta representación no es la ideal, debido a que en una imagen se tiene un número grande de píxeles. Por ejemplo, si se tiene una imagen de 1000 x 1000 píxeles tiene un millón de píxeles y debido a que cada píxel se representa con al menos un elemento del arreglo, se requerirían aproximadamente 8 MB de memoria para almacenarla. 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. II.2 Conversiones entre tipos de imágenes Para ciertas operaciones es necesario convertir una imagen de su tipo original a otro tipo de imagen que facilite su procesamiento. Por ejemplo, si se desea filtrar una imagen a color almacenada como imagen indexada, primero se debe convertir la imagen a formato RGB. Esto es para que Matlab filtre los valores de intensidad de la imagen de forma apropiada. Si se intenta filtrar una imagen indexada, el filtro simplemente se aplica a los índices que se encuentran en la matriz indexada y los resultados no serán los deseados. En la Tabla II se presentan los tipos de imágenes y en la Tabla III se presentan los comandos usados para la conversión entre tipos de imágenes. En el Apéndice A se presenta más información sobre los tipos de imágenes.
  • 38. M. en C. José Jaime Esqueda Elizondo 37 Tabla II. Tipos de imágenes y clases numéricas Tipo de imagen Clase de almacenamiento Interpretación 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. Tabla III. Comandos de conversión de imágenes Comando Descripción dither Crea una imagen binaria a partir de una imagen de intensidad en escala de gris por difuminación. Crea una imagen indexada a partir de una imagen RGB por difuminación. gray2ind Crea una imagen indexada a partir de una imagen de intensidad en escala de gris grayslice Crea una imagen indexada a partir de una imagen en intensidad en escala gris mediante un umbral im2bw Crea una imagen binaria a partir de una imagen de intensidad, imagen indexada o RGB basado en un umbral de luminancia ind2rgb Crea una imagen RGB a partir de una imagen indexada mat2gray Crea una imagen de intensidad en escala de gris a partir de los datos almacenados en una matriz escalándolos rgb2gray Crea una imagen de intensidad en escala de gris a partir de una imagen RGB rgb2ind Crea una imagen indexada a partir de una imagen RGB II.2.1 Despliegue de imágenes indexadas Para desplegar una imagen indexada, se utiliza el comando imshow, pero se especifica tanto la matriz-imagen como el mapa de color de la forma: imshow(X,mapa), donde imshow despliega para cada píxel de X el color almacenado en la correspondiente columna del mapa de color.
  • 39. M. en C. José Jaime Esqueda Elizondo 38 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. II.2.3 Despliegue de imágenes binarias El despliegue de imágenes binarias se sigue la siguiente sintaxis imshow(I). En Matlab esta clase de imágenes es de tipo logical, debido a que este tipo de imágenes solo contiene 1s (blanco) y 0s (negro). Para invertir los colores al desplegar la imagen, se utiliza la operación NOT en Matlab, es decir, se utiliza imshow(-BN). Para desplegar la imagen en otros dos colores se puede hacer uso de un mapa formado por los dos colores deseados. Por ejemplo, si se desea desplegar una imagen binaria solo en rojo y azul, imshow(I,[1 0 0; 0 0 1]). II.2.4 Despliegue de imágenes RGB Las imágenes RGB, también conocidas como imágenes de color verdadero (truecolor), representan directamente valores de color, mejor que usando un mapa de color. Para desplegar este tipo de imágenes, la sintaxis básica es imshow(RGB), donde RGB es un arreglo de m x n x 3. Para cada píxel (renglón, columna) de RGB, el comando imshow despliega el color representado por la tripleta (renglón, columna,1:3). II.2. 5 Tipos de imágenes en Matlab El toolbox de Procesamiento de Imágenes maneja cuatro tipos de imágenes básicos: imágenes indexadas, imágenes con intensidad, imágenes binarias e imágenes RGB, los cuales se discutirán a continuación. II.2.5.1 Imágenes indexadas Una imagen indexada consiste de una matriz de datos X y un mapa de color, mapa. Los datos de la matriz pueden ser de clase uint8, uint16 o double. El mapa de color es una matriz (arreglo) de m x 3 de clase double que contiene valores en punto flotante en el rango de 0 a 1. Cada una de las columnas especifica las componentes de rojo, verde y azul de un solo color. Una imagen indexada utiliza el mapeo directo de los valores de un píxel a los valores del mapa de color. El color para cada píxel de la imagen se determina usando el correspondiente valor de X como un índice dentro de mapa. El valor de 1 apunta a la primer columna del mapa, el valor 2 apunta a la segunda columna y así sucesivamente. Generalmente se almacena un mapa de color con una imagen indexada y automáticamente se carga al usar el comando imread. Sin embargo, el usuario no está limitado a usar el mapa de color por omisión. En la figura 40 se muestra la estructura de una imagen indexada. Los píxeles en la imagen son enteros, los cuales apuntan (índices) a los valores de color almacenados en el mapa de color.
  • 40. M. en C. José Jaime Esqueda Elizondo 39 Figura 40. Imagen indexada La relación entre los valores de la imagen y el mapa de color depende de la clase de la matriz que almacena la imagen. Si la matriz es de clase double, el valor 1 apunta a la primera columna del mapa de color, el valor 2 apunta a la segunda columna y así sucesivamente. Si la matriz que almacena la imagen es de clase uint8 o uint16, existe un offset, el valor 0 apunta a la primer columna del mapa de color, el valor 1 apunta a la segunda columna, y así sucesivamente. 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. II.2.5.2 Imágenes de intensidad Una imagen de intensidad es una matriz de datos, llamada I, cuyos valores representan intensidades dentro de un rango. Matlab almacena las imágenes de intensidad como una sola matriz, donde cada elemento corresponde a la intensidad de un píxel de la imagen. La matriz puede ser de clase double, uint8 o uint16. Debido a que las imágenes de intensidad rara vez se guardan con un mapa de color, pero Matlab usa un mapa de color para desplegarla. Los elementos en una matriz de intensidad representan varios niveles de intensidad o niveles de gris, donde generalmente el 0 representa el negro y la intensidad ya sea 1, 255 o 65535 representa el blanco. En la figura 41 se muestra una imagen de intensidad.
  • 41. M. en C. José Jaime Esqueda Elizondo 40 Figura 41 Imagen de intensidad. II.2.5.3 Imágenes binarias En una imagen binaria, cada píxel asume un valor discreto; esencialmente dichos valores corresponden a 1 o 0, encendido o apagado. Una imagen binaria se almacena en un arreglo de píxeles 1s o 0s. En la figura 42 se muestra una imagen binaria. Figura 42. Imagen binaria II.2.5.4 Imágenes RBG A las imágenes RGB generalmente se les conoce como imágenes de color verdadero. En Matlab estas imágenes se almacenan mediante 3 arreglos de dimensión m x n que definen
  • 42. M. en C. José Jaime Esqueda Elizondo 41 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. En la Tabla IV se presentan algunos comandos de Matlab que pueden utilizarse para determinar el tipo de imagen con que se está trabajando Tabla IV. Comandos informativos Comando Descripción isbw Regresa un valor verdadero (1) si la imagen es binaria isgray Regresa un valor verdadero (1) si la imagen es de intensidad isind Regresa un valor verdadero (1) si la imagen es indexada isrgb Regresa un valor verdadero (1) si la imagen es RGB imfinfo Regresa información sobre la imagen Los comandos listados en la Tabla III se pueden utilizar de la siguiente forma: bandera = isbw(A) info = imfinfo(archivo,formato) info = imfinfo(archivo) II.2.6 Selección de una sección de imágenes en Matlab Para tomar una sección de cualquier imagen se utiliza el comando imcrop. A continuación se presenta la sintaxis de este comando: I2 =imcrop(I) X2 =imcrop(X,map) RGB2 =imcrop(RGB) Si se omite el argumento de entrada, el comando opera sobre la imagen actual. Para seleccionar la región a cortar, simplemente presione el botón derecho del ratón y forme un rectángulo sobre la región. Si presiona la tecla Shift, se captura una sección cuadrada. Cuando se suelta el botón del ratón, el comando regresa la sección seleccionada al argumento de salida especificado. Si no se especifica ningún argumento, el comando simplemente despliega la imagen seleccionada en una nueva figura. También es posible seleccionar la sección de interés de forma no interactiva; en este caso se debe especificar el rectángulo de la forma: I2 =imcrop(I,[xmin ymin ancho alto]) X2 =imcrop(X,map,[xmin ymin ancho alto]) RGB2 =imcrop(RGB,[xmin ymin ancho alto])
  • 43. M. en C. José Jaime Esqueda Elizondo 42 III. Ejercicios A continuación se presenta una serie de ejercicios Ejercicio 1. Formación de imágenes y mapas de color. Crear una matriz de 32x32, desplegarla como imagen usando el comando imshow, cambiar los mapas de color con el comando colormap y observar los cambios. >> y=rand(32,32); >> imshow(y) >> colormap(jet) >> colormap(hot) Ejercicio 2. Cargar y desplegar una imagen. Primero se limpia el espacio de trabajo y se cierra cualquier ventana que este abierta >> clear all, close all 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’) La imagen se despliega mediante el comando imshow. >>imshow(I) Repetir el ejercicio usando la imagen a color flowers.tif. Ejercicio 3.Verificar el almacenamiento de la imagen cargada en la memoria. Teclear el comando whos para verificar como se almacenó I en la memoria. >> whos y Matlab despliega Name Size Bytes Class I 291x240 69840 uint8 array Grand total is 69840 elements using 69840 bytes Ejercicio 4. Obtención de el histograma de una imagen. Para observar la distribución de las intensidades de gris en la imagen se utiliza el comando imhist.. Primero cargar la imagen pout.tif y posteriormente desplegar el histograma de la imagen, tal como se muestra en la figura 43. >>I=imread(‘pout.tiff’); >>imhist(I) Repetir con la imagen a color flowers.tif Ejercicio 5. Amplificación/Reducción de imágenes Para verificar los métodos de amplificación de imágenes se utilizan los comandos imresize, fft2 e ifft2. Primero cárguese en memoria la imagen lenaojo.tiff, posteriormente
  • 44. M. en C. José Jaime Esqueda Elizondo 43 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) Posteriormente implemente el método de amplificación de imágenes usando la transformada de Fourier y compare los resultados obtenidos con lo obtenido con el comando imresize. El resultado se muestra en la figura 16. Figura 43. Histograma obtenido de la imagen pout.tif. Ejercicio 6 Rotación de una imagen Para rotar una imagen se utiliza el comando imrotate, el cual acepta principalmente dos argumentos: la imagen a rotar y el ángulo, este último puede especificarse en grados. Si se especifica un valor positivo, la imagen gira en sentido contrario a las manecillas del reloj; si se especifica un valor negativo, se rota la imagen en sentido de las manecillas del reloj. También se puede agregar como argumento el método de interpolación a utilizar y el tamaño de la imagen procesada. Rote 30º la imagen lenaojo.tiff utilizando los tres métodos (vecino, bilineal y bicúbico), los resultados se muestran en la figura 17. >>I=imread('lenaojo.tiff'); >>imshow(I); >>J=imrotate(I,30,'nearest'); >>imshow(J)
  • 45. M. en C. José Jaime Esqueda Elizondo 44 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) El resultado de la binarización se observa en la figura 27. Ejercicio 8. Operaciones aritméticas con imágenes. Aplique las operaciones aritméticas suma, resta y multiplicación a las imágenes rice.tif y cameraman.tif. Realice las operaciones expuestas entre imágenes. Ahora pruebe con la imagen flowers.tif las operaciones ahora usando un escalar. Compare sus resultados con los mostrados en las figuras 9 a 15. Repita las operaciones con las imágenes a color lena256a.tif y lena256b.tif. Ejercicio 9. Operaciones aritméticas con imágenes. Aplique las operaciones lógicas a las imágenes rice.tif y cameraman.tif. Realice las operaciones expuestas entre imágenes. Compare los resultados obtenidos con los mostrados en la figura 16. Ejercicio 10. Generación de ruido y filtrado de imágenes. Añada diferentes tipos de ruido a las imágenes cameraman.tif y lena256a.tif. Posteriormente pruebe los diferentes tipos del filtros existentes. Ejercicio 11. Modificación del contraste y ecualización de una imágenes. Utilice el comando histeq para ecualizar la imagen de lena.tiff, cameraman.tif y pout.tif. Ejercicio 12. Detección de contornos Utilice el comando edge para hallar contornos en las imágenes lena.tiff, eight.tif y rice.tif. Ejercicio 13. Detección de características usando correlación. Utilice la correlación para encontrar la letra “a” en la imagen text.tif, tal como se muestra en el siguiente programa 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
  • 46. M. en C. José Jaime Esqueda Elizondo 45 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')
  • 47. M. en C. José Jaime Esqueda Elizondo 46 Apéndice A. Formatos de Imágenes ¿Qué son los formatos gráficos? Básicamente, los formatos gráficos son archivos en los cuales se guarda información que conforma una imagen. Cada formato es independiente. Las posibilidades que ofrece cada formato con respecto a la gama de colores, a la compatibilidad, a la rapidez de carga, etc., merece ser explicada para determinar cuál de ellos es el más adecuado para la tarea que estamos realizando. Con respecto a la estructura, la mayoría posee una cabecera que indica al programa que lo solicite, las características de la imagen que almacenan; por ejemplo su color, tipo, resolución, etc. Cada formato tiene una organización propia de su estructura. Se pueden dividir en dos grandes grupos: los formatos vectoriales y los formatos bitmap (mapa de bits). 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.
  • 48. M. en C. José Jaime Esqueda Elizondo 47 Formatos de gráficos mas importantes BMP (Bitmapped File Format) Junto con el surgimiento de Windows 3.x se desarrolla un nuevo formato gráfico bitmap que constituye el estándar adoptado por este entorno operativo, es decir al BMP, en el cual están almacenadas las imágenes que constituyen los llamados wallpapers. Este formato guarda las imágenes descomprimidas, lo que significa mayor velocidad de carga y mayor espacio requerido. Con respecto a la resolución, cualquiera es aceptable. Las imágenes pueden ser de 1, 4, 8 y 24 bits. La estructura de los BMPs es sencilla: se trata de un header que contiene varias características de la imagen. Este encabezado está compuesto por información acerca del tamaño, el número de colores, y una paleta de colores (si es necesario) de la imagen. A continuación del encabezado se encuentra la información que constituye la imagen en sí. Tiene una curiosa forma de almacenarla: comienza desde la última línea inferior. Es por eso que los programas encargados de exhibir los BMPs en pantalla trazan la imagen de abajo hacia arriba. Es un formato muy utilizado en la actualidad y la mayoría de las aplicaciones lo utilizan. GIF (Graphic Interchange Format) Es el formato gráfico bitmap por excelencia. Fue creado por Compuserve en junio de 1987 y con el paso del tiempo se ha convertido en el formato más difundido en el mundo. A la primera versión se la llamó GIF87a, y a la segunda, GIF89a. Esta última versión presenta nuevas características para facilitar el manejo de imágenes en este formato. Los GIFs utilizan una paleta de entre 2 y 256 colores. Poseen una rutina de compresión muy eficaz que, aunque demora un poco la carga, reduce los archivos a una tamaño mucho menor que otros formatos. Gracias a esa rutina de compresión que empequeñece los archivos, el GIF es el formato óptimo para ser bajado de BBS o Internet. La resolución máxima alcanzada es la de 1024 x 768 pixels en 256 colores, pero no hay razón por la cual no pueda crearse una imagen de mayor tamaño. Incluso hay GIFs que almacenan más de una imagen en un solo archivo, ideal para hacer slideshows. Su estructura está basada en bloques. Sobre todo desde la incorporación del GIF 89a, se ha dado más importancia a los bloques. Estos pueden contener uno de estos elementos: una imagen, instrucciones acerca de cómo exhibirla, texto, información característica de alguna aplicación, un marcador que determina el final del archivo, etc. Muchos GIFs solamente contienen un bloque que determina su imagen. Todos los GIFs poseen dos tipos de paleta: la paleta global y la paleta local. La global determina los colores de todas las imágenes almacenadas en el GIF, y la local determina específicamente la paleta de cada imagen del GIF (en el caso de haber una sola imagen, la única paleta disponible será la global). Existe un bloque llamado comment block, o "bloque de comentarios", donde puede incluirse un breve comentario personal acerca de la imagen en cuestión. Incluso existe una opción para aplicar a los GIF llamada interlacing. Consiste en lo siguiente: generalmente, cuando un programa exhibe un GIF en pantalla, comienza desde la primera línea superior hasta llegar a la última línea inferior y de una pasada completa la imagen. Pero si el GIF es interlaced, la imagen se visualizará de otra manera: harán falta cuatro pasadas en lugar de una. En cada pasada se visualizan líneas que conforman la imagen, pero esta vez no aparecen seguidas una de la otra, sino distribuidas en la parte superior, central e inferior de la imagen. Este proceso se repite hasta finalizar las cuatro pasadas y
  • 49. M. en C. José Jaime Esqueda Elizondo 48 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. IMG (Aplicación GEM) Este formato bitmap es el utilizado por la antigua aplicación GEM. Es capaz de almacenar imágenes de entre 2 y 256 colores. No hay restricciones con respecto al tamaño de las imágenes y utiliza una rutina de compresión medianamente eficaz. El único inconveniente es que hay muy pocas aplicaciones que lo utilizan, y se hace un poco pesado tener que convertir este formato a otro más conocido cuando haya que modificarlo y luego volver a convertirlo a IMG. 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. TIFF (Tagged Image File Format - TIFF) O TIF Más que una imagen en una archivo, el formato TIF (formato de archivo de imagen etiquetada) contiene una serie de bloques que conforman la imagen. Estos bloques pueden contener cierta información sobre la imagen en sí, su tamaño, su manejo del color, información a las aplicaciones que utilicen ese archivo, texto, y hasta thumbnails. Un thumbnail o miniatura es una pequeña representación de una imagen mucho más extensa, a la cual el programa accede rápidamente y no pierde tiempo descomprimiendo toda la imagen. Sirve para ver el contenido del archivo de una manera rápida y segura. Este formato es totalmente compatible con PC y Macintosh. Soporta gran cantidad de colores y es uno de los formatos preferidos por las aplicaciones de hoy en día. Fue
  • 50. M. en C. José Jaime Esqueda Elizondo 49 introducido por Aldus Corporation y es el formato más usado cuando se trabaja con scanners debido a su útil manejo del color. RAW (Raw Binary Image Format ) En el formato RAW (formato imagen crudo binario) se guardan la datos tal cual esta en la imagen sin ningún tipo de análisis de la misma, además los datos son brutos, o sea, están sin procesamiento y generalmente sin formatos, no teniendo informaciones de "header". Ellos son de fácil lectura y escritura y son almacenados en 8 bits por pixel, variando de 0 a 255 niveles de gris. En cuanto al cuerpo de la imagen, este formato es el más sencillo de todos porque no se utiliza ningún método de compresión para la imagen como se menciono antes, sino que simplemente se almacena en el disco de manera lineal. Es decir, se almacenan de forma consecutiva los datos de la imagen y de la paleta en el archivo, y opcionalmente la cabecera (header), que normalmente se coloca al principio. Con este método se puede saber el tamaño del archivo crudo resultante, sabiendo el ancho y el alto de la imagen, el número de colores y la longitud de la cabecera y la paleta. Los ficheros RAW (a veces también llamados SCR, CLP o similar) se basan pues simplemente en el almacenamiento de los mapas de bits en archivos binarios.
  • 51. M. en C. José Jaime Esqueda Elizondo 50 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