📜  Java中的图像处理——亮度增强

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

Java中的图像处理——亮度增强

先决条件:

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

图像的亮度可以通过将图像的每个像素乘以一个 alpha 值,然后添加一个 beta 值来增强。

使用Java增强图像的亮度

首先,我们需要为Java设置 OpenCV,我们建议使用 eclipse,因为它易于使用和设置。现在让我们讨论一个具体的方法。用于亮度增强的如下:

方法一: convertTo(destination, rtype, alpha, beta):它位于 OpenCV 的 Mat 包中。

句法:

sourceImage.convertTo(destination, rtype, alpha, beta);

参数:

  • 目的地图片
  • 所需的输出矩阵类型
  • 可选比例因子乘以源图像的每个像素
  • 添加到缩放值的可选 beta 值。

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

句法:

Imgcodecs.imread(filename);

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

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

句法:

Imgcodecs.imwrite(filename, mat_img); 

参数:

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

实施:我们将在输出图像旁边说明图像以展示差异。

Java
// Java Program to Enhance Brightness of An Image
// Using OpenCV Library
 
// Importing package module to this code fragment
package ocv;
// Importing required classes
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
 
// Main class
public class GFG {
 
    // Initializing variables for an image
    static int width;
    static int height;
    static double alpha = 1;
    static double beta = 50;
 
    // 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);
 
            // Getting input image by
            // creating object of Mat class from local
            // directory
            Mat source = Imgcodecs.imread(
                "E://input.jpg",
                Imgcodecs.CV_LOAD_IMAGE_COLOR);
 
            Mat destination
                = new Mat(source.rows(), source.cols(),
                          source.type());
 
            // Applying brightness enhancement
            source.convertTo(destination, -1, alpha, beta);
 
            // Output image
            Imgcodecs.imwrite("E://output.jpg",
                              destination);
        }
 
        // Catch block to handle exceptions
        catch (Exception e) {
 
            // Print the exception on console
            // using getMessage() method
            System.out.println("error: " + e.getMessage());
        }
    }
}


输出:

Brightness Enhancement

用例 1:输入图像

输出 1:

输出 2:

输出 3: