Java DIP - Créer un effet de zoom

Le zoom est le processus d'agrandissement d'une image afin que les détails de l'image deviennent plus visibles et proéminents.

Nous utilisons OpenCV fonction resizepour appliquer le zoom aux images. Il peut être trouvé sousImgprocpaquet. Sa syntaxe est donnée ci-dessous -

Imgproc.resize(source,destination, destination.size(),zoomFactor,zoomFactor,Interpolation);

Dans la fonction de redimensionnement, nous transmettons l'image source, l'image de destination et sa taille, le facteur de zoom et la méthode d'interpolation à utiliser.

Les méthodes d'interpolation disponibles sont décrites ci-dessous -

N ° Sr. Méthode d'interpolation et description
1

INTER_NEAREST

C'est l'interpolation du plus proche voisin.

2

INTER_LINEAR

Il s'agit d'une interpolation bilinéaire (utilisée par défaut).

3

INTER_AREA

Il est rééchantillonné en utilisant la relation de zone de pixel. C'est peut-être une méthode préférée pour la décimation d'image, car elle donne des résultats plus libres.

4

INTER_CUBIC

Il s'agit d'une interpolation bi-cubique sur un voisinage de 4 x 4 pixels.

5

INTER_LANCZOS4

Il s'agit d'une interpolation de Lanczos sur un voisinage de 8x8 pixels.

Outre la méthode de redimensionnement, il existe d'autres méthodes fournies par la classe Imgproc. Ils sont décrits brièvement -

N ° Sr. Méthode et description
1

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

Il convertit une image d'un espace colorimétrique à un autre.

2

dilate(Mat src, Mat dst, Mat kernel)

Il dilate une image en utilisant un élément structurant spécifique.

3

equalizeHist(Mat src, Mat dst)

Il égalise l'histogramme d'une image en niveaux de gris.

4

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

Il convolve une image avec le noyau.

5

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

Il brouille une image à l'aide d'un filtre gaussien.

6

integral(Mat src, Mat sum)

Il calcule l'intégrale d'une image.

Exemple

L'exemple suivant illustre l'utilisation de la classe Imgproc pour appliquer le zoom à une image.

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

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

public class Main {
   public static void main( String[] args ) {
   
      try {
         int zoomingFactor = 2;
         System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
         
         Mat source = Highgui.imread("image.jpg", Highgui.CV_LOAD_IMAGE_GRAYSCALE);
         Mat destination = new Mat(source.rows() * zoomingFactor, source.cols()*  zoomingFactor,source.type());  
         
         Imgproc.resize(source, destination, destination.size(),  zoomingFactor,zoomingFactor,Imgproc.INTER_NEAREST);
         Highgui.imwrite("zoomed.jpg", destination);
         
      } catch (Exception e) {
         System.out.println("Error: "+e.getMessage());
      }
   }
}

Production

Lorsque vous exécutez le code donné, la sortie suivante est vue -

Image originale

Image agrandie (facteur de zoom - 2)