miércoles, 5 de abril de 2017

Combinación óptima de señales para minimizar ruido con R (I). Teoría

La combinación de señales tiene en general un efecto estadístico de mejora del ruido por disminución de la varianza. Dadas dos secuencias discretas, imágenes digitalizadas, series de datos,... con el mismo contenido de señal útil pero afectadas por cierta cantidad de ruido aleatorio:




Cómo las mezclaríamos de forma óptima para minimizar el ruido final?. Es decir, qué peso daríamos a cada una de las señales en una combinación lineal para maximizar la relación S/N resultante?.

Y = α · X1 + (1 - α) · X2

Tomando los casos extremos:
  • Si ambas señales X1 y X2 tuvieran la misma cantidad de ruido, por simetría sería lógico pensar que la combinación óptima fuera su promediado Y = (X1 + X2) / 2.
  • Si por el contrario X1 tuviera mucho más ruido que X2, poco podrá aportar por lo que daríamos peso nulo a la señal ruidosa resultando Y = X2.

Entre el promedio y la selección de la secuencia con menos ruido, para cualquier par de señales inmersas en ruido debiera intuitivamente haber un valor óptimo de α que maximice la relación S/N.

Conocida la relación k entre los niveles de ruido que afectan a cada serie de datos, este α óptimo puede calcularse minimizando el ruido de la combinación lineal en función de k. Tras un desarrollo estadístico en el que sin perder generalidad asociamos la señal útil al valor medio de cada variable, y el ruido a su desviación típica (raíz de la varianza):

Si = E(Xi)         Ni = Var(Xi)1/2

Se tienen las siguientes expresiones para el α óptimo y las mejoras de relación S/N de salida:



Se comprueban los dos casos extremos antes propuestos de forma intuitiva:
  • Para dos señales igual de ruidosas (k = 1) se tiene αopt = 0,5
  • Para una señal X1 mucho más ruidosa (k → ∞) se tiene αopt = 0

Vamos a ver empíricamente que ésa es la combinación óptima creando dos series de datos de valor medio o señal útil constante (S1 = S2 = 0,5), a las que añadimos ruido gaussiano en diferente magnitud (N1 = k · N2, k = 5/3). Para ese valor de k obtenemos un αopt = 1 / ((5/3)2 + 1) = 0,265.

Midiendo varianzas para todos los posibles valores de α entre 0 y 1 se tiene:



Donde el ruido tiene su mínimo para el factor de mezcla óptimo calculado. Vemos que por la diferente presencia de ruido el promedio de X1 y X2 (α = 0,5) apenas habría mejorado el resultado de tomar X2 en solitario, desechando la aportación de X1.

Si dibujamos los histogramas de las señales originales junto con el de la combinación óptima resultante, podemos ver cómo se va estrechando la campana como resultado de la reducción estadística de ruido:



Una forma de mostrar visualmente el ejercicio es convertir las secuencias de prueba en imágenes. Reasignando las dimensiones de cada uno de los arrays que contienen las señales X1 y X2 vemos la mejora que supone la combinación óptima:



Aunque no es astronónica, hay diferencia en el ruido visible entre la combinación óptima y la menos ruidosa de las señales de partida (si estás leyendo esto desde un móvil seguramente no se distinga por el reescalado de imagen que hacen los móviles). Por los cálculos hechos sabemos además que cualquier otra ponderación habría dado peor resultado.

Que la mejora del ejemplo no sea espectacular se debe a que la diferencia de ruido entre las señales no era muy grande. En aplicaciones del mundo real no será extraño encontrar combinaciones de señales con muy diferente relación S/N de manera no óptima (por ejemplo aplicando un simple promediado).

Estoy pensando en usar la teoría vista para obtener fotografías en blanco y negro con mínimo ruido. La construcción de una fotografía monocroma se logra combinando información de los tres canales RGB que captura el sensor de la cámara. Es fácil que las ponderaciones habituales en la formación de estas imágenes estén lejos del óptimo, lo que da un margen de mejora.

El código R con el que se han generado las señales de prueba, así como todos los cálculos y gráficas está disponible en maximizesnr.R.

No hay comentarios:

Publicar un comentario

Por claridad del blog, por favor trata de utilizar una sintaxis lo más correcta posible y no abusar del uso de emoticonos, mayúsculas y similares.