2-D FIR filter using 2-D window method

`h = fwind2(Hd, win)`

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

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`

.

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`

.

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):

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)

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)

Design the filter using the window from step 2.

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

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

Was this topic helpful?