Java DIP - Zoomeffekt erstellen

Beim Zoomen wird ein Bild vergrößert, damit die Details im Bild sichtbarer und markanter werden.

Wir gebrauchen OpenCV Funktion resizeum das Zoomen auf Bilder anzuwenden. Es kann unter gefunden werdenImgprocPaket. Die Syntax ist unten angegeben -

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

In der Größenänderungsfunktion übergeben wir das Quellbild, das Zielbild und seine Größe, den Zoomfaktor und die zu verwendende Interpolationsmethode.

Die verfügbaren Interpolationsmethoden werden nachfolgend beschrieben -

Sr.Nr. Interpolationsmethode & Beschreibung
1

INTER_NEAREST

Es ist die Interpolation zum nächsten Nachbarn.

2

INTER_LINEAR

Es handelt sich um eine bilineare Interpolation (standardmäßig verwendet).

3

INTER_AREA

Es wird unter Verwendung der Pixelflächenbeziehung neu abgetastet. Es kann eine bevorzugte Methode zur Bilddezimierung sein, da es freiere Ergebnisse liefert.

4

INTER_CUBIC

Es ist eine bikubische Interpolation über eine 4x4-Pixel-Nachbarschaft.

5

INTER_LANCZOS4

Es ist eine Lanczos-Interpolation über eine Nachbarschaft von 8 x 8 Pixeln.

Neben der Größenänderungsmethode gibt es noch andere Methoden, die von der Imgproc-Klasse bereitgestellt werden. Sie werden kurz beschrieben -

Sr.Nr. Methode & Beschreibung
1

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

Es konvertiert ein Bild von einem Farbraum in einen anderen.

2

dilate(Mat src, Mat dst, Mat kernel)

Es erweitert ein Bild mithilfe eines bestimmten Strukturierungselements.

3

equalizeHist(Mat src, Mat dst)

Es gleicht das Histogramm eines Graustufenbildes aus.

4

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

Es faltet ein Bild mit dem Kernel.

5

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

Es verwischt ein Bild mit einem Gaußschen Filter.

6

integral(Mat src, Mat sum)

Es berechnet das Integral eines Bildes.

Beispiel

Das folgende Beispiel zeigt die Verwendung der Imgproc-Klasse zum Anwenden des Zooms auf ein Bild.

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

Ausgabe

Wenn Sie den angegebenen Code ausführen, wird die folgende Ausgabe angezeigt:

Original Bild

Vergrößertes Bild (Zoomfaktor - 2)