Java DIP - 增强图像亮度


在本章中,我们通过将图像的每个像素乘以一个 alpha 值并添加另一个 beta 值来增强图像的亮度。

我们的OpenCV函数convertTo会自动完成上述操作。它可以在Mat包下找到。其语法如下 -

int alpha = 2;
int beta = 50;
sourceImage.convertTo(destination, rtype , alpha, beta);		 

参数描述如下 -

先生。 参数及说明
1

目的地

这是目的地图像。

2

类型

这是所需的输出矩阵类型,或者更确切地说是深度,因为通道数与输入相同。如果 rtype 为负,则输出矩阵将具有与输入相同的类型。

3

α

它是可选的比例因子。

4

贝塔

它是添加到缩放值的可选增量。

除了convertTo方法之外,Mat类还提供了其他方法。它们被简要描述 -

先生。 方法及说明
1

调整ROI(int dtop,int dbottom,int dleft,int dright)

它调整子矩阵的大小和在父矩阵中的位置。

2

复制到(Mat m)

它将矩阵复制到另一个矩阵。

3

诊断()

它从矩阵中提取对角线,或创建对角矩阵。

4

点(垫米)

它计算两个向量的点积。

5

重塑(int cn)

它可以更改 2D 矩阵的形状和/或通道数,而无需复制数据。

6

submat(范围 rowRange, 范围 colRange)

它提取一个矩形子矩阵。

例子

以下示例演示了如何使用 Mat 类来增强图像的亮度 -

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;

public class Main {
   static int width;
   static int height;
   static double alpha = 2;
   static double beta = 50;
   
   public static void main( String[] args ) {
   
      try{
         System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
         Mat source =  Highgui.imread("digital_image_processing.jpg",Highgui.CV_LOAD_IMAGE_COLOR);
         Mat destination = new Mat(source.rows(),source.cols(),
         
         source.type());
         source.convertTo(destination, -1, alpha, beta);
         Highgui.imwrite("brightWithAlpha2Beta50.jpg", destination);
         
      } catch (Exception e) {
         System.out.println("error:" + e.getMessage());
      }
   }
}

输出

当您执行给定的代码时,会看到以下输出 -

原始图像

增强图像亮度教程

增强的明亮图像(Alpha=1 & Beta=50)

增强图像亮度教程

增强的明亮图像(Alpha=2 & Beta=50)

增强图像亮度教程