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 -