Example Image Blur
From BoofCV
Jump to navigationJump to searchApplying 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.loadImageNotNull(UtilIO.pathExample("standard/kodim17.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, radius, null);
panel.addImage(ConvertBufferedImage.convertTo(blurred, null, true), "Median");
ShowImages.showWindow(panel, "Image Blur Examples", true);
}
}