Java中的图像处理 - 清晰度增强
先决条件:
- Java中的图像处理——读写
- Java中的图像处理——获取和设置像素
- Java中的图像处理——彩色图像到灰度图像的转换
- Java中的图像处理——彩色图像到负图像的转换
- Java中的图像处理——彩色到红绿蓝图像的转换
- Java中的图像处理——彩色图像到棕褐色图像的转换
- Java中的图像处理——创建随机像素图像
- Java中的图像处理——创建镜像
- Java中的图像处理——人脸检测
- Java中的图像处理——给图像加水印
- Java中的图像处理——改变图像的方向
- Java中的图像处理——对比度增强
- Java中的图像处理——亮度增强
- Java中的图像处理——两个图像的比较
Tip: It is recommended to use eclipse for the same since it is easy to use and set up.
在这里,我们将使用高斯滤波器。此滤镜可减少图像中的噪点并使其看起来更好(或更高的分辨率)。完成安装 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")
}
}
}
输出:
Note: Do notice a minor improvement in resolution