Java DIP - Miglioramento del contrasto dell'immagine

In questo capitolo viene illustrato come migliorare il contrasto di un'immagine utilizzando l'equalizzazione dell'istogramma.

Noi usiamo il OpenCV funzione equalizeHist()metodo. Può essere trovato sottoImgprocpacchetto. La sua sintassi è data di seguito:

Imgproc.equalizeHist(source, destination);

I parametri sono descritti di seguito:

Sr.No. Parametro e descrizione
1

Source

È un'immagine sorgente a canale singolo a 8 bit.

2

Destination

È l'immagine di destinazione.

Oltre al metodo equalizeHist (), ci sono altri metodi forniti dalla classe Imgproc. Sono descritti brevemente:

Sr.No. Metodo e descrizione
1

cvtColor(Mat src, Mat dst, int code, int dstCn)

Converte un'immagine da uno spazio colore a un altro.

2

dilate(Mat src, Mat dst, Mat kernel)

Dilata un'immagine utilizzando uno specifico elemento strutturante.

3

equalizeHist(Mat src, Mat dst)

Equalizza l'istogramma di un'immagine in scala di grigi.

4

filter2D(Mat src, Mat dst, int ddepth, Mat kernel, Point anchor, double delta)

Convolge un'immagine con il kernel.

5

GaussianBlur(Mat src, Mat dst, Size ksize, double sigmaX)

Sfoca un'immagine usando un filtro gaussiano.

6

integral(Mat src, Mat sum)

Calcola l'integrale di un'immagine.

Esempio

Il seguente esempio dimostra l'uso della classe Imgproc per migliorare il contrasto di un'immagine:

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;

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("grayscale.jpg", 
         Highgui.CV_LOAD_IMAGE_GRAYSCALE);
         Mat destination = new Mat(source.rows(),source.cols(),source.type());
         
         Imgproc.equalizeHist(source, destination);
         Highgui.imwrite("contrast.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 a contrasto migliorato