OpenCV - Filtre de boîte

L'opération de filtre de boîte est similaire à l'opération de flou de moyennage; il applique une image bilatérale à un filtre. Ici, vous pouvez choisir si la boîte doit être normalisée ou non.

Vous pouvez effectuer cette opération sur une image en utilisant le boxFilter() méthode de la imgprocclasse. Voici la syntaxe de cette méthode -

boxFilter(src, dst, ddepth, ksize, anchor, normalize, 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.

  • ddepth - Une variable de type entier représentant la profondeur de l'image de sortie.

  • ksize - Un Size objet représentant la taille du noyau de flou.

  • anchor - Une variable de type entier représentant le point d'ancrage.

  • Normalize - Une variable de type booléen spécifiant le temps que le noyau doit être normalisé.

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

Exemple

Le programme suivant montre comment effectuer l'opération Box Filter sur une image.

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

public class BoxFilterTest {
   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();

      // Creating the objects for Size and Point
      Size size = new Size(45, 45);
      Point point = Point(-1, -1);

      // Applying Box Filter effect on the Image
      Imgproc.boxFilter(src, dst, 50, size, point, true, Core.BORDER_DEFAULT);

      // Writing the image
      Imgcodecs.imwrite("E:/OpenCV/chap11/boxfilterjpg", 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 -