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 |
|