Ejemplo: filtrado en el dominio de la transformada de Fourier
Utilice las funciones
funconv, matconv, funcdeconv y
matdeconv para convolucionar o deconvolucionar una imagen con una función, f, o una máscara E, multiplicándolas en una frecuencia espacial (dominio de transformada de Fourier). El filtrado en el dominio de frecuencias puede dar lugar a una serie de operaciones de suavizado, detección de bordes y reducción periódica del ruido, según la función o la máscara elegida. A menudo, desde la perspectiva matemática, resulta más eficaz filtrar en el dominio de transformada, o resulta más fácil definir filtros que utilizar la convolución en el dominio de imágenes.
Utilice esta función para filtrar una imagen M con una función en una frecuencia espacial. La función de valores reales f se utiliza para crear una máscara, N, del mismo tamaño que M. M se transforma con Fourier y, después, se multiplica por la máscara, término por término.
La máscara se crea pasando argumentos a f, que son la distancia normalizada de la esquina superior izquierda de M. Este proceso continúa hasta el centro de la máscara, donde se duplica la máscara en cuatro tramos simétricos. Este proceso se utiliza porque la esquina superior izquierda es CC (frecuencia cero).
1. Para empezar a crear una máscara, defina la matriz de imagen M.
2. Busque el píxel que representa el centro de la matriz de imagen.
3. Cree nuevas variables de rango que representen los valores que van desde la esquina superior izquierda hasta el centro de la imagen.
4. Utilice las variables de rango definidas y una función de máscara para crear el cuadrante superior izquierdo de la máscara.
La entrada (0, 0) es f(0) y la entrada (r, c), f(1).
La máscara se crea pasando argumentos (la distancia normalizada de la esquina superior izquierda de M) a f. Este proceso continúa hasta el centro de la máscara, donde se duplica la máscara en cuatro tramos simétricos. Este proceso se utiliza porque la esquina superior izquierda es CC (frecuencia cero).
5. Cree el resto de la matriz de máscara con funconv.
Si la convolución expande la escala de la imagen, se puede aplicar una escala a la matriz de salida según el rango [0, 255].
funcdeconv
Esta función de deconvolución toma una imagen de frecuencia-dominio y una función de frecuencia-dominio y anula su combinación.
El último argumento de funcdeconv e es un término pequeño que se añade a los denominadores de todas las expresiones durante la rutina. Como punto de partida, escriba un valor de 0 para e. Si aparece un mensaje de error de dividir por cero, escriba un valor pequeño para e.
1. Llame a la función funcdeconv.
2. Evalúe DE para ver el resultado de funcdeconv y compárelo con la matriz original.
matconv
Las funciones matconv realizan las mismas transformadas y multiplicación de frecuencia-dominio que funconv, pero admiten una máscara como entrada, en vez de una función. La máscara debe tener el mismo tamaño que la imagen original. Solo debe proporcionar el cuadrante superior izquierdo de la máscara.
1. Lea una imagen de muestra.
2. Cuente el número de filas y columnas de la matriz de imagen.
3. Defina las dimensiones de una máscara.
4. Defina la máscara C.
Pruebe el siguiente filtro de paso alto para C:
5. Aplique matconv a R y C.
R
C
W
(times.bmp)
(matrix_ii_jj.bmp)
(times_mat.bmp)
matdeconv
Utilice matdeconv para recuperar la imagen original. Potencialmente, la deconvolución implica la división por elementos de intensidad cero, por lo que e se añade al denominador de cada división para eliminar este problema.
(matdeconv.bmp)
Se puede experimentar con otras funciones de filtro, teniendo en cuenta que la esquina superior izquierda de la máscara corresponde a las frecuencias bajas y la esquina inferior derecha, a las frecuencias altas. Pruebe diferentes imágenes.