Java Program to Blur Image using Smoothing

28 Oct, 2021
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:
To read and write an image file we have to import the File class [ import java.io.File; ]. This class represents file and directory path names in general.
To handle errors we use the IOException class [ import java.io.IOException; ]
To hold the image we create the BufferedImage object for that we use BufferedImage class [ import java.awt.image.BufferedImage; ]. This object is used to store an image in RAM.
To perform the image read-write operation we will import the ImageIO class [ import javax.imageio.ImageIO;]. This class has static methods to read and write an image.
Approach:
Smooth each pixel of image taking as 2D matrix
Using some in-built methods of BufferedImage class and Color c
Implementation:
Example
Java
// Java Program to Blur Image using Smoothing // Importing required packagesimport java.awt.*;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO; // Main classpublic 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 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:
sweetyty
simmytarika5
saurabh1990aror
Java
Java Programs
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Stream In Java
Constructors in Java
Introduction to Java
Exceptions in Java
Java Programming Examples
Java Programming Examples
Convert Double to Integer in Java
Implementing a Linked List in Java using Class
Traverse Through a HashMap in Java
Extends vs Implements in Java