Java DIP - Amélioration de la luminosité de l'image

Dans ce chapitre, nous améliorons la luminosité d'une image en multipliant chaque pixel de l'image par une valeur alpha et en lui ajoutant une autre valeur bêta.

nous OpenCV fonction convertToqui effectue l'opération ci-dessus automatiquement. Il peut être trouvé sousMatpaquet. Sa syntaxe est donnée ci-dessous -

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

Les paramètres sont décrits ci-dessous -

N ° Sr. Paramètre et description
1

destination

C'est l'image de destination.

2

rtype

C'est le type de matrice de sortie souhaité ou, plutôt la profondeur, car le nombre de canaux est le même que celui de l'entrée. si rtype est négatif, la matrice de sortie aura le même type que l'entrée.

3

alpha

C'est un facteur d'échelle facultatif.

4

beta

Il s'agit d'un delta facultatif ajouté aux valeurs mises à l'échelle.

Outre la méthode convertTo, il existe d'autres méthodes fournies par la classe Mat. Ils sont décrits brièvement -

N ° Sr. Méthode et description
1

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

Il ajuste la taille et la position d'une sous-matrice dans la matrice parente.

2

copyTo(Mat m)

Il copie la matrice sur une autre.

3

diag()

Il extrait une diagonale d'une matrice ou crée une matrice diagonale.

4

dot(Mat m)

Il calcule un produit scalaire de deux vecteurs.

5

reshape(int cn)

Il change la forme et / ou le nombre de canaux d'une matrice 2D sans copier les données.

6

submat(Range rowRange, Range colRange)

Il extrait une sous-matrice rectangulaire.

Exemple

L'exemple suivant montre l'utilisation de la classe Mat pour améliorer la luminosité d'une image -

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

Production

Lorsque vous exécutez le code donné, la sortie suivante est vue -

Image originale

Image lumineuse améliorée (alpha = 1 et bêta = 50)

Image lumineuse améliorée (alpha = 2 et bêta = 50)