OpenCV - Unschärfe (Mittelwertbildung)

Unschärfe (Glättung) ist die häufig verwendete Bildverarbeitungsoperation zur Reduzierung des Bildrauschens. Der Prozess entfernt hochfrequente Inhalte wie Kanten aus dem Bild und macht es glatt.

Im Allgemeinen wird die Unschärfe durch Falten (jedes Element des Bildes wird zu seinen lokalen Nachbarn hinzugefügt, gewichtet durch den Kernel) des Bildes durch einen Tiefpassfilterkern erreicht.

Unschärfe (Mittelwertbildung)

Während dieses Vorgangs wird das Bild mit einem Boxfilter (normalisiert) gefaltet. Bei diesem Vorgang wird das zentrale Element des Bildes durch den Durchschnitt aller Pixel im Kernelbereich ersetzt.

Sie können diesen Vorgang mit der Methode für ein Bild ausführen blur() des imgprocKlasse. Es folgt die Syntax dieser Methode:

blur(src, dst, ksize, anchor, borderType)

Diese Methode akzeptiert die folgenden Parameter:

  • src - A. Mat Objekt, das die Quelle (Eingabebild) für diese Operation darstellt.

  • dst - A. Mat Objekt, das das Ziel (Ausgabebild) für diese Operation darstellt.

  • ksize - A. Size Objekt, das die Größe des Kernels darstellt.

  • anchor - Eine Variable vom Typ Integer, die den Ankerpunkt darstellt.

  • borderType - Eine Variable vom Typ Integer, die den Typ des Rahmens darstellt, der für die Ausgabe verwendet werden soll.

Beispiel

Das folgende Programm zeigt, wie die Mittelung (Unschärfe) für ein Bild ausgeführt wird.

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

Angenommen, das Folgende ist das Eingabebild sample.jpg im obigen Programm angegeben.

Ausgabe

Beim Ausführen des Programms erhalten Sie folgende Ausgabe:

Image Processed

Wenn Sie den angegebenen Pfad öffnen, können Sie das Ausgabebild wie folgt beobachten: