Estoy escribiendo un programa (Qt widgets / c ++) para eliminar el ruido de las imágenes. Como método de eliminación de ruido, seleccioné el método de medios no locales . Este método tiene una calidad increíble de imágenes restauradas (es por eso que es el único método de eliminación de ruido en OpenCV), pero tiene un costo de cálculo enorme , por lo que hice muchas variantes modificadas de este método (algunas con subprocesamiento múltiple, algunas algorítmicas). Pero tengo un problema con el que involucra FFT
Seguí todos los pasos de este artículo (solo una página, 1430) y todo funciona perfectamente, excepto la parte FFT, solo hay 2 líneas al respecto en el documento y no puedo entender, ¿CÓMO se debe usar fft?
Este problema me ha molestado durante meses, cualquier ayuda o idea sería muy apreciada.
Versión abreviada de la pregunta: ¿Cómo puedo obtener la diferencia cuadrada sumada de dos matrices en la imagen (la de arriba y la de en medio, los valores son colores) rápidamente? (O (n ^ 2) es un costo enorme, hay muchas operaciones de este tipo, según el documento anterior, que se puede hacer a través de FFT con O (n * log n) (dice que estas 2 matrices forman de algún modo convolución circular) )
Respuestas:
El truco dentro del papel es el siguiente:
La transformación de Fourier es obviamente una transformación 2D, ya que está trabajando con datos 2D. Lo que obtienes para un parche dado es una matriz 2D de valores complejos.
Notas adicionales
En mi opinión, este artículo no es la mejor estrategia de aceleración de NL-means. Los experimentos que realicé en 2007/2008 muestran que la preselección de parches es mejor (tanto en términos de velocidad como de calidad de los resultados). He comenzado a bloguear sobre esto aquí , pero desafortunadamente estoy buscando tiempo para terminar las publicaciones.
Los documentos originales de NL significa medios implementaciones en bloque que pueden ser interesantes. Existen fundamentalmente 2 formas de implementar NL-means:
La primera impolementación es el enfoque original, porque en 2005 la memoria y las CPU multinúcleo eran caras. Por otro lado, elegí el número 2 en hardware reciente en los últimos 2 años. Depende de su tamaño de imagen típico y si desea poder calcular transformaciones de dominio como DFT / DCT (como en el documento propuesto y en BM3D).
fuente