fwind2

2-D FIR filter using 2-D window method

Syntax

`h = fwind2(Hd, win)h = fwind2(f1, f2, Hd, win)`

Description

Use `fwind2` to design two-dimensional FIR filters using the window method. `fwind2` uses a two-dimensional window specification to design a two-dimensional FIR filter based on the desired frequency response `Hd`. `fwind2` works with two-dimensional windows; use `fwind1` to work with one-dimensional windows.

`h = fwind2(Hd, win)` produces the two-dimensional FIR filter `h` using an inverse Fourier transform of the desired frequency response `Hd` and multiplication by the window `win`. `Hd` is a matrix containing the desired frequency response at equally spaced points in the Cartesian plane. `fwind2` returns `h` as a computational molecule, which is the appropriate form to use with `filter2`. `h` is the same size as `win`.

For accurate results, use frequency points returned by `freqspace` to create `Hd`. (See the entry for `freqspace` for more information.)

`h = fwind2(f1, f2, Hd, win)` lets you specify the desired frequency response `Hd` at arbitrary frequencies (`f1` and `f2`) along the x- and y-axes. The frequency vectors `f1` and `f2` should be in the range -1.0 to 1.0, where 1.0 corresponds to half the sampling frequency, or π radians. `h` is the same size as `win`.

Class Support

The input matrix `Hd` can be of class `double` or of any integer class. All other inputs to `fwind2` must be of class `double`. All outputs are of class `double`.

Examples

Use `fwind2` to design an approximately circularly symmetric two-dimensional bandpass filter with passband between 0.1 and 0.5 (normalized frequency, where 1.0 corresponds to half the sampling frequency, or π radians):

1. Create a matrix `Hd` that contains the desired bandpass response. Use `freqspace` to create the frequency range vectors `f1` and `f2`.

```[f1,f2] = freqspace(21,'meshgrid'); Hd = ones(21); r = sqrt(f1.^2 + f2.^2); Hd((r<0.1)|(r>0.5)) = 0; colormap(jet(64)) mesh(f1,f2,Hd)```

2. Create a two-dimensional Gaussian window using `fspecial`.

```win = fspecial('gaussian',21,2); win = win ./ max(win(:)); % Make the maximum window value be 1. mesh(win)```

3. Design the filter using the window from step 2.

```h = fwind2(Hd,win); freqz2(h)```

expand all

Algorithms

`fwind2` computes `h` using an inverse Fourier transform and multiplication by the two-dimensional window `win`.

${h}_{d}\left({n}_{1},{n}_{2}\right)=\frac{1}{{\left(2\pi \right)}^{2}}{\int }_{-\pi }^{\pi }{\int }_{-\pi }^{\pi }{H}_{d}\left({\omega }_{1},{\omega }_{2}\right){e}^{j{\omega }_{1}{n}_{1}}{e}^{j{\omega }_{2}{n}_{2}}d{\omega }_{1}d{\omega }_{2}$

$h\left({n}_{1},{n}_{2}\right)={h}_{d}\left({n}_{1},{n}_{2}\right)w\left({n}_{1},{n}_{2}\right)$

References

[1] Lim, Jae S., Two-Dimensional Signal and Image Processing, Englewood Cliffs, NJ, Prentice Hall, 1990, pp. 202-213.