Name
filt_btwo - Butterworth homomorphic Fourier filter
Usage
output = filt_btwo(image, freql, freqh, value, pad)
Input
- image
- input image (can be either real or Fourier)
- freql
- low - stop-band frequency
- freqh
- high - pass-band frequency
- value
- value of the filter at zero frequency
- pad
- logical flag specifying whether before filtering the image should be padded with zeroes in real space to twice the size (this helps avoiding aliasing artifacts). (Default pad = False).
All frequencies are in absolute frequency units `f_a` and their valid range is [0:0.5].
Output
- output
- filtered image. Output image is real when input image is real or Fourier when input image is Fourier
Method
Fourier transform of the input image is multiplied by a radially symmetric filter:
`1-(1-value)**B(f)`
where `B(f)` is the Butterworth filter
`B(f) = 1.0/sqrt(1.0+(f/(RAD))^(ORDER))`
Value of ORDER determines the filter falloff and RAD corresponds to the cut-off frequency. RAD and ORDER are calculated from the parameters specified by the user using following equations:
`ORDER = [2*log((eps)/sqrt(a^2-1))]/[log((low)/(high))]`
`RAD = (low)/((eps)^(2/(ORDER)))`
where low and high are the pass-band and stop-band frequencies, respectively, and parameters eps and a are set to 0.882 and 10.624, respectively. Note values of the filter B(f) deviate from 1.0 at frequency low by about 0.2 and from 0.0 at frequency high by about 0.09 (for a low-pass filter.)
Reference
Gonzalez, R. F., Woods, R. E., 2002. Digital Image Processing. Prentice Hall, Upper Saddle River, NJ.
Author / Maintainer
Pawel A. Penczek
Keywords
- category 1
- FILTER
- category 2
- FOURIER
Files
filter.py
Maturity
- stable
- works for most people, has been tested; test cases/examples available.
Bugs
None. It is perfect.