OpenCV - Bildpyramiden

Pyramide ist eine Operation an einem Bild, bei der,

  • Ein Eingabebild wird anfänglich unter Verwendung eines bestimmten Glättungsfilters (z. B. Gauß, Laplace) geglättet, und dann wird das geglättete Bild unterabgetastet.

  • Dieser Vorgang wird mehrmals wiederholt.

Während des Pyramidenbetriebs wird die Glätte des Bildes erhöht und die Auflösung (Größe) verringert.

Pyramide nach oben

In Pyramid Up wird das Bild zunächst hochgesampelt und dann unscharf. Sie können die Pyramid Up-Operation für ein Bild mithilfe von ausführenpyrUP() Methode der imgprocKlasse. Es folgt die Syntax dieser Methode:

pyrUp(src, dst, dstsize, borderType)

Diese Methode akzeptiert die folgenden Parameter:

  • src - Ein Objekt der Klasse Mat Darstellen des Quellbildes (Eingabebildes).

  • mat - Ein Objekt der Klasse Mat Darstellen des Zielbildes (Ausgabebildes).

  • size - Ein Objekt der Klasse Size Darstellen der Größe, auf die das Bild vergrößert oder verkleinert werden soll.

  • borderType - Eine Variable vom Typ Integer, die den Typ des zu verwendenden Rahmens darstellt.

Beispiel

Das folgende Programm zeigt, wie der Pyramid Up-Vorgang für ein Bild ausgeführt wird.

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

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

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

      // Applying pyrUp on the Image
      Imgproc.pyrUp(src, dst, new Size(src.cols()*2,  src.rows()*2), Core.BORDER_DEFAULT);

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

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

Angenommen, das Folgende ist das Eingabebild pyramid_input.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:

Pyramide nach unten

In Pyramid Down wird das Bild zunächst unscharf und dann abgetastet. Sie können die Pyramid Down-Operation für ein Bild mithilfe von ausführenpyrDown() Methode der imgprocKlasse. Es folgt die Syntax dieser Methode:

pyrDown(src, dst, dstsize, borderType)

Diese Methode akzeptiert die folgenden Parameter:

  • src - Ein Objekt der Klasse Mat Darstellen des Quellbildes (Eingabebildes).

  • mat - Ein Objekt der Klasse Mat Darstellen des Zielbildes (Ausgabebildes).

  • size - Ein Objekt der Klasse Size Darstellen der Größe, auf die das Bild vergrößert oder verkleinert werden soll.

  • borderType - Eine Variable vom Typ Integer, die den Typ des zu verwendenden Rahmens darstellt.

Beispiel

Das folgende Programm zeigt, wie die Pyramid Down-Operation für ein Bild ausgeführt wird.

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

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

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

      // Applying pyrDown on the Image
      Imgproc.pyrDown(src, dst, new Size(src.cols()/2,  src.rows()/2),
         Core.BORDER_DEFAULT);

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

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

Angenommen, das Folgende ist das Eingabebild pyramid_input.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:

Mittlere Verschiebungsfilterung

Bei der Operation der mittleren Verschiebungspyramide wird ein erster Schritt der mittleren Verschiebungssegmentierung eines Bildes ausgeführt.

Sie können die Filterung der mittleren Schichtverschiebung einer Pyramide für ein Bild mithilfe von ausführen pyrDown() Methode der imgprocKlasse. Es folgt die Syntax dieser Methode.

pyrMeanShiftFiltering(src, dst, sp, sr)

Diese Methode akzeptiert die folgenden Parameter:

  • src - Ein Objekt der Klasse Mat Darstellen des Quellbildes (Eingabebildes).

  • mat - Ein Objekt der Klasse Mat Darstellen des Zielbildes (Ausgabebildes).

  • sp - Eine Variable vom Typ double, die den räumlichen Fensterradius darstellt.

  • sr - Eine Variable vom Typ double, die den Radius des Farbfensters darstellt.

Beispiel

Das folgende Programm zeigt, wie eine Filterung der mittleren Verschiebung für ein bestimmtes Bild ausgeführt wird.

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

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

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

      // Applying meanShifting on the Image
      Imgproc.pyrMeanShiftFiltering(src, dst, 200, 300);

      // Writing the image
      Imgcodecs.imwrite("E:/OpenCV/chap13/meanShift_output.jpg", dst);
      
      System.out.println("Image Processed");
   } 
}

Angenommen, das Folgende ist das Eingabebild pyramid_input.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: