Open In App

Java Program to Blur Image using Smoothing

Blurring is a simple and frequently used image processing operation. It is also called as Smoothing. Smoothing of an image removes noisy pixels from the image and applying a low-pass filter to an image. A low-pass filter means removing noise from an image while leaving the majority of the image undamaged. The most common type of filter is linear. In a linear filter, the weighted sum of the input pixels value determines the output pixels value.

Prerequisite:



Classes required to perform the operation:

Approach:



Implementation:

Example




// Java Program to Blur Image using Smoothing
 
// Importing required packages
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
 
// Main class
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
        throws IOException, InterruptedException
    {
 
        Color color[];
 
        // Creating a File class object to
        // read the image in the form of file from directory
 
        // Directory path is passed as an argument
        File fin = new File("D:/test/Image.jpeg");
 
        // Now object of BufferedImage class is created to
        // convert file into image form
        BufferedImage input = ImageIO.read(fin);
 
        // Again creating an object of BufferedImage to
        // create output Image
        BufferedImage output = new BufferedImage(
            input.getWidth(), input.getHeight(),
            BufferedImage.TYPE_INT_RGB);
 
        // Setting dimensions for the image to be processed
        int i = 0;
        int max = 400, rad = 10;
        int a1 = 0, r1 = 0, g1 = 0, b1 = 0;
        color = new Color[max];
 
        // Now this core section of code is responsible for
        // blurring of an image
 
        int x = 1, y = 1, x1, y1, ex = 5, d = 0;
 
        // Running nested for loops for each pixel
        // and blurring it
        for (x = rad; x < input.getHeight() - rad; x++) {
            for (y = rad; y < input.getWidth() - rad; y++) {
                for (x1 = x - rad; x1 < x + rad; x1++) {
                    for (y1 = y - rad; y1 < y + rad; y1++) {
                        color[i++] = new Color(
                            input.getRGB(y1, x1));
                    }
                }
 
                // Smoothing colors of image
                i = 0;
                for (d = 0; d < max; d++) {
                    a1 = a1 + color[d].getAlpha();
                }
 
                a1 = a1 / (max);
                for (d = 0; d < max; d++) {
                    r1 = r1 + color[d].getRed();
                }
 
                r1 = r1 / (max);
                for (d = 0; d < max; d++) {
                    g1 = g1 + color[d].getGreen();
                }
 
                g1 = g1 / (max);
                for (d = 0; d < max; d++) {
                    b1 = b1 + color[d].getBlue();
                }
 
                b1 = b1 / (max);
                int sum1 = (a1 << 24) + (r1 << 16)
                           + (g1 << 8) + b1;
                output.setRGB(y, x, (int)(sum1));
            }
        }
 
        // Writing the blurred image on the disc where
        // directory is passed as an argument
        ImageIO.write(
            output, "jpeg",
            new File("D:/test/BlurredImage.jpeg"));
 
        // Message to be displayed in the console when
        // program is successfully executed
        System.out.println("Image blurred successfully !");
    }
}

Output: On console

Java Program to Blur Image using Smoothing

After executing the program console will show a message that Image blurred successfully! This code will not run on an online IDE as it needs an image on disk. It is pictorially depicted in the pictorial format below as follows:


Article Tags :