image-processing - matrices - convolucion y correlacion
Convolución Vs Correlación (3)
¿Alguien puede explicarme las similitudes y diferencias, de la correlación y la convolución? Por favor, explique la intuición detrás de eso, no la ecuación matemática (es decir, voltear el kernel / impulso). También se apreciarán los ejemplos de aplicación en el dominio de procesamiento de imágenes para cada categoría
Es probable que obtenga una respuesta mucho mejor en el intercambio de pila de dsp pero ... para empezar, he encontrado una serie de términos similares y pueden ser difíciles de precisar las definiciones.
- Correlación
- Correlación cruzada
- Circunvolución
- Coeficiente de correlación
- Producto de punto deslizante
- Correlación de Pearson
1, 2, 3 y 5 son muy similares
4,6 son similares
Tenga en cuenta que todos estos términos tienen productos de puntos que crían sus cabezas
Preguntó acerca de la correlación y la convolución: son conceptualmente iguales, excepto que la salida se invierte en convolución. Sospecho que puede haber estado preguntando sobre la diferencia entre el coeficiente de correlación (como Pearson) y la convolución / correlación.
Prerrequisitos
Supongo que usted sabe cómo calcular el producto puntual. Dados dos vectores de igual tamaño v y w cada uno con tres elementos, el producto de punto algebraico es v [0] * w [0] + v [1] * w [1] + v [2] * w [2]
Hay mucha teoría detrás del producto punto en términos de lo que representa, etc.
Observe que el producto de puntos es un número único (escalar) que representa el mapeo entre estos dos vectores / puntos v, w En la geometría, con frecuencia se calcula el coseno del ángulo entre dos vectores que utiliza el producto de puntos. El coseno del ángulo entre dos vectores está entre -1 y 1 y puede considerarse como una medida de similitud.
Coeficiente de correlación (Pearson)
El coeficiente de correlación entre la longitud igual v, w es simplemente el producto punto de dos señales de media cero (restar la media v de v para obtener zmv y la media w de w para obtener zmw - aquí zm es la abreviatura de la media cero) dividido por las magnitudes de zmv y zmw.
para producir un número entre -1 y 1. Cerca de cero significa poca correlación, cerca de +/- 1 es una alta correlación. mide la similitud entre estos dos vectores.
Ver http://en.wikipedia.org/wiki/Pearson_product-moment_correlation_coefficient para una mejor definición.
Convolución y correlación
Cuando queremos correlacionar / convulsionar v1 y v2, básicamente estamos calculando una serie de productos de puntos y colocándolos en un vector de salida. Digamos que v1 es tres elementos y v2 es 10 elementos. Los productos de punto que calculamos son los siguientes:
output[0] = v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2]
output[1] = v1[0]*v2[1]+v1[1]*v2[2]+v1[2]*v2[3]
output[2] = v1[0]*v2[2]+v1[1]*v2[3]+v1[2]*v2[4]
output[3] = v1[0]*v2[3]+v1[1]*v2[4]+v1[2]*v2[5]
output[4] = v1[0]*v2[4]+v1[1]*v2[5]+v1[2]*v2[6]
output[5] = v1[0]*v2[7]+v1[1]*v2[8]+v1[2]*v2[9]
output[6] = v1[0]*v2[8]+v1[1]*v2[9]+v1[2]*v2[10] #note this is
#mathematically valid but might give you a run time error in a computer implementation
La salida se puede voltear si se necesita una verdadera convolución.
output[5] = v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2]
output[4] = v1[0]*v2[1]+v1[1]*v2[2]+v1[2]*v2[3]
output[3] = v1[0]*v2[2]+v1[1]*v2[3]+v1[2]*v2[4]
output[2] = v1[0]*v2[3]+v1[1]*v2[4]+v1[2]*v2[5]
output[1] = v1[0]*v2[4]+v1[1]*v2[5]+v1[2]*v2[6]
output[0] = v1[0]*v2[7]+v1[1]*v2[8]+v1[2]*v2[9]
Observe que tenemos menos de 10 elementos en la salida en cuanto a simplicidad, estoy calculando la convolución solo donde se definen tanto v1 como v2
Tenga en cuenta también que la convolución es simplemente una serie de productos de puntos. Ha habido un trabajo considerable a lo largo de los años para poder acelerar las circunvoluciones. Los productos de puntos de barrido son lentos y pueden acelerarse transformando primero los vectores en el espacio base de Fourier y luego calculando una multiplicación de un solo vector y luego invirtiendo el resultado, aunque no voy a entrar en eso aquí ...
Es posible que desee ver estos recursos y buscar en Google: Cálculo de la correlación y significado de Pearson en Python
La convolución es como la correlación, excepto que giramos el filtro antes de correlacionar
La mejor respuesta que obtuve fue de este documento: http://www.cs.umd.edu/~djacobs/CMSC426/Convolution.pdf
Solo voy a copiar el extracto del documento:
"La diferencia clave entre los dos es que la convolución es asociativa. Es decir, si F y G son filtros, entonces F * (G I) = (F G) * I. Si no crees esto, prueba un ejemplo simple , utilizando F = G = (- 1 0 1), por ejemplo. Es muy conveniente que la convolución sea asociativa. Supongamos, por ejemplo, que queremos suavizar una imagen y luego tomar su derivada. Podríamos hacerlo mediante la convolución de la imagen. Imagen con un filtro gaussiano y luego convolucionándola con un filtro derivado. Pero, como alternativa, podríamos girar el filtro derivado con el gaussiano para producir un filtro llamado Diferencia de Gauss (DOG), y luego convertirlo con nuestra imagen. sobre esto es que el filtro DOG puede ser precalculado, y solo tenemos que convertir un filtro con nuestra imagen.
En general, las personas utilizan la convolución para las operaciones de procesamiento de imágenes, como el suavizado, y utilizan la correlación para hacer coincidir una plantilla con una imagen. Entonces, no nos importa que la correlación no sea asociativa, porque en realidad no tiene sentido combinar dos plantillas en una con la correlación, mientras que a menudo es posible que deseemos combinar dos filtros juntos para la convolución ".