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

El álgebra lineal y el procesamiento digital de imágenes. Parte II. Filtros.
12 Octubre 2016

En el artículo anterior explicamos como una imagen puede ser representada como una matriz de píxeles, donde cada píxel se expresa como un vector tridimensional, compuesto por la cantidad de rojo, verde y azul del color. En este artículo, vamos a dar algunos ejemplos sobre el uso del álgebra lineal en el procesamiento digital de imágenes.

Hay dos tipos principales de tratamientos de una imagen:

  1. Cuando se cambia el color de cada píxel, utilizando una función que recibe como entrada el píxel original, o en casos más complejos, una submatriz de píxeles (por lo general, submatrices alrededor del pixel en la matriz, en función de un factor extra).
  2. Cuando los pixeles cambian su posición dentro de la imagen, o más precisamente, cuando cada píxel de la matriz se construye basado en otro pixel de la matriz, pero sin alterar su color.

Los procedimientos del procesamiento de imágenes del primer tipo son generalmente llamados filtros. Entre los más utilizados se encuentran: el ajuste de brillo, contraste y colores, la conversión a escala de grises, la inversión de color (negativo), la corrección gamma, el desenfoque y la reducción de ruido.

En el segundo tipo se pueden mencionar: Rotación, volteo, escalado, sesgo y traslación.

Filtros

Desde el punto de vista del álgebra lineal, los filtros se aplican a cada píxel de la matriz usando la función de filtro. Como se explicó anteriormente, la entrada de esta función puede ser sólo un pixel como el ajuste de brillo, o una submatriz de píxeles como el desenfoque, donde el orden de la submatriz dependerá del radio que se utilice.

Consideremos la matriz M, como la matriz asociada a una imagen a color:

M =    
p11 p12 p1n
p21 p22 p2n
pm1 pm2 pmn
 

Aquí, pij es el píxel en la posición (i, j), que se representa como el vector:

 
r
g
b
 

En el caso más sencillo (el filtro necesita solamente un píxel como entrada), la función puede ser una transformación lineal, que transforma un vector tridimensional (píxel) en otro vector tridimensional, o no.

Cuando se trata de una transformación lineal, la transformación se puede representar como una matriz T de orden 3x3, donde:

 
r'
g'
b'
    = T •   
r
g
b
 

Algunos de los filtros que utilizan transformaciones lineales son:

La conversión a escala de grises

T =    
1/3 1/3 1/3
1/3 1/3 1/3
1/3 1/3 1/3
 

Los componentes de cada nuevo píxel se obtienen calculando la media de los tres componentes.

El efecto sepia

T =    
0.393 0.769 0.189
0.349 0.686 0.168
0.272 0.534 0.131
 

Los números de la matriz de T en el ejemplo anterior, dan a las imágenes, el color marrón rojizo de las fotografías monocromáticas de inicios del siglo 20.

Otra de las transformaciones comunes es aquella en los que el píxel resultante se obtiene adicionando una matriz de orden 3x1 (vector tridimensional) al píxel original:

 
r'
g'
b'
    = V +   
r
g
b
 

Aunque estas transformaciones son muy simple, no son transformaciones lineales, pero utilizan el concepto de suma de matrices. Ejemplos de este tipo de transformación son:

Ajuste de canal rojo

V =   
f
0
0
 

Ajuste de canal verde

V =   
0
f
0
 

Ajuste del canal azul

V =   
0
0
f
 

Ajuste de brillo

V =   
f
f
f
 

En los cuatro ejemplos anteriores, f es un número que depende del grado de ajuste que la persona desea aplicar, y puede ser un número positivo o negativo, por lo general oscila entre -150 y 150.

Algunas otras transformaciones se pueden obtener usando una combinación de las dos transformaciones anteriores:

 
r'
g'
b'
    = T •   
r
g
b
    + V

Este es el caso de encontrar el negativo de una imagen (inversión de color), donde el componente de cada nuevo píxel se obtiene restando el valor real de 255. Las matrices son:

T =    
-1 0 0
0 -1 0
0 0 -1
 

V =   
255
255
255
 

Para el ajuste de contraste, la operación es un poco más complicada:

 
r'
g'
b'
    = V1 + T •   
r
g
b
    + V2

Donde

V1 =   
-128
-128
-128
 

T =    
f 0 0
0 f 0
0 0 f
 

V2 =   
128
128
128
 

En este caso f se calcula utilizando la fórmula: f = (259 * (valor + 255)) / (255 * (259 - valor), donde el valor es el grado de ajuste, por lo general un número que oscila entre -100 y 100.

Para la corrección gamma, necesitamos algo más que la suma y la multiplicación de matrices, se necesita del operador de potencia. El filtro se puede calcular utilizando la siguiente fórmula:

 
r'
g'
b'
    = 255 •   
(r/255)1/f
(g/255)1/f
(b/255)1/f
 

El factor f es un número que oscila entre 0 y 10, pero sin alcanzar el número 0.

El desenfoque, como se comentó anteriormente, necesita una submatriz de píxeles como entrada, donde el orden de la submatriz dependerá del radio de desenfoque que se desee. La idea básica es que los componentes de cada píxel de salida se calculan como la media del componente correspondiente usando todos los píxeles alrededor del mismo.

En el próximo artículo vamos a estar hablando del segundo tipo de procesamiento de imágenes; el relacionado el cambio de la posición de los píxeles.

Entradas relacionadas

Aún no hay comentarios


Tu comentario

Nunca compartiremos su dirección de correo.
Los comentarios son moderados antes de hacerlos visible para todos. La foto de perfil se obtiene de Gravatar usando su correo electrónico.