Computer >> Máy Tính >  >> Lập trình >> Java

Làm cách nào để thay đổi độ tương phản của hình ảnh bằng thư viện Java OpenCV?

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

Làm cách nào để thay đổi độ tương phản của hình ảnh bằng thư viện Java OpenCV?

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

Làm cách nào để thay đổi độ tương phản của hình ảnh bằng thư viện Java OpenCV?

α-value:0,8

Làm cách nào để thay đổi độ tương phản của hình ảnh bằng thư viện Java OpenCV?

α-value:1,5

Làm cách nào để thay đổi độ tương phản của hình ảnh bằng thư viện Java OpenCV?

α-value:2.0

Làm cách nào để thay đổi độ tương phản của hình ảnh bằng thư viện Java OpenCV?