Java DIP - Poprawianie jasności obrazu

W tym rozdziale poprawiamy jasność obrazu, mnożąc każdy piksel obrazu przez wartość alfa i dodając do niego kolejną wartość beta.

My OpenCV funkcjonować convertToto wykonuje powyższą operację automatycznie. Można go znaleźć podMatpakiet. Jego składnia jest podana poniżej -

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

Parametry opisano poniżej -

Sr.No. Parametr i opis
1

destination

To jest obraz docelowy.

2

rtype

Jest to pożądany typ macierzy wyjściowej, a raczej głębokość, ponieważ liczba kanałów jest taka sama jak na wejściu. jeśli rtype jest ujemny, macierz wyjściowa będzie miała ten sam typ co wejście.

3

alpha

Jest to opcjonalny współczynnik skali.

4

beta

Jest to opcjonalna delta dodawana do skalowanych wartości.

Oprócz metody convertTo istnieją inne metody udostępniane przez klasę Mat. Są one krótko opisane -

Sr.No. Metoda i opis
1

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

Dostosowuje rozmiar i położenie podmacierzy w macierzy macierzystej.

2

copyTo(Mat m)

Kopiuje matrycę do innej.

3

diag()

Wydobywa przekątną z macierzy lub tworzy matrycę przekątną.

4

dot(Mat m)

Oblicza iloczyn skalarny dwóch wektorów.

5

reshape(int cn)

Zmienia kształt i / lub liczbę kanałów macierzy 2D bez kopiowania danych.

6

submat(Range rowRange, Range colRange)

Wydobywa prostokątną matrycę pomocniczą.

Przykład

Poniższy przykład demonstruje użycie klasy Mat w celu zwiększenia jasności obrazu -

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

Wynik

Po wykonaniu podanego kodu widoczne są następujące dane wyjściowe -

Oryginalny obraz

Ulepszony jasny obraz (Alpha = 1 i Beta = 50)

Ulepszony jasny obraz (alfa = 2 i beta = 50)