A low pass filter is the basis for most smoothing methods. An image is smoothed by decreasing the disparity between pixel values by averaging nearby pixels. Using a low pass filter tends to retain the low frequency information within an image while reducing the high frequency information. An example of a low pass filter is an array of ones divided by the number of elements within the kernel, such as the following 3 by 3 kernel:

The above array is just an example of one possible kernel for a low pass filter. Other filters may include more weighting for the center point, or have different smoothing in each dimension.

The following example uses the CONVOL function to smooth a whirlpool galaxy M51 image. This example data is available in the examples/data directory of your IDL installation. The code shown below creates the following images:

; Import the image from the file.
file = FILEPATH('m51.dat', $
  SUBDIRECTORY = ['examples', 'data'])
orig_imageSize = [340, 440]
  			orig_image = READ_BINARY(file, DATA_DIMS = orig_imageSize)
 
     			im = IMAGE(orig_image, RGB_TABLE=26, $
  TITLE = "Original Galaxy Image", $
  POSITION = [.10, .025, .50, .55], DIMENSIONS=[800, 800])
 
  			croppedSize = [96, 96]
croppedImage = orig_image[200:(croppedSize[0] - 1) + 200, $
180:(croppedSize[1] - 1) + 180]
 
im01 = IMAGE(croppedImage, $
  RGB_TABLE = 26, $
  TITLE = "Cropped Galaxy Image", $
  POSITION = [.10, .625, .40, .925], /CURRENT)
 
; Create a low pass filter.
kernelSize = [3, 3]
kernel = REPLICATE((1./(kernelSize[0]*kernelSize[1])), $
  kernelSize[0], kernelSize[1])
 
; Apply the filter to the image.
filteredImage = CONVOL(FLOAT(croppedImage), kernel, $
  /CENTER, /EDGE_TRUNCATE)
 
im02 = IMAGE(filteredImage, $
  RGB_TABLE = 26, $
  TITLE = "Low-Pass Filtered Galaxy Image", $
  POSITION = [.60, .625, .90, .925], /CURRENT)
 
 			im03 = IMAGE(croppedImage + filteredImage, $
  			RGB_TABLE = 26, $
  			TITLE = "Filtered and Cropped Images Combined", $
  		POSITION = [.60, .125, .90, .45], /CURRENT) 

Resources