OpenCV - Görüntü Piramitleri

Piramit, bir görüntü üzerinde bir işlemdir.

  • Bir girdi görüntüsü, başlangıçta belirli bir yumuşatma filtresi (ör: Gauss, Laplacian) kullanılarak düzleştirilir ve ardından düzleştirilmiş görüntü alt örneklenir.

  • Bu işlem birçok kez tekrarlanır.

Piramit işlemi sırasında görüntünün düzgünlüğü artırılır ve çözünürlüğü (boyutu) azaltılır.

Piramit Yukarı

Pyramid Up'ta, görüntü başlangıçta yukarı örneklenir ve ardından bulanıklaştırılır. Pyramid Up işlemini bir görüntü üzerinde,pyrUP() yöntemi imgprocsınıf. Bu yöntemin sözdizimi aşağıdadır -

pyrUp(src, dst, dstsize, borderType)

Bu yöntem aşağıdaki parametreleri kabul eder -

  • src - Sınıfın bir nesnesi Mat kaynak (giriş) görüntüsünü temsil eder.

  • mat - Sınıfın bir nesnesi Mat hedef (çıktı) görüntüsünü temsil eder.

  • size - Sınıfın bir nesnesi Size görüntünün artırılacağı veya azaltılacağı boyutu temsil eder.

  • borderType - Kullanılacak kenarlık türünü temsil eden tam sayı türünde bir değişken.

Misal

Aşağıdaki program, bir görüntü üzerinde Pyramid Up işleminin nasıl gerçekleştirileceğini gösterir.

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class PyramidUp {
   public static void main( String[] args ) {
      // Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );

      // Reading the Image from the file and storing it in to a Matrix object
      String file ="E:/OpenCV/chap13/pyramid_input.jpg";
      Mat src = Imgcodecs.imread(file);

      // Creating an empty matrix to store the result
      Mat dst = new Mat();

      // Applying pyrUp on the Image
      Imgproc.pyrUp(src, dst, new Size(src.cols()*2,  src.rows()*2), Core.BORDER_DEFAULT);

      // Writing the image
      Imgcodecs.imwrite("E:/OpenCV/chap13/pyrUp_output.jpg", dst);

      System.out.println("Image Processed");
   }
}

Aşağıdakinin giriş görüntüsü olduğunu varsayalım pyramid_input.jpg yukarıdaki programda belirtilmiştir.

Çıktı

Programı çalıştırırken aşağıdaki çıktıyı alacaksınız -

Image Processed

Belirtilen yolu açarsanız, çıktı görüntüsünü aşağıdaki gibi gözlemleyebilirsiniz -

Piramit Aşağı

Pyramid Down'da, görüntü başlangıçta bulanıklaştırılır ve ardından aşağı örneklenir. Pyramid Down işlemini bir görüntü üzerinde,pyrDown() yöntemi imgprocsınıf. Bu yöntemin sözdizimi aşağıdadır -

pyrDown(src, dst, dstsize, borderType)

Bu yöntem aşağıdaki parametreleri kabul eder -

  • src - Sınıfın bir nesnesi Mat kaynak (giriş) görüntüsünü temsil eder.

  • mat - Sınıfın bir nesnesi Mat hedef (çıktı) görüntüsünü temsil eder.

  • size - Sınıfın bir nesnesi Size görüntünün artırılacağı veya azaltılacağı boyutu temsil eder.

  • borderType - Kullanılacak kenarlık türünü temsil eden tam sayı türünde bir değişken.

Misal

Aşağıdaki program, bir görüntü üzerinde Pyramid Down işleminin nasıl gerçekleştirileceğini göstermektedir.

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class PyramidDown {
   public static void main( String[] args ) {
      // Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );

      // Reading the Image from the file and storing it in to a Matrix object
      String file ="E:/OpenCV/chap13/pyramid_input.jpg";
      Mat src = Imgcodecs.imread(file);

      // Creating an empty matrix to store the result
      Mat dst = new Mat();

      // Applying pyrDown on the Image
      Imgproc.pyrDown(src, dst, new Size(src.cols()/2,  src.rows()/2),
         Core.BORDER_DEFAULT);

      // Writing the image
      Imgcodecs.imwrite("E:/OpenCV/chap13/pyrDown_output.jpg", dst);

      System.out.println("Image Processed");
   } 
}

Aşağıdakinin giriş görüntüsü olduğunu varsayalım pyramid_input.jpg yukarıdaki programda belirtilmiştir.

Çıktı

Programı çalıştırırken aşağıdaki çıktıyı alacaksınız -

Image Processed

Belirtilen yolu açarsanız, çıktı görüntüsünü aşağıdaki gibi gözlemleyebilirsiniz -

Ortalama Vardiya Filtreleme

Ortalama Kaydırma piramidi işleminde, bir görüntünün ortalama kaydırma segmentasyonunun ilk adımı gerçekleştirilir.

Piramit Ortalama Kaydırma Filtreleme işlemini bir görüntü üzerinde, pyrDown() yöntemi imgprocsınıf. Bu yöntemin sözdizimi aşağıdadır.

pyrMeanShiftFiltering(src, dst, sp, sr)

Bu yöntem aşağıdaki parametreleri kabul eder -

  • src - Sınıfın bir nesnesi Mat kaynak (giriş) görüntüsünü temsil eder.

  • mat - Sınıfın bir nesnesi Mat hedef (çıktı) görüntüsünü temsil eder.

  • sp - Uzamsal pencere yarıçapını temsil eden double türünde bir değişken.

  • sr - Renk penceresi yarıçapını temsil eden double türünde bir değişken.

Misal

Aşağıdaki program, belirli bir görüntü üzerinde Ortalama Kayma Filtreleme işleminin nasıl gerçekleştirileceğini gösterir.

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class PyramidMeanShift {
   public static void main( String[] args ) {
      // Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );

      // Reading the Image from the file and storing it in to a Matrix object
      String file ="E:/OpenCV/chap13/pyramid_input.jpg";
      Mat src = Imgcodecs.imread(file);

      // Creating an empty matrix to store the result
      Mat dst = new Mat();

      // Applying meanShifting on the Image
      Imgproc.pyrMeanShiftFiltering(src, dst, 200, 300);

      // Writing the image
      Imgcodecs.imwrite("E:/OpenCV/chap13/meanShift_output.jpg", dst);
      
      System.out.println("Image Processed");
   } 
}

Aşağıdakinin giriş görüntüsü olduğunu varsayalım pyramid_input.jpg yukarıdaki programda belirtilmiştir.

Çıktı

Programı çalıştırırken aşağıdaki çıktıyı alacaksınız -

Image Processed

Belirtilen yolu açarsanız, çıktı görüntüsünü aşağıdaki gibi gözlemleyebilirsiniz -