OpenCV - Gambar Piramida

Piramida adalah operasi pada gambar di mana,

  • Gambar masukan awalnya dihaluskan menggunakan filter penghalusan tertentu (misal: Gaussian, Laplacian) dan kemudian gambar yang dihaluskan disubsampel.

  • Proses ini diulangi beberapa kali.

Selama operasi piramida, kehalusan gambar ditingkatkan dan resolusi (ukuran) dikurangi.

Pyramid Up

Di Pyramid Up, gambar awalnya diambil sampelnya lalu diburamkan. Anda dapat melakukan operasi Pyramid Up pada gambar menggunakanpyrUP() metode dari imgprockelas. Berikut adalah sintaks dari metode ini -

pyrUp(src, dst, dstsize, borderType)

Metode ini menerima parameter berikut -

  • src - Objek kelas Mat mewakili gambar sumber (masukan).

  • mat - Objek kelas Mat mewakili gambar tujuan (keluaran).

  • size - Objek kelas Size mewakili ukuran gambar yang akan ditingkatkan atau dikurangi.

  • borderType - Variabel tipe integer yang merepresentasikan tipe border yang akan digunakan.

Contoh

Program berikut menunjukkan cara melakukan operasi Pyramid Up pada gambar.

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

Asumsikan bahwa berikut ini adalah gambar input pyramid_input.jpg ditentukan dalam program di atas.

Keluaran

Saat menjalankan program, Anda akan mendapatkan output berikut -

Image Processed

Jika Anda membuka jalur yang ditentukan, Anda dapat mengamati gambar keluaran sebagai berikut -

Piramida Bawah

Di Pyramid Down, gambar awalnya diburamkan lalu disampling ke bawah. Anda dapat melakukan operasi Pyramid Down pada gambar menggunakanpyrDown() metode dari imgprockelas. Berikut adalah sintaks dari metode ini -

pyrDown(src, dst, dstsize, borderType)

Metode ini menerima parameter berikut -

  • src - Objek kelas Mat mewakili gambar sumber (masukan).

  • mat - Objek kelas Mat mewakili gambar tujuan (keluaran).

  • size - Objek kelas Size mewakili ukuran gambar yang akan ditingkatkan atau dikurangi.

  • borderType - Variabel tipe integer yang merepresentasikan tipe border yang akan digunakan.

Contoh

Program berikut mendemonstrasikan bagaimana melakukan operasi Pyramid Down pada gambar.

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

Asumsikan bahwa berikut ini adalah gambar input pyramid_input.jpg ditentukan dalam program di atas.

Keluaran

Saat menjalankan program, Anda akan mendapatkan output berikut -

Image Processed

Jika Anda membuka jalur yang ditentukan, Anda dapat mengamati gambar keluaran sebagai berikut -

Mean Shift Filtering

Dalam operasi piramida Pergeseran Rata-rata, langkah awal segmentasi pergeseran rata-rata suatu citra dilakukan.

Anda dapat melakukan operasi Pemfilteran Pergeseran Rata-rata piramida pada gambar menggunakan pyrDown() metode dari imgprockelas. Berikut adalah sintaks dari metode ini.

pyrMeanShiftFiltering(src, dst, sp, sr)

Metode ini menerima parameter berikut -

  • src - Objek kelas Mat mewakili gambar sumber (masukan).

  • mat - Objek kelas Mat mewakili gambar tujuan (keluaran).

  • sp - Variabel tipe double yang mewakili radius jendela spasial.

  • sr - Variabel tipe double yang mewakili radius jendela warna.

Contoh

Program berikut mendemonstrasikan bagaimana melakukan operasi Mean Shift Filtering pada gambar tertentu.

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

Asumsikan bahwa berikut ini adalah gambar input pyramid_input.jpg ditentukan dalam program di atas.

Keluaran

Saat menjalankan program, Anda akan mendapatkan output berikut -

Image Processed

Jika Anda membuka jalur yang ditentukan, Anda dapat mengamati gambar keluaran sebagai berikut -