You are on page 1of 4

El álgebra lineal y el procesamiento digital de imágenes. Parte I.

Cuando pensamos en el álgebra lineal, la primera idea que nos viene a la mente es
un sistema de ecuaciones lineales que necesita ser resuelto, o su variante gráfica
más sencilla, un plano cartesiano con dos rectas, para hallar el punto de
intersección; pero lo que probablemente muchos no saben es que herramientas
como Photoshop o librerías de funciones como OpenGL o DirectX hacen un amplio
uso del álgebra lineal para muchas de sus funcionalidades.

En esta serie de artículos abordaremos algunos conceptos básicos de la aplicación


del álgebra lineal en el Procesamiento de Imágenes. En el primer artículo nos
centraremos en sus aplicaciones y cómo representar una imagen como una matriz,
en el segundo y tercero vamos a exponer algunas de las operaciones con matrices
en una imagen, y en el último mostraremos algunos ejemplos prácticos en
JavaScript.

La aplicación del álgebra lineal en el procesamiento de imágenes

El procesamiento de imágenes se puede definir como el uso de operaciones


matemáticas aplicadas a una imagen con el objetivo de mejorarla en algún sentido
u obtener parámetros de la misma. Con la introducción de los ordenadores, el
procesamiento se realiza por medio de algoritmos gráficos a las imágenes digitales,
las cuales se obtienen mediante un proceso de digitalización o directamente
utilizando cualquier dispositivo digital. A este procesamiento se le llama
Procesamiento Digital de Imágenes.

El procesamiento digital de imágenes no se limita solamente a retocar o cambiar el


tamaño de las imágenes capturadas con la cámara; su uso se extiende a muchos
campos de la ciencia y la tecnología. Algunos de los campos más importantes son:
la medicina, la detección remota, la transmisión y codificación de datos, la robótica,
la visión artificial, el reconocimiento de patrones, la industria cinematográfica,
procesamiento de imágenes obtenidas de microscopios y la restauración y enfocado
de imágenes.

Ejemplos del procesamiento digital de imágenes usando herramientas del álgebra


lineal son: traslación, rotación, sesgado, escalado, uso de las curvas de Bézier,
reflexión y ajustes de canal, brillo y contraste. Otras operaciones más complejas
como filtros, requieren la combinación del álgebra lineal con otras herramientas
matemáticas.

¿Cómo puede una imagen ser representada como una matriz?

Vamos a considerar la siguiente imagen y su variante en blanco y negro .

Si hacemos un acercamiento a la imagen en blanco y negro, obtenemos:


Nótese que la imagen puede ser representada como una rejilla de 16x16 pequeños
elementos, conocidos como píxeles (el elemento gráfico más pequeño de una
imagen, que puede tomar solamente un color a la vez). Si podemos asignar
números a cada color, entonces, la cuadrícula de píxeles se puede representar
como una matriz numérica.

Si en la imagen anterior, asignamos 1 al color blanco, y 0 al negro, entonces, la


imagen se puede representar como una matriz de 16 x 16, cuyos elementos son los
números 0 y 1.

┌ ┐
│1111111111111111│
│1111100000011111│
│1111011111001111│
│1110100000000111│
│1101000000000011│
│1010000000010001│
│1010000000110001│
│1010110001110001│
│1010111011100001│
│1010011111000001│
│1000001110000001│
│1100000000000011│
│1110000000000111│
│1111000000001111│
│1111100000011111│
│1111111111111111│
└ ┘

Utilizando el mismo procedimiento, también podemos representar la imagen en


escala de grises como matrices, pero en este caso, hay más de dos números. Para
este propósito la mayoría de los ficheros digitales usan números entre 0 (negro) y
255 (blanco) como una representación de la intensidad.

La representación matricial de imágenes multicolor depende del sistema de color


utilizado por el programa que está procesando la imagen. Para propósitos didácticos
vamos a utilizar el RGB (el más popular), donde cada píxel especifica la cantidad
de rojo (R), verde (G) y azul (B), y cada color puede variar de 0 a 255. Por lo tanto,
en el RGB, un píxel puede ser representado como un vector tridimensional (r, g, b)
donde r, g y b son números enteros de 0 a 255.

Varios programas almacenan el vector tridimensional como un solo número entero,


utilizando la siguiente función:

v = f(r, g, b) = r*65536 + g*256 + b

Note que 65536 = 2562


El procedimiento opuesto (obtener el vector de colores a partir del valor entero) se
puede hacer usando las siguientes fórmulas:

r = v / 65536

g = (v % 65536) / 256

b = v % 256

Donde % es un operador para obtener el resto de la división entera y / es el operador


de la división entera.

Veamos un ejemplo. El color


se representa como el vector (131, 197, 29), y como 8.635.677 cuando se utiliza la
función que obtiene un único valor entero.

Otros programas almacenan los vectores como valores hexadecimales,


concatenando los tres valores en notación hexadecimal. Esta es la forma en que los
colores se almacenan en las páginas web. El ejemplo anterior se representa
como 83C51D en esta notación.

You might also like