OpenCV - Operador Sobel

Utilizando el sobel operation, puede detectar los bordes de una imagen tanto en dirección horizontal como vertical. Puede aplicar la operación de sobel en una imagen usando el métodosobel(). A continuación se muestra la sintaxis de este método:

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

Este método acepta los siguientes parámetros:

  • src - Un objeto de la clase Mat que representa la imagen de origen (entrada).

  • dst - Un objeto de la clase Mat que representa la imagen de destino (salida).

  • ddepth - Una variable entera que representa la profundidad de la imagen (-1)

  • dx- Una variable entera que representa la derivada x. (0 o 1)

  • dy- Una variable entera que representa la derivada y. (0 o 1)

Ejemplo

El siguiente programa demuestra cómo realizar la operación Sobel en una imagen determinada.

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

Suponga que la siguiente es la imagen de entrada sobel_input.jpg especificado en el programa anterior.

Salida

Al ejecutar el programa, obtendrá el siguiente resultado:

Image Processed

Si abre la ruta especificada, puede observar la imagen de salida de la siguiente manera:

Variantes sobel

Al pasar diferentes valores al último a los parámetros (dx y dy) (entre 0 y 1), obtendrá diferentes salidas:

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

La siguiente tabla enumera varios valores para las variables dx y dy del método Sobel() y sus respectivos productos.

Derivado X Derivado de Y Salida
0 1
1 0
1 1