📜  Java中的图像处理 - 清晰度增强

📅  最后修改于: 2022-05-13 01:54:42.459000             🧑  作者: Mango

Java中的图像处理 - 清晰度增强

先决条件:

  • Java中的图像处理——读写
  • Java中的图像处理——获取和设置像素
  • Java中的图像处理——彩色图像到灰度图像的转换
  • Java中的图像处理——彩色图像到负图像的转换
  • Java中的图像处理——彩色到红绿蓝图像的转换
  • Java中的图像处理——彩色图像到棕褐色图像的转换
  • Java中的图像处理——创建随机像素图像
  • Java中的图像处理——创建镜像
  • Java中的图像处理——人脸检测
  • Java中的图像处理——给图像加水印
  • Java中的图像处理——改变图像的方向
  • Java中的图像处理——对比度增强
  • Java中的图像处理——亮度增强
  • Java中的图像处理——两个图像的比较

在这里,我们将使用高斯滤波器。此滤镜可减少图像中的噪点并使其看起来更好(或更高的分辨率)。完成安装 OpenCV 的先决条件,并根据本地计算机中的操作系统进行设置,以便编写代码,因为我们将导入库。因此,让我们讨论一下增强清晰度所需的现有方法。

方法 1: GaussianBlur():该方法位于 OpenCv 的 Imgproc 包中。

句法:

Imgproc.GaussianBlur(source, destination, new Size(0, 0), sigmaX)

参数:

  • 源图像
  • 目的地图片
  • 高斯核大小
  • X 方向的高斯核标准差

方法 2: addWeighted():该方法位于 OpenCV 的 Core 包中。

句法:

Core.addWeighted(InputArray src1, alpha, src2, beta, gamma, OutputArray dst)

参数:

  • 第一个输入数组
  • 第一个数组元素的权重
  • 与 src1 大小和通道号相同的第二个输入数组
  • 第二个数组元素的权重
  • 标量添加到每个总和
  • 与输入数组具有相同大小和通道数的输出数组

方法3: imread():用于将图像读取为Mat 对象,由OpenCV 渲染。

句法:

Imgcodecs.imread(filename);

参数:图像文件的文件名。如果图像在另一个目录中,则必须提及图像的整个路径。

方法四: imwrite():  它用于将 Mat 对象写入图像文件。

句法:

Imgcodecs.imwrite(filename, mat_img);

参数:

  • 图像文件的文件名。如果图像在另一个目录中,则必须提及图像的整个路径。
  • 结果垫对象。

实现:输入图像如下:

例子

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")
        }
    }
}



输出: