OpenCV - Flou (moyenne)

Le flou (lissage) est l'opération de traitement d'image couramment utilisée pour réduire le bruit de l'image. Le processus supprime le contenu haute fréquence, comme les bords, de l'image et la rend lisse.

En général, le flou est obtenu par convolution (chaque élément de l'image est ajouté à ses voisins locaux, pondérés par le noyau) l'image à travers un noyau de filtre passe-bas.

Flou (moyenne)

Lors de cette opération, l'image est convoluée avec un filtre boîte (normalisé). Dans ce processus, l'élément central de l'image est remplacé par la moyenne de tous les pixels de la zone du noyau.

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

blur(src, dst, ksize, anchor, 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.

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

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

  • borderType - Une variable de type entier représentant le type de bordure à utiliser pour la sortie.

Exemple

Le programme suivant montre comment effectuer l'opération de moyennage (flou) 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 BlurTest {
   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 ="C:/EXAMPLES/OpenCV/sample.jpg";
      Mat src = Imgcodecs.imread(file);

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

      // Creating the Size and Point objects
      Size size = new Size(45, 45);
      Point point = new Point(20, 30);

      // Applying Blur effect on the Image
      Imgproc.blur(src, dst, size, point, Core.BORDER_DEFAULT);

      // blur(Mat src, Mat dst, Size ksize, Point anchor, int borderType)
      // Writing the image
      Imgcodecs.imwrite("E:/OpenCV/chap9/blur.jpg", dst);
      System.out.println("Image processed");
   }
}

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