OpenCV - Transformasi Jarak

Itu distance transformOperator umumnya mengambil gambar biner sebagai input. Dalam operasi ini, intensitas tingkat abu-abu dari titik-titik di dalam wilayah latar depan diubah ke jarak masing-masing jarak dari nilai terdekat 0 (batas).

Anda dapat menerapkan transformasi jarak di OpenCV menggunakan metode ini distanceTransform(). Berikut adalah sintaks dari metode ini.

distanceTransform(src, dst, distanceType, maskSize)

Metode ini menerima parameter berikut -

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

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

  • distanceType - Variabel tipe integer yang mewakili tipe transformasi jarak yang akan diterapkan.

  • maskSize - Variabel tipe integer yang mewakili ukuran topeng yang akan digunakan.

Contoh

Program berikut mendemonstrasikan bagaimana melakukan operasi transformasi jarak pada citra tertentu.

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

public class DistanceTransform {
   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/chap19/input.jpg";
      Mat src = Imgcodecs.imread(file,0);

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

      // Converting the grayscale image to binary image
      Imgproc.threshold(src, binary, 100, 255, Imgproc.THRESH_BINARY);

      // Applying distance transform
      Imgproc.distanceTransform(mat, dst, Imgproc.DIST_C, 3);

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

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

Asumsikan bahwa berikut ini adalah gambar input 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 -

Jenis Operasi Transformasi Jarak

Selain jenis operasi jarak DIST_Cditunjukkan dalam contoh sebelumnya, OpenCV melayani berbagai jenis operasi transformasi jarak lainnya. Semua jenis ini diwakili oleh bidang statis yang telah ditentukan (nilai tetap) dari kelas Imgproc.

Anda dapat memilih jenis operasi transformasi jarak yang Anda butuhkan, dengan meneruskan nilai masing-masing yang telah ditentukan ke parameter bernama distanceType dari distanceTransform() metode.

// Applying distance transform 
Imgproc.distanceTransform(mat, dst, Imgproc.DIST_C, 3);

Berikut ini adalah nilai-nilai yang mewakili berbagai jenis distanceTransform operasi dan outputnya masing-masing.

Operasi dan Deskripsi Keluaran
DIST_C
DIST_L1
DIST_L2
DIST_LABEL_PIXEL
DIST_MASK_3