Java DIP - Görüntü Piramitleri

Görüntü piramidi, çok çözünürlüklü bir görüntüyü gösterme yönteminden başka bir şey değildir. En alt katman, görüntünün en yüksek çözünürlüklü sürümüdür ve en üst katman, görüntünün en düşük çözünürlüklü sürümüdür. Görüntü piramitleri, farklı ölçeklerdeki görüntüyü işlemek için kullanılır.

Bu bölümde, görüntüler üzerinde bazı aşağı örnekleme ve yukarı örnekleme gerçekleştiriyoruz.

Kullanırız OpenCV fonksiyonlar pyrUp ve pyrDown. Altında bulunabilirImgprocpaketi. Söz dizimi aşağıda verilmiştir -

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

Parametreler aşağıda açıklanmıştır -

Sr.No. Parametre ve Açıklama
1

source

Kaynak görüntüdür.

2

destination

Hedef görüntüdür.

3

destinationSize

Çıktı görüntüsünün boyutudur. Varsayılan olarak, Boyut ((src.cols * 2), (src.rows * 2)) olarak hesaplanır.

PyrUp ve pyrDown yöntemlerinden ayrı olarak, Imgproc sınıfı tarafından sağlanan başka yöntemler de vardır. Kısaca açıklanmıştır -

Sr.No. Yöntem ve Açıklama
1

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

Bir görüntüyü bir renk uzayından diğerine dönüştürür.

2

dilate(Mat src, Mat dst, Mat kernel)

Belirli bir yapılandırma öğesi kullanarak bir görüntüyü genişletir.

3

equalizeHist(Mat src, Mat dst)

Gri tonlamalı bir görüntünün histogramını eşitler.

4

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

Çekirdek ile bir görüntüyü birleştirir.

5

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

Bir Gauss filtresi kullanarak bir görüntüyü bulanıklaştırır.

6

integral(Mat src, Mat sum)

Bir görüntünün integralini hesaplar.

Misal

Aşağıdaki örnek, bir görüntü üzerinde yukarı örnekleme ve aşağı örnekleme gerçekleştirmek için Imgproc sınıfının kullanımını gösterir.

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

Çıktı

Verilen kodu çalıştırdığınızda, aşağıdaki çıktı görülür -

Gerçek görüntü

Orijinal görüntüde, pyrUp (YUKARI Örnekleme) ve pyrDown (Aşağı Örnekleme) gerçekleştirilir. Örneklemeden sonraki çıktı aşağıda gösterildiği gibidir -

PyrUP Görüntüsü

pyrDown Görüntüsü