Programa Java para desenfocar la imagen usando suavizado

El desenfoque es una operación de procesamiento de imágenes simple y de uso frecuente. También se le llama Suavizado. El suavizado de una imagen elimina los píxeles ruidosos de la imagen y aplica un filtro de paso bajo a una imagen. Un filtro de paso bajo significa eliminar el ruido de una imagen sin dañar la mayor parte de la imagen. El tipo de filtro más común es el lineal. En un filtro lineal, la suma ponderada del valor de los píxeles de entrada determina el valor de los píxeles de salida.

Requisito previo:

Clases requeridas para realizar la operación:

  • Para leer y escribir un archivo de imagen tenemos que importar la clase File [ import java.io.File; ]. Esta clase representa nombres de rutas de archivos y directorios en general.
  • Para manejar errores usamos la clase IOException [ import java.io.IOException; ]
  • Para contener la imagen creamos el objeto BufferedImage para eso usamos la clase BufferedImage [ import java.awt.image.BufferedImage; ]. Este objeto se utiliza para almacenar una imagen en la RAM.
  • Para realizar la operación de lectura y escritura de la imagen, importaremos la clase ImageIO [import javax.imageio.ImageIO;]. Esta clase tiene métodos estáticos para leer y escribir una imagen.

Acercarse:

  • Suavizar cada píxel de la imagen tomando como array 2D
  • Usando algunos métodos incorporados de la clase BufferedImage y Color c

Implementación:

Ejemplo

Java

// 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 !");
    }
}

Salida: En la consola

Java Program to Blur Image using Smoothing

Después de ejecutar el programa, la consola mostrará un mensaje que indica que la imagen se desdibujó correctamente. Este código no se ejecutará en un IDE en línea, ya que necesita una imagen en el disco. Se representa pictóricamente en el formato pictórico a continuación de la siguiente manera:

Publicación traducida automáticamente

Artículo escrito por sam_2200 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *