Image Processing in Java

An applet implementing several spatial image filters

Your web browser either does not support Java applets, or you have Java support turned off in your browser. You will need to have a Java-capable browser with Java enabled to see this demonstration. Thank you for your interest.


The pop-up menus at the top of the applet allow you to select the image you would like to filter (from a list of 9 images); the type of filtering you would like to apply to the image (MLV, MCV, mean, or median filtering); and the size of the filter kernel (odd sizes from 3x3 to 15x15). The caption above the image gives a brief description of the image selected from the pop-up menu. Filtering is not performed until you click on the 'Filter Image' button at the upper right. The original image is shown on the left and the filtered image on the right.


This applet demonstrates the differences among four different image filters, two well-known filters (mean and median) and two filters I have developed in my research (MLV and MCV). The MLV and MCV filters are designed to smooth noise while simultaneously sharpening edges. The MLV filter is designed to smooth additive noise and the MCV filter is designed to smooth multiplicative noise. These filters are compared to the standard mean and median filters. The median filter is reputed to be edge-preserving, whereas the mean filter is known to blur edges. Comparing the results of the different filters using this applet, you can clearly see that the MLV and MCV filters are superior to the mean and median filters for reducing noise without blurring edges. The additive and multiplicative noise images demonstrate that the MLV filter outperforms the MCV filter on additive noise, and the MCV filter outperforms the MLV filter on multiplicative noise.

See also: other related work on my home page.


I've made no serious attempt at optimizing these filter algorithms for speed. I've elected instead to emphasize correct results over sheer speed. My implementation of the median filter, in particular, is very inefficient, and for large kernel sizes it may execute very slowly.

What are the MLV and MCV filters?

What are the mean and median filters?

See also:

Last updated: 23 July 2003
Page created: 20 September 1996
Code last modified: 23 July 2003

Mark A. Schulze
Copyright © 1996-2003 by Mark A. Schulze. All Rights Reserved.