Java 數字影像處理 - 增強影像亮度



本章中,我們將透過將影像的每個畫素乘以一個 alpha 值並加上另一個 beta 值來增強影像的亮度。

我們使用OpenCV 函式convertTo來自動執行上述操作。它可以在Mat包中找到。其語法如下:

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

引數說明如下:

序號 引數及說明
1

destination

目標影像。

2

rtype

所需的輸出矩陣型別,更確切地說是深度,因為通道數與輸入相同。如果 rtype 為負,則輸出矩陣將與輸入具有相同的型別。

3

alpha

可選比例因子。

4

beta

新增到縮放值的可選增量。

除了 convertTo 方法外,Mat 類還提供了其他方法。簡要說明如下:

序號 方法及說明
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());
      }
   }
}

輸出

執行給定程式碼後,將看到以下輸出:

原始影像

Enhancing Image Brightness Tutorial

增強亮度影像 (Alpha=1 & Beta=50)

Enhancing Image Brightness Tutorial

增強亮度影像 (Alpha=2 & Beta=50)

Enhancing Image Brightness Tutorial
廣告
© . All rights reserved.