OpenCV - Filtre bilatéral

Le filtrage d'image vous permet d'appliquer divers effets à une image. Dans ce chapitre et les trois chapitres suivants, nous allons discuter de diverses opérations de filtrage telles que Bilateral Filter, Box Filter, SQR Box Filter et Filter2D.

Filtre bilatéral

L'opération Filtre bilatéral applique une image bilatérale à un filtre. Vous pouvez effectuer cette opération sur une image en utilisant lemedianBlur() méthode de la imgprocclasse. Voici la syntaxe de cette méthode.

bilateralFilter(src, dst, d, sigmaColor, sigmaSpace, borderType)

Cette méthode accepte les paramètres suivants -

  • src - Un Mat objet représentant la source (image d'entrée) de cette opération.

  • dst - Un Mat objet représentant la destination (image de sortie) de cette opération.

  • d - Une variable de type entier représentant le diamètre du voisinage des pixels.

  • sigmaColor - Une variable de type entier représentant le sigma du filtre dans l'espace colorimétrique.

  • sigmaSpace - Une variable de type entier représentant le sigma du filtre dans l'espace de coordonnées.

  • borderType - Un objet entier représentant le type de bordure utilisée.

Exemple

Le programme suivant montre comment effectuer l'opération de filtre bilatéral sur une image.

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class BilateralFilter {
   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/chap11/filter_input.jpg";
      Mat src = Imgcodecs.imread(file);

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

      // Applying Bilateral filter on the Image
      Imgproc.bilateralFilter(src, dst, 15, 80, 80, Core.BORDER_DEFAULT);

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

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

Supposons que ce qui suit est l'image d'entrée filter_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 -