Java DIP - Opérateur laplacien

L'opérateur laplacien est également un opérateur dérivé utilisé pour trouver les bords d'une image. La principale différence entre laplacien et d'autres opérateurs tels que Prewitt, Sobel, Robinson et Kirsch est que ce sont tous des masques dérivés du premier ordre, mais le laplacien est un masque dérivé du second ordre.

Nous utilisons OpenCV fonction filter2Dpour appliquer l'opérateur laplacien aux images. Il peut être trouvé sousImgprocpaquet. Sa syntaxe est donnée ci-dessous -

filter2D(src, dst, depth , kernel, anchor, delta, BORDER_DEFAULT );

Les arguments de la fonction sont décrits ci-dessous -

N ° Sr. Arguments
1

src

C'est l'image source.

2

dst

C'est l'image de destination.

3

depth

C'est la profondeur de dst. Une valeur négative (telle que -1) indique que la profondeur est la même que la source.

4

kernel

C'est le noyau à numériser à travers l'image.

5

anchor

C'est la position de l'ancre par rapport à son noyau. Le point de localisation (-1, -1) indique le centre par défaut.

6

delta

C'est une valeur à ajouter à chaque pixel lors de la convolution. Par défaut, il est 0.

sept

BORDER_DEFAULT

Nous laissons cette valeur par défaut.

En dehors de la méthode filter2D (), il existe d'autres méthodes fournies par la classe Imgproc. Ils sont décrits brièvement -

N ° Sr. Méthode et description
1

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

Il convertit une image d'un espace colorimétrique à un autre.

2

dilate(Mat src, Mat dst, Mat kernel)

Il dilate une image en utilisant un élément structurant spécifique.

3

equalizeHist(Mat src, Mat dst)

Il égalise l'histogramme d'une image en niveaux de gris.

4

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

Il convolve une image avec le noyau.

5

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

Il brouille une image à l'aide d'un filtre gaussien.

6

integral(Mat src, Mat sum)

Il calcule l'intégrale d'une image.

Exemple

L'exemple suivant illustre l'utilisation de la classe Imgproc pour appliquer l'opérateur laplacien à une image en niveaux de gris.

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;

import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;

public class convolution {
   public static void main( String[] args ) {
   
      try {
         int kernelSize = 9;
         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());

         Mat kernel = new Mat(kernelSize,kernelSize, CvType.CV_32F) {
            {
               put(0,0,0);
               put(0,1,-1)
               put(0,2,0);

               put(1,0-1);
               put(1,1,4);
               put(1,2,-1);

               put(2,0,0);
               put(2,1,-1);
               put(2,2,0);
            }
         };	      
         
         Imgproc.filter2D(source, destination, -1, kernel);
         Highgui.imwrite("output.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

Cette image originale est convoluée avec l'opérateur Négatif Laplacien comme indiqué ci-dessous -

Négatif laplacien

0 -1 0
-1 4 -1
0 -1 0

Image convolue (négatif laplacien)

Cette image originale est convoluée avec l'opérateur positif laplacien comme indiqué ci-dessous -

Laplacien positif

0 1 0
1 -4 1
0 1 0

Image convoluée (Laplacian Positive)