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: