Việc tăng / giảm độ sáng và độ tương phản của hình ảnh là các hoạt động có thể đạt được bằng cách biến đổi các pixel của hình ảnh. điều này có thể được biểu thị dưới dạng một phương trình là -
g(i, j) = α . f(i, j)+ β
Ở đâu,
-
(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.
-
Đôi khi, tham số khuếch đại kiểm soát độ tương phản của hình ảnh và tham số thiên vị kiểm soát độ sáng của hình ảnh.
convertTo () phương thức của org.opencv.core.Mat lớp thực hiện các phép tính cần thiết trên ma trận đã cho để thay đổi độ tương phản và độ sáng của hình ảnh. Phương thức này chấp nhận 4 tham số -
-
thảm - Ma trận trống để chứa kết quả có cùng kích thước và kiểu với ma trận nguồn.
-
loại - giá trị số nguyên xác định kiểu của ma trận đầu ra. Nếu giá trị này là âm, loại sẽ giống với nguồn.
-
alpha - Giá trị tăng, phải lớn hơn 0 (giá trị mặc định 1).
-
beta - Giá trị thiên vị (giá trị mặc định 0).
Thay đổi độ tương phản của hình ảnh bằng thư viện OpenCV Java
Như đã đề cập, giá trị alpha được truyền cho phương thức này làm thay đổi độ tương phản của hình ảnh động, nếu giá trị được chọn cho tham số này nhỏ hơn 1 (đến 0) thì độ tương phản của hình ảnh sẽ giảm. Tương tự, nếu nó lớn hơn 1 (đến 255) thì độ tương phản của hình ảnh sẽ tăng lên.
Để thay đổi độ tương phản của hình ảnh -
-
Tải thư viện gốc OpenCV bằng phương thức loadLibrary ().
-
Đọc nội dung của hình ảnh mong muốn sang đối tượng Mat bằng phương thức imread ().
-
Tạo một ma trận trống có cùng kích thước và kiểu với ma trận thu được ở bước trước.
-
Gọi convertTo () bằng cách chuyển ma trận trống, -1 (để nhận cùng một loại), giá trị alpha để tăng hoặc giảm độ tương phản (0-1 hoặc, 1-100) và, 0 dưới dạng giá trị beta.
-
Viết nội dung của ma trận kết quả dưới dạng hình ảnh đầu ra bằng phương thứcImgcodecs.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) { //Loading the OpenCV core library System.loadLibrary( Core.NATIVE_LIBRARY_NAME ); //Reading the Image from the file String file ="D:\\Images\\car3.jpg"; Mat src = Imgcodecs.imread(file, Imgcodecs.IMREAD_COLOR); //Creating an empty matrix Mat dest = new Mat(src.rows(), src.cols(), src.type()); //Increasing the contrast of the image src.convertTo(dest, -1, 10, 0); // Writing the image Imgcodecs.imwrite("D:\\Images\\altering_contrast_10.jpg", dest); } }
Hình ảnh đầu vào
Sau đây là các hình ảnh đầu ra khác nhau cho các alpha khác nhau giá trị -
α-value:0,5
α-value:0,8
α-value:1,5
α-value:2.0