Determinación del tipo y el ancho de banda de un filtro


7

Dado un filtro, si se da como una ecuación como:

F(X,y)=(2X2+2y2)Exp(-X2+y2σ2)

O en un kernel como: ¿Cuánto puedo averiguar sobre el filtro. Específicamente, ¿puedo averiguar si se trata de un filtro de paso alto / paso bajo / paso de banda (si es así, ¿cómo?), ¿Y puedo averiguar el ancho de banda del filtro?

[0 010 01-4 410 010 0]

Si ayuda, el contexto es el procesamiento de imágenes.

Gracias


2
Para filtrar una imagen usando un núcleo, usa convolución, por lo que el núcleo es una especie de función de respuesta a impulso. Para ver la respuesta de frecuencia de un filtro, realiza una FFT de la respuesta de impulso. En este caso, su núcleo es solo 3x3, por lo que creo que primero debe rellenarlo con ceros para ver un espectro de respuesta de mayor resolución. Luego puede mirar / medir el espectro para ver el tipo y el ancho de banda, etc.
endolito

Respuestas:


6

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 4X(norte1,norte2).

Su transformación Z es

Y(z1,z2)=z1X(z1,z2)+z2X(z1,z2)+z1-1X(z1,z2)+z2-1X(z1,z2)-4 4X(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+z1-1+z2-1-4)

Para determinar la respuesta de magnitud, simplemente conecte un par de exponenciales complejos y simplifique de la siguiente manera:

H(miyow1,miyow2)=miyow1+miyow2+mi-yow1+mi-yow2-4 4=(miyow1+mi-yow1)+(miyow2+mi-yow2)-4 4=2cosw1+2cosw2-4 4El |H(miyow1,miyow2)El |=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(miyo0 0,miyo0 0)El |=2(cos0 0+cos0 0-2)2=2(1+1-2)2=0 0,
y
El |H(miyoπ,miyoπ)El |=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()

Respuesta de magnitud de filtro

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.


3

Lo negativo de la segunda derivada de un núcleo gaussiano, como lo ha descrito, resulta ser lo que se llama el 'Sombrero Mexicano' . núcleo. Puedes ver algunos de sus usos en la wiki.

Tal como está, tal filtro se puede usar para detectar bordes. El núcleo que ha proporcionado también se puede utilizar con la misma capacidad.

La mejor manera de saber si un filtro es de paso bajo / banda / alto es observarlo en el dominio de la frecuencia, ya que eso le dirá qué bandas se suprimen o se dejan solas. Realizar el DFT bidimensional y tomar la magnitud del resultado debería proporcionarle esta información.


2

Si tiene la Caja de herramientas de procesamiento de imágenes de MATLAB, puede usar freqz2: http://www.mathworks.com/help/images/ref/freqz2.html

Código Scipy para un DFT / FFT 2-d como lo señalan @endolith y @Mohammad

h = array([[0,1,0],[1,-4,1],[0,1,0]])
N=32; 
figure(); 
imshow(abs(fft2(h,s=(N,N))),interpolation='nearest');
colorbar()
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.