Java DIP - Tăng cường độ sáng hình ảnh

Trong chương này, chúng tôi nâng cao độ sáng của hình ảnh bằng cách nhân mỗi pixel của hình ảnh với một giá trị alpha và thêm một giá trị beta khác vào đó.

Chúng tôi OpenCV chức năng convertTođiều đó thực hiện các hoạt động trên một cách tự động. Nó có thể được tìm thấy dướiMatgói hàng. Cú pháp của nó được đưa ra dưới đây:

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

Các thông số được mô tả bên dưới:

Sr.No. Mô tả về Thông Số
1

destination

Nó là hình ảnh đích.

2

rtype

Đó là loại ma trận đầu ra mong muốn hoặc đúng hơn là độ sâu, vì số lượng kênh giống như đầu vào có. nếu rtype là âm, ma trận đầu ra sẽ có cùng loại với đầu vào.

3

alpha

Nó là hệ số tỷ lệ tùy chọn.

4

beta

Nó là delta tùy chọn được thêm vào các giá trị được chia tỷ lệ.

Ngoài phương thức convertTo, còn có các phương thức khác được cung cấp bởi lớp Mat. Chúng được mô tả ngắn gọn -

Sr.No. Phương pháp & Mô tả
1

adjustROI(int dtop, int dbottom, int dleft, int dright)

Nó điều chỉnh kích thước và vị trí của submatrix trong ma trận mẹ.

2

copyTo(Mat m)

Nó sao chép ma trận sang một ma trận khác.

3

diag()

Nó trích xuất một đường chéo từ ma trận hoặc tạo ma trận đường chéo.

4

dot(Mat m)

Nó tính tích một chấm của hai vectơ.

5

reshape(int cn)

Nó thay đổi hình dạng và / hoặc số lượng kênh của ma trận 2D mà không cần sao chép dữ liệu.

6

submat(Range rowRange, Range colRange)

Nó trích xuất một ma trận con hình chữ nhật.

Thí dụ

Ví dụ sau minh họa việc sử dụng lớp Mat để tăng cường độ sáng của hình ảnh:

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());
      }
   }
}

Đầu ra

Khi bạn thực thi mã đã cho, kết quả sau sẽ được nhìn thấy:

Ảnh gốc

Hình ảnh sáng nâng cao (Alpha = 1 & Beta = 50)

Hình ảnh sáng nâng cao (Alpha = 2 & Beta = 50)