Commons:Cleaning up interference with Fourier analysis

Interference or other regular patterns overlaid on an image can be introduced by a variety of sources, including:

Electromagnetic interference in the environment of the device collecting the image;

Noise in a transmitted image such as a television still due to analog transmission interference or degradation of media;

The texture of the paper that the image was printed on, particularly if it was printed in a cheap magazine or newspaper.

Attempting to remove these by ordinary image space techniques such as replicating the pattern and subtracting it would be extremely difficult and unlikely to be completely successful. Sometimes interference can be hidden by downscaling or blurring, but this is rarely a satisfactory solution. Sometimes convolutions can be used, but this is an advanced technique.

A simple and effective technique for dealing with these problems is to identify the interfering features in the power spectrum image produced by Fourier analysis, eliminate them, and convert back to image space. This tutorial shows how to do this using some widely available tools.

For our sample image, we'll be using this lovely photo of a rose which mysteriously became striped with an interfering pattern of diagonal lines (actually, I took Image:Rosa_Gold_Glow_2.jpg and added the interference myself).

First, we'll need to edit each channel separately (unless the image is grayscale or monochrome, then the manipulations can be done directly to the image). Click the "Channels" tab, and for each of the Red, Green, and Blue channels, select the channel, select all, copy its contents, and paste into a new image. Convert all three new images to RGB mode using Image→Mode→RGB color. Flatten all three new images (this is important - the resulting image will have distorted brightness/contrast if you don't do this).

On all three images, select Filter→Fourier Transform→FFT. Next, select one of the images and zoom it (it doesn't matter which one). You should see an image full of colorful noise, with a few bright spots. We need to figure out exactly where all the bright spots are. Select Layer→Duplicate Layer to duplicate the layer containing the FFT image, and click OK. Next, with the new layer selected, go to Image→Adjustments→Brightness/Contrast, turn contrast to 100%, and turn brightness down until each of the bright spots in the image is clearly visible. If you can see them all the spots fine in the original FFT image, you can skip this step. (If you're curious about why the FFT images are so colorful, it's because it's encoding the phase shift, needed to later reverse the transformation, in the hue of each pixel.)

Now, create one more layer on top of the others. On this layer, use a round, pure black brush of appropriate size to erase all of the bright spots except the one in the middle. Don't be afraid to erase too much of the area around a spot - it usually doesn't hurt anything as long as you're not too close to the center. In this sample image I spotted 8 bright spots, but there can be as few as 2. Copy this layer to a new channel on top of each of the other two images, making sure that it's lined up over the bright spots in all the images.

Finally, hide the middle layer (the one with brightness/contrast adjusted) from view, choose Layer→Flatten Image, and say "OK" to the dialog telling you that hidden layers will be discarded. Make sure no bright spots are left other than the one in the middle. Flatten the other two images as well. Then, choose Filter→Fourier Transform→IFFT. You should observe greatly reduced interference in all three channels.

The final image, with the interference mostly gone

To recombine the channels, simply select the correct channel in the original image and copy the contents of the edited image over it using Select All, Copy, switch images, Paste. It may be necessary to adjust brightness/contrast. We now have a much nicer looking rose. It's not quite perfect though, being slightly blurrier than the original and having some subtler artifacts left over — it's always best to find a clean copy of the original image if possible.

Sometimes bright lines (nearly always vertical and horizontal) may appear instead of single spots. Also, sometimes a particular bright spot may correspond to a legitimate part of the image rather than a defect. Use trial and error and frequent conversions to and from image space to determine the right information to erase. Even though you will normally want to avoid editing near the central "axes", the bright spots might sometimes appear on them too. Remove the spots, but a bit more carefully.

First open the image; it will be in RGB format. We want to be able to manipulate the RGB layers separately (unless the image is grayscale or monochrome, then the decomposition of channels to layers can be skipped and the manipulations done directly to the image). In order to do so, right-click on the image and choose Image→Mode→Decompose (see screenshot on right). For the latest version of GIMP, right-click and select Colors→Components→Decompose. Gimp will create another gray-scale image having the RGB as different layers

Open the image

Choose RGB and press OK (see screenshot on right). This way you will get the decomposed picture.

Choose RGB

Select the window with the new picture, go to the layers window (if you can't see it go to File→Dialogs→Layers and it will appear) and hide all but one layer clicking on the eye to remove it. Then select the remaining layer. On the screenshot on the right I have isolated the blue layer. Now you can work on one layer without influencing the others. It is also recommended to apply "Remove transparency" from the layer's right-click menu to each layer, as transparency is not needed and only distracts when editing.

Let us convert it to its spectrum using the FFT plugin: right-click on the picture and go to Filters→Generic→FFT Forward (see again in the screenshot on right). Now you can manipulate the spectrum of the picture. Do as suggested in the previous section of the tutorial with an important exception: use a specific shade of gray (128, 128, 128 red-green-blue, equivalently 808080 in hex) instead of black to erase the bright spots.

Let's move to the frequency domain

After you have finished editing you have to convert it back to the standard domain performing the inverse FFT. Right-click on the picture and choose Filters→Generic→FFT Inverse as shown in the picture on the right. Do the same for all the three layers.

and now let's come back to the spacial domain

After you have edited all the layers (remember to perform the inverse FFT on all of them!) you have to get your RGB picture back. Right-click on the picture and choose Image→Mode→Compose (see screenshot on right). Here is your picture!