OpenCV - Pirámides de imágenes

Pyramid es una operación en una imagen donde,

  • Una imagen de entrada se suaviza inicialmente utilizando un filtro de suavizado particular (por ejemplo, gaussiano, laplaciano) y luego se submuestrea la imagen suavizada.

  • Este proceso se repite varias veces.

Durante la operación piramidal, la suavidad de la imagen aumenta y la resolución (tamaño) disminuye.

Pirámide arriba

En Pyramid Up, la imagen se muestra inicialmente y luego se difumina. Puede realizar la operación Pyramid Up en una imagen usando elpyrUP() método del imgprocclase. A continuación se muestra la sintaxis de este método:

pyrUp(src, dst, dstsize, borderType)

Este método acepta los siguientes parámetros:

  • src - Un objeto de la clase Mat que representa la imagen de origen (entrada).

  • mat - Un objeto de la clase Mat que representa la imagen de destino (salida).

  • size - Un objeto de la clase Size que representa el tamaño al que se va a aumentar o disminuir la imagen.

  • borderType - Una variable de tipo entero que representa el tipo de borde que se utilizará.

Ejemplo

El siguiente programa demuestra cómo realizar la operación Pyramid Up en una imagen.

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

Suponga que la siguiente es la imagen de entrada pyramid_input.jpg especificado en el programa anterior.

Salida

Al ejecutar el programa, obtendrá el siguiente resultado:

Image Processed

Si abre la ruta especificada, puede observar la imagen de salida de la siguiente manera:

Pirámide abajo

En Pyramid Down, la imagen se difumina inicialmente y luego se reduce la muestra. Puede realizar la operación Pyramid Down en una imagen usando elpyrDown() método del imgprocclase. A continuación se muestra la sintaxis de este método:

pyrDown(src, dst, dstsize, borderType)

Este método acepta los siguientes parámetros:

  • src - Un objeto de la clase Mat que representa la imagen de origen (entrada).

  • mat - Un objeto de la clase Mat que representa la imagen de destino (salida).

  • size - Un objeto de la clase Size que representa el tamaño al que se va a aumentar o disminuir la imagen.

  • borderType - Una variable de tipo entero que representa el tipo de borde que se utilizará.

Ejemplo

El siguiente programa demuestra cómo realizar la operación Pyramid Down en una imagen.

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

Suponga que la siguiente es la imagen de entrada pyramid_input.jpg especificado en el programa anterior.

Salida

Al ejecutar el programa, obtendrá el siguiente resultado:

Image Processed

Si abre la ruta especificada, puede observar la imagen de salida de la siguiente manera:

Filtrado de cambio medio

En la operación de pirámide de cambio medio, se lleva a cabo un paso inicial de segmentación del cambio medio de una imagen.

Puede realizar la operación de filtrado de cambio medio piramidal en una imagen utilizando el pyrDown() método del imgprocclase. A continuación se muestra la sintaxis de este método.

pyrMeanShiftFiltering(src, dst, sp, sr)

Este método acepta los siguientes parámetros:

  • src - Un objeto de la clase Mat que representa la imagen de origen (entrada).

  • mat - Un objeto de la clase Mat que representa la imagen de destino (salida).

  • sp - Una variable de tipo double que representa el radio espacial de la ventana.

  • sr - Una variable del tipo double que representa el radio de la ventana de color.

Ejemplo

El siguiente programa demuestra cómo realizar una operación de filtrado de cambio medio en una imagen determinada.

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

Suponga que la siguiente es la imagen de entrada pyramid_input.jpg especificado en el programa anterior.

Salida

Al ejecutar el programa, obtendrá el siguiente resultado:

Image Processed

Si abre la ruta especificada, puede observar la imagen de salida de la siguiente manera: