w=orientationBandpass(size,oLow,oHigh) returns a “window”, i.e. a matrix
meant to be used as a band-pass filter. The matrix size is mxn if “size”
is [m,n], and nxn if “size” is n. The matrix elements represent gain at
each freq, uniformly spaced from about -1 to 1 of Nyquist frequency (see
FREQSPACE). oLow and oHigh are the cut-off orientations in degrees (e.g.
0 to 360). The interval will include all angles from oLow up to but not
including orientation oHigh. oHigh must be in the range [oLow,oLow+180].
Setting oHigh=oLow+180 will produce an all-pass filter. The filter has
gain 1 in the orientation intervals [oLow,oHigh) and
[oLow+180,oHigh+180), and gain 0 outside those intervals. Note the
asymmetry: oLow is included and oHigh is excluded. Frequency zero, which
has no orientation, is always passed with gain 1. The logical OR
of filters for several contiguous bands, e.g. 0 to 20 and 20 to 40 will
equal the filter for the composite band, 0 to 40. oLow can be any finite
value, but only the range 0 to 180 is unique. o+180 is equivalent to o.
Here’s a typical use, to produce orientation-bandpass noise:
if any(any(filter~=1)) % skip all-pass filter
Also see Bandpass2, Bandpass, FREQSPACE.