Java DIP - Miglioramento della luminosità dell'immagine

In questo capitolo miglioriamo la luminosità di un'immagine moltiplicando ogni pixel dell'immagine con un valore alfa e aggiungendovi un altro valore beta.

Noi OpenCV funzione convertToche esegue automaticamente l'operazione di cui sopra. Può essere trovato sottoMatpacchetto. La sua sintassi è data di seguito:

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

I parametri sono descritti di seguito:

Sr.No. Parametro e descrizione
1

destination

È l'immagine di destinazione.

2

rtype

È il tipo di matrice di output desiderato o, piuttosto, la profondità, poiché il numero di canali è lo stesso dell'ingresso. se rtype è negativo, la matrice di output avrà lo stesso tipo dell'input.

3

alpha

È un fattore di scala opzionale.

4

beta

È delta opzionale aggiunto ai valori in scala.

Oltre al metodo convertTo, ci sono altri metodi forniti dalla classe Mat. Sono descritti brevemente:

Sr.No. Metodo e descrizione
1

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

Regola le dimensioni e la posizione di una sottomatrice all'interno della matrice genitore.

2

copyTo(Mat m)

Copia la matrice su un'altra.

3

diag()

Estrae una diagonale da una matrice o crea una matrice diagonale.

4

dot(Mat m)

Calcola un prodotto scalare di due vettori.

5

reshape(int cn)

Cambia la forma e / o il numero di canali di una matrice 2D senza copiare i dati.

6

submat(Range rowRange, Range colRange)

Estrae una matrice secondaria rettangolare.

Esempio

Il seguente esempio dimostra l'uso della classe Mat per migliorare la luminosità di un'immagine:

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

Produzione

Quando esegui il codice dato, viene visualizzato il seguente output:

Immagine originale

Immagine luminosa migliorata (Alpha = 1 e Beta = 50)

Immagine luminosa migliorata (Alpha = 2 e Beta = 50)