Việc tăng/giảm độ sáng và độ tương phản của hình ảnh là các phép toán có thể thực hiện bằng cách biến đổi các pixel của hình ảnh. Điều này có thể biểu diễn dưới dạng phương trình:
g(i, j) = α · f(i, j) + β
Trong đó:
(i, j) là vị trí của các pixel.
α (gain) và β (bias) là các tham số của phép biến đổi.
Tham số gain kiểm soát độ tương phản, tham số bias kiểm soát độ sáng.
Phương thức convertTo() của lớp org.opencv.core.Mat thực hiện các phép tính cần thiết trên ma trận để thay đổi độ tương phản và độ sáng. Phương thức này chấp nhận 4 tham số:
mat – Ma trận rỗng để lưu kết quả với cùng kích thước và kiểu như ma trận nguồn.
rtype – Giá trị nguyên chỉ định kiểu ma trận đầu ra. Nếu âm, kiểu sẽ giống nguồn.
alpha – Giá trị gain, phải lớn hơn 0 (mặc định 1).
beta – Giá trị bias (mặc định 0).
Điều chỉnh độ tương phản hình ảnh bằng OpenCV Java
Như đã đề cập, giá trị alpha truyền vào phương thức này thay đổi độ tương phản. Nếu giá trị này nhỏ hơn 1 (giảm về 0), độ tương phản giảm. Nếu lớn hơn 1 (tăng lên 255), độ tương phản tăng.
Các bước điều chỉnh độ tương phản:
- Tải thư viện OpenCV native bằng loadLibrary().
- Đọc nội dung hình ảnh vào đối tượng Mat bằng imread().
- Tạo ma trận rỗng cùng kích thước và kiểu với ma trận ở bước trước.
- Gọi phương thức convertTo() với ma trận rỗng, -1 (giữ kiểu), giá trị alpha để tăng/giảm độ tương phản (0-1 hoặc 1-100) và beta = 0.
- Ghi ma trận kết quả ra file ảnh bằng Imgcodecs.imwrite().
Ví dụ
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
public class AlteringContrast {
public static void main(String[] args) {
// Tải thư viện lõi OpenCV
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// Đọc hình ảnh từ file
String file = "D:\\Images\\car3.jpg";
Mat src = Imgcodecs.imread(file, Imgcodecs.IMREAD_COLOR);
// Tạo ma trận rỗng
Mat dest = new Mat(src.rows(), src.cols(), src.type());
// Tăng độ tương phản của hình ảnh
src.convertTo(dest, -1, 10, 0);
// Ghi hình ảnh
Imgcodecs.imwrite("D:\\Images\\altering_contrast_10.jpg", dest);
}
}
Ảnh đầu vào

Dưới đây là các ảnh đầu ra với các giá trị alpha khác nhau:
α-value: 0.5

α-value: 0.8

α-value: 1.5

α-value: 2.0
