Homomorphic filtering is a generalized technique for signal and image processing, involving a nonlinear mapping to a different domain in which linear filter techniques are applied, followed by mapping back to the original domain. This concept was developed in the 1960s by Thomas Stockham, Alan V. Oppenheim, and Ronald W. Schafer at MIT[1] and independently by Bogert, Healy, and Tukey in their study of time series.[2]
Homomorphic filtering is sometimes used for image enhancement. It simultaneously normalizes the brightness across an image and increases contrast. Here homomorphic filtering is used to remove multiplicative noise. Illumination and reflectance are not separable, but their approximate locations in the frequency domain may be located. Since illumination and reflectance combine multiplicatively, the components are made additive by taking the logarithm of the image intensity, so that these multiplicative components of the image can be separated linearly in the frequency domain. Illumination variations can be thought of as a multiplicative noise, and can be reduced by filtering in the log domain.
To make the illumination of an image more even, the high-frequency components are increased and low-frequency components are decreased, because the high-frequency components are assumed to represent mostly the reflectance in the scene (the amount of light reflected off the object in the scene), whereas the low-frequency components are assumed to represent mostly the illumination in the scene. That is, high-pass filtering is used to suppress low frequencies and amplify high frequencies, in the log-intensity domain.[3]
Homomorphic filtering can be used for improving the appearance of a grayscale image by simultaneous intensity range compression (illumination) and contrast enhancement (reflection).
m(x,y)=i(x,y)\bulletr(x,y)
Where,
m = image,
i = illumination,
r = reflectance
We have to transform the equation into frequency domain in order to apply high pass filter. However, it's very difficult to do calculation after applying Fourier transformation to this equation because it's not a product equation anymore. Therefore, we use 'log' to help solve this problem.
ln(m(x,y))=ln(i(x,y))+ln(r(x,y))
Then, applying Fourier transformation
\digamma(ln(m(x,y)))=\digamma(ln(i(x,y)))+\digamma(ln(r(x,y)))
Or
M(u,v)=I(u,v)+R(u,v)
Next, applying high-pass filter to the image. To make the illumination of an image more even, the high-frequency components are increased and low-frequency components are decrease.
N(u,v)=H(u,v)\bulletM(u,v)
Where
H = any high-pass filter
N = filtered image in frequency domain
Afterward, returning frequency domain back to the spatial domain by using inverse Fourier transform.
n(x,y)=invF(N(u,v))
Finally, using the exponential function to eliminate the log we used at the beginning to get the enhanced image
newImage(x,y)=exp(n(x,y))
The following figures show the results of applying the homomorphic filter, high-pass filter, and the both homomorphic and high-pass filter. All figures were produced using Matlab.
According to figures one to four, we can see how homomorphic filtering is used for correcting non-uniform illumination in the image, and the image become clearer than the original. On the other hand, if we apply the high pass filter to the homomorphic filtered image, the edges of the images become sharper and the other areas become dimmer. This result is similar to applying only a high-pass filter to the original image.
It has been suggested that many cameras already have an approximately logarithmic response function (or more generally, a response function which tends to compress dynamic range), and display media such as television displays, photographic print media, etc., have an approximately anti-logarithmic response, or an otherwise dynamic range expansive response. Thus homomorphic filtering happens accidentally (unintentionally) whenever we process pixel values f(q) on the true quantigraphic unit of light q. Therefore it has been proposed that another useful kind of filtering is anti-homomorphic filtering in which images f(q) are first dynamic-range expanded to recover the true light q, upon which linear filtering is performed, followed by dynamic range compression back into image space for display.[5] [6] [7] [8]
Homomorphic filtering is used in the log-spectral domain to separate filter effects from excitation effects, for example in the computation of the cepstrum as a sound representation; enhancements in the log spectral domain can improve sound intelligibility, for example in hearing aids.[9]
Homomorphic filtering has been used to remove the effect of the stochastic impulse train, which originates the sEMG signal, from the power spectrum of the sEMG signal itself. In this way, only information about motor unit action potential (MUAP) shape and amplitude was maintained; this was then used to estimate the parameters of a time-domain model of the MUAP itself.[10]
How individual neurons or networks encode information is the subject of numerous studies and research. In central nervous system it mainly happens by altering the spike firing rate (frequency encoding) or relative spike timing (time encoding).[11] [12] Time encoding consists of altering the random inter-spikes intervals (ISI) of the stochastic impulse train in output from a neuron. Homomorphic filtering was used in this latter case to obtain ISI variations from the power spectrum of the spike train in output from a neuron with[13] or without[14] the use of neuronal spontaneous activity. The ISI variations were caused by an input sinusoidal signal of unknown frequency and small amplitude, i.e. not sufficient, in absence of noise to excite the firing state. The frequency of the sinusoidal signal was recovered by using homomorphic filtering based procedures.
A.V. Oppenheim, R.W. Schafer, T.G. Stockham "Nonlinear Filtering of Multiplied and Convolved Signals" Proceedings of the IEEE Volume 56 No. 8 August 1968 pages 1264-1291