Java DIP - Pirámides de imágenes

La pirámide de imágenes no es más que un método para mostrar una imagen de resolución múltiple. La capa más baja es una versión de la imagen con la resolución más alta y la capa más alta es una versión con la resolución más baja de la imagen. Las pirámides de imágenes se utilizan para manejar imágenes a diferentes escalas.

En este capítulo, realizamos un muestreo ascendente y descendente en las imágenes.

Usamos OpenCV funciones pyrUp y pyrDown. Se pueden encontrar enImgprocpaquete. Su sintaxis se da a continuación:

Imgproc.pyrUp(source, destination, destinationSize);
Imgproc.pyrDown(source, destination,destinationSize);

Los parámetros se describen a continuación:

No Señor. Descripción de parámetros
1

source

Es la imagen de origen.

2

destination

Es la imagen de destino.

3

destinationSize

Es el tamaño de la imagen de salida. De forma predeterminada, se calcula como Tamaño ((src.cols * 2), (src.rows * 2)).

Aparte de los métodos pyrUp y pyrDown, existen otros métodos proporcionados por la clase Imgproc. Se describen brevemente:

No Señor. Método y descripción
1

cvtColor(Mat src, Mat dst, int code, int dstCn)

Convierte una imagen de un espacio de color a otro.

2

dilate(Mat src, Mat dst, Mat kernel)

Dilata una imagen utilizando un elemento estructurante específico.

3

equalizeHist(Mat src, Mat dst)

Ecualiza el histograma de una imagen en escala de grises.

4

filter2D(Mat src, Mat dst, int depth, Mat kernel, Point anchor, double delta)

Convierte una imagen con el kernel.

5

GaussianBlur(Mat src, Mat dst, Size ksize, double sigmaX)

Desenfoca una imagen usando un filtro gaussiano.

6

integral(Mat src, Mat sum)

Calcula la integral de una imagen.

Ejemplo

El siguiente ejemplo demuestra el uso de la clase Imgproc para realizar muestreo ascendente y descendente en una imagen.

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.Size;

import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;

public class main {
   public static void main( String[] args ) {
   
      try{
      
         System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
         Mat source = Highgui.imread("digital_image_processing.jpg",
         Highgui.CV_LOAD_IMAGE_COLOR);
         
         Mat destination1 = new Mat(source.rows()*2, source.cols()*2,source.type());
         destination1 = source;
         
         Imgproc.pyrUp(source, destination1, new  Size(source.cols()*2   source.rows()*2));
         Highgui.imwrite("pyrUp.jpg", destination1);
         
         source = Highgui.imread("digital_image_processing.jpg", 
         Highgui.CV_LOAD_IMAGE_COLOR);
         
         Mat destination = new Mat(source.rows()/2,source.cols()/2, source.type());
         destination = source;
         Imgproc.pyrDown(source, destination, new Size(source.cols()/2,  source.rows()/2));
         Highgui.imwrite("pyrDown.jpg", destination);
         
      } catch (Exception e) { 
         System.out.println("error: " + e.getMessage());
      }
   }
}

Salida

Cuando ejecuta el código dado, se ve el siguiente resultado:

Imagen original

En la imagen original, se realizan pyrUp (UP Sampling) y pyrDown (Down Sampling). La salida después del muestreo es la que se muestra a continuación:

Imagen de PyrUP

pyrDown Image