Java DIP - 增强图像亮度
在本章中,我们通过将图像的每个像素与 alpha 值相乘并向其添加另一个 beta 值来增强图像的亮度。
我们 OpenCV 函数 convertTo 自动执行上述操作。它可以在 Mat 包下找到。它的语法如下 −
int alpha = 2; int beta = 50; sourceImage.convertTo(destination, rtype , alpha, beta);
参数如下 −
| Sr.No. | 参数和说明 |
|---|---|
| 1 |
destination 它是目标图像。 |
| 2 |
rtype 它是所需的输出矩阵类型,或者更确切地说是深度,因为通道数与输入相同。如果 rtype 为负数,则输出矩阵将具有与输入相同的类型。 |
| 3 |
alpha 它是可选的比例因子。 |
| 4 |
beta 它是添加到缩放值的可选增量。 |
除了 convertTo 方法之外,Mat 类还提供了其他方法。它们被简要描述 −
| Sr.No. | 方法 &描述 |
|---|---|
| 1 |
adjustROI(int dtop, int dbottom, int dleft, int dright) 调整子矩阵在父矩阵中的大小和位置。 |
| 2 |
copyTo(Mat m) 将矩阵复制到另一个矩阵。 |
| 3 |
diag() 从矩阵中提取对角线,或创建对角线矩阵。 |
| 4 |
dot(Mat m) 计算两个向量的点积。 |
| 5 |
reshape(int cn) 改变二维矩阵的形状和/或通道数而不复制数据。 |
| 6 |
submat(Range rowRange, Range 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)

