Example Image Blur

From BoofCV
Jump to: navigation, search

Applying different types of image blur is a common way to "remove" noise from images and make later steps more effective. This example shows you how to apply different image blur operators using different interfaces.

Example Code:

Concepts:

  • Image Processing
  • Filtering

Related Examples:

Example Code

/**
 * This example shows you can can apply different standard image blur filters to an input image using different
 * interface.  For repeat calls using the filter interface has some advantages, but the procedural can be
 * simple to code up.
 *
 * @author Peter Abeles
 */
public class ExampleImageBlur {

	public static void main(String[] args) {
		ListDisplayPanel panel = new ListDisplayPanel();
		BufferedImage buffered = UtilImageIO.loadImage(UtilIO.pathExample("sunflowers.jpg"));

		panel.addImage(buffered,"Original");

		Planar<GrayU8> input = ConvertBufferedImage.convertFrom(buffered, true, ImageType.pl(3, GrayU8.class));
		Planar<GrayU8> blurred = input.createSameShape();

		// size of the blur kernel. square region with a width of radius*2 + 1
		int radius = 8;

		// Apply gaussian blur using a procedural interface
		GBlurImageOps.gaussian(input,blurred,-1,radius,null);
		panel.addImage(ConvertBufferedImage.convertTo(blurred, null, true),"Gaussian");

		// Apply a mean filter using an object oriented interface.  This has the advantage of automatically
		// recycling memory used in intermediate steps
		BlurFilter<Planar<GrayU8>> filterMean = FactoryBlurFilter.mean(input.getImageType(),radius);
		filterMean.process(input, blurred);
		panel.addImage(ConvertBufferedImage.convertTo(blurred, null, true),"Mean");

		// Apply a median filter using image type specific procedural interface.  Won't work if the type
		// isn't known at compile time
		BlurImageOps.median(input,blurred,radius);
		panel.addImage(ConvertBufferedImage.convertTo(blurred, null, true),"Median");

		ShowImages.showWindow(panel,"Image Blur Examples",true);
	}
}