OpenCV - Opérateur Sobel

En utilisant le sobel operation, vous pouvez détecter les bords d'une image dans les directions horizontale et verticale. Vous pouvez appliquer l'opération Sobel sur une image en utilisant la méthodesobel(). Voici la syntaxe de cette méthode -

Sobel(src, dst, ddepth, dx, dy)

Cette méthode accepte les paramètres suivants -

  • src - Un objet de la classe Mat représentant l'image source (entrée).

  • dst - Un objet de la classe Mat représentant l'image de destination (sortie).

  • ddepth - Une variable entière représentant la profondeur de l'image (-1)

  • dx- Une variable entière représentant la dérivée x. (0 ou 1)

  • dy- Une variable entière représentant la dérivée y. (0 ou 1)

Exemple

Le programme suivant montre comment effectuer une opération Sobel sur une image donnée.

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

import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class SobelTest {
   public static void main(String args[]) {
      // Loading the OpenCV core library
      System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

      // Reading the Image from the file and storing it in to a Matrix object
      String file ="E:/OpenCV/chap16/sobel_input.jpg";
      Mat src = Imgcodecs.imread(file);

      // Creating an empty matrix to store the result
      Mat dst = new Mat();

      // Applying sobel on the Image
      Imgproc.Sobel(src, dst, -1, 1, 1);

      // Writing the image
      Imgcodecs.imwrite("E:/OpenCV/chap16/sobel_output.jpg", dst);

      System.out.println("Image processed");
   }
}

Supposons que ce qui suit est l'image d'entrée sobel_input.jpg spécifié dans le programme ci-dessus.

Production

Lors de l'exécution du programme, vous obtiendrez la sortie suivante -

Image Processed

Si vous ouvrez le chemin spécifié, vous pouvez observer l'image de sortie comme suit -

Variantes sobel

En passant différentes valeurs au dernier aux paramètres (dx et dy) (entre 0 et 1), vous obtiendrez différentes sorties -

// Applying sobel on the Image
Imgproc.Sobel(src, dst, -1, 1, 1);

Le tableau suivant répertorie différentes valeurs pour les variables dx et dy de la méthode Sobel() et leurs résultats respectifs.

Dérivé X Dérivé Y Production
0 1
1 0
1 1