An image can be expressed as the product of illumination and reflectance:

Now define:

Then:

or:

where is the Fourier transform of and is the Fourier transform of .

We then apply a filter to :

In the spatial domain:

We then exponentiate to get the enhanced image:

Now and are the illumination and reflectance of the ``enhanced'' image. The illumination component tends to vary slowly across the image. The reflectance tends to vary rapidly. Therefore, by applying a frequency domain filter such as that in Figure 6.1, we can reduce intensity variation across the image while highlighting detail. This approach is summarized in Figure 6.2.

**Figure 6.1:** Cross section of a spherically symmetric
homomorphic filter. is the distance from the origin.

**Figure 6.2:** Homomorphic Filtering Block Diagram

Although homomorphic filtering in the spectral domain is conceptually simple, its implementation becomes unwieldy when dealing with large images. The 3D volume of MR data is very large when transformed to complex floating point values by the DFT; the size of Data Set 1 is (). The filter itself is the same size as the data volume. The result of this vast amount of data is considerable memory page swapping. Thus execution can be quite slow.

The second problem encountered with spectral domain homomorphic filtering is circular convolution. Multiplication in the spectral domain is equivalent to convolution in the spatial domain. The result of the convolution of the MR image with the spatial kernel, , corresponding to the spectral domain filter, , (see Equation 6.8) is an image that is larger than the original by the size of the spatial mask. The excess data are wrapped and added to the opposite sides of the image in the spatial domain if not accounted for in the spectral domain.

This wrapping, illustrated in one dimension in Figure 6.3 (see Numerical Recipes in C, p.541 [42]), is a property of spectral domain filtering. It can be avoided by padding the original image with zeros at its boundaries to compensate for the mask size, then discarding the padded region after filtering. Although this solution sounds simple, it increases the size of the image to be processed and results in undesirable FFT sizes.

**Figure 6.3:** Circular Convolution

Sat Aug 19 16:59:04 PDT 1995