Como otros han mencionado, realizar una FFT 2D en el núcleo le dará la respuesta de frecuencia del filtro. Sin embargo, vale la pena mencionar que los filtros 2D se pueden analizar utilizando la transformación Z , que puede o no proporcionar una visión más profunda, dependiendo del filtro (y de lo que desea saber).
Por ejemplo, dado el núcleo que especificó, la ecuación de diferencia correspondiente sería
y(norte1,norte2) = x (norte1+ 1 ,norte2) + x (norte1,norte2+ 1 ) + x (norte1- 1 ,norte2) + x (norte1,norte2- 1 )- 4 x (norte1,norte2) .
Su transformación Z es
Y(z1,z2) =z1X(z1,z2) +z2X(z1,z2) +z- 11X(z1,z2) +z- 12X(z1,z2) - 4 X(z1,z2) ,
que, después de reorganizar, produce la siguiente función de transferencia para el filtro:
H(z1,z2) =Y(z1,z2)X(z1,z2)=z1+z2+z- 11+z- 12- 4.
Para determinar la respuesta de magnitud, simplemente conecte un par de exponenciales complejos y simplifique de la siguiente manera:
H(miyow1,miyow2)El | H(miyow1,miyow2) |=miyow1+miyow2+mi- yow1+mi- yow2- 4= (miyow1+mi- yow1) + (miyow2+mi- yow2) - 4= 2 cosw1+ 2 cosw2- 4= 2( cosw1+ cosw2- 2)2-----------------√.
Evaluar la respuesta de magnitud a frecuencias extremas le dará una sensación de paso alto frente a paso bajo para el filtro. Por ejemplo,
El | H(mii 0,mii 0) | = 2( cos0 +cos0 -2)2---------------√= 2( 1 + 1 - 2)2----------√= 0 ,
y
El | H(mii π,mii π) | = 2( cosπ+ cosπ- 2)2---------------√= 2( - 1 - 1 - 2)2-----------√= 8.
Por supuesto, la función de transferencia se puede evaluar directamente para trazar la respuesta de magnitud del filtro también. Aquí hay un ejemplo usando numpy :
import numpy as np
import pylab as py
from mpl_toolkits.mplot3d import axes3d
def H(z1,z2):
return z1 + z2 + 1./z1 + 1./z2 - 4.0
n = 100
w1 = w2 = np.linspace(-np.pi,np.pi, n)
mag = np.zeros((n,n))
for i1 in xrange(0,n):
for i2 in xrange(0,n):
z1 = np.exp(1j*w1[i1])
z2 = np.exp(1j*w2[i2])
mag[i1,i2] = np.abs(H(z1,z2))
fig = py.figure()
ax = fig.add_subplot(111, projection='3d')
X, Y = np.meshgrid(w1,w2)
ax.plot_surface(X, Y, mag, cmap='bone', alpha=.5)
py.show()
Tenga en cuenta que si usa la técnica de kernel 2D FFT, las magnitudes resultantes no se centrarán necesariamente en cero como en el diagrama anterior.