requisitos previos:
- Procesamiento de imágenes en Java: lectura y escritura
- Procesamiento de imágenes en Java: obtener y establecer píxeles
- Procesamiento de imágenes en Java: conversión de imágenes en color a imágenes en escala de grises
- Procesamiento de imágenes en Java: conversión de imagen en color a imagen negativa
- Procesamiento de imágenes en Java: conversión de imágenes de color a rojo, verde y azul
- Procesamiento de imágenes en Java: conversión de imagen a color a imagen sepia
- Procesamiento de imágenes en Java: creación de una imagen de píxeles aleatorios
- Procesamiento de imágenes en Java: creación de una imagen espejo
- Procesamiento de imágenes en Java – Detección de rostros
- Procesamiento de imágenes en Java: marca de agua de una imagen
- Procesamiento de imágenes en Java: cambio de orientación de la imagen
- Procesamiento de imágenes en Java: mejora del contraste
- Procesamiento de imágenes en Java: mejora del brillo
- Procesamiento de imágenes en Java: comparación de dos imágenes
Consejo: Se recomienda usar eclipse para el mismo, ya que es fácil de usar y configurar.
Aquí, usaremos un filtro gaussiano . Este filtro reduce el ruido en la imagen y hace que se vea mejor (o con mayor resolución). Siga el requisito previo de instalar OpenCV y configurar según el sistema operativo en su máquina local para escribir código, ya que importaremos bibliotecas. Entonces, analicemos los métodos anteriores necesarios para mejorar la nitidez.
Método 1: GaussianBlur(): Este método reside en el paquete Imgproc de OpenCv.
Sintaxis:
Imgproc.GaussianBlur(source, destination, new Size(0, 0), sigmaX)
Parámetros:
- Imagen de origen
- Imagen de destino
- Tamaño del núcleo gaussiano
- Desviación estándar del núcleo gaussiano en la dirección X
Método 2: addWeighted(): este método reside en el paquete Core de OpenCV.
Sintaxis:
Core.addWeighted(InputArray src1, alpha, src2, beta, gamma, OutputArray dst)
Parámetros:
- Primera array de entrada
- Peso de los primeros elementos de la array
- Segunda array de entrada del mismo tamaño y número de canal que src1
- Peso de los elementos de la segunda array
- Escalar agregado a cada suma
- Array de salida que tiene el mismo tamaño y número de canales que las arrays de entrada
Método 3: imread(): se utiliza para leer imágenes como objetos Mat que OpenCV representa.
Sintaxis:
Imgcodecs.imread(filename);
Parámetros: Nombre de archivo del archivo de imagen. Si la imagen está en otro directorio, se debe mencionar la ruta completa de la imagen.
Método 4: imwrite(): se utiliza para escribir objetos Mat en un archivo de imagen.
Sintaxis:
Imgcodecs.imwrite(filename, mat_img);
Parámetros:
- Nombre de archivo del archivo de imagen. Si la imagen está en otro directorio, se debe mencionar la ruta completa de una imagen.
- Objeto mat resultante.
Implementación: La imagen de entrada es la siguiente:
Ejemplo
Java
// Java Program to Enhance Sharpness in An Image // Using OpenCV Library // Importing package module package ocv; // Importing require classes import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.Size; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; // Main class public class GFG { // Main driver method public static void main(String[] args) { // Try block to check for exceptions try { // For proper execution of native libraries // Core.NATIVE_LIBRARY_NAME must be loaded // before calling any of the opencv methods System.loadLibrary(Core.NATIVE_LIBRARY_NAME); // Reading the input image from local directory // by creating object of Mat class Mat source = Imgcodecs.imread( "E://input.jpg", Imgcodecs.CV_LOAD_IMAGE_COLOR); Mat destination = new Mat(source.rows(), source.cols(), source.type()); // Filtering Imgproc.GaussianBlur(source, destination, new Size(0, 0), 10); Core.addWeighted(source, 1.5, destination, -0.5, 0, destination); // Writing output image to directory in the local // system Imgcodecs.imwrite("E://output.jpg", destination); } // Catch block to handle exceptions catch (Exception e) { // Display message when exception occurs System.out.print("Exception/s Occurred") } } }
Producción:
Nota: observe una pequeña mejora en la resolución
Este artículo es una contribución de Pratik Agarwal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA