Java DIP - Thresholding Dasar

Thresholding memungkinkan untuk mencapai segmentasi gambar dengan cara termudah. Segmentasi citra berarti membagi citra utuh menjadi sekumpulan piksel sedemikian rupa sehingga piksel pada setiap himpunan memiliki karakteristik yang sama. Segmentasi gambar sangat berguna dalam menentukan objek dan batasannya.

Dalam bab ini kami melakukan beberapa operasi thresholding dasar pada gambar.

Kita gunakan OpenCV fungsi threshold. Itu dapat ditemukan di bawahImgprocpaket. Sintaksnya diberikan di bawah ini -

Imgproc.threshold(source, destination, thresh , maxval , type);

Parameternya dijelaskan di bawah -

Sr.No. Parameter & Deskripsi
1

source

Itu adalah gambar sumber.

2

destination

Itu adalah gambar tujuan.

3

thresh

Itu adalah nilai ambang batas.

4

maxval

Ini adalah nilai maksimum yang akan digunakan dengan tipe ambang THRESH_BINARY dan THRESH_BINARY_INV.

5

type

Jenis yang mungkin adalah THRESH_BINARY, THRESH_BINARY_INV, THRESH_TRUNC, dan THRESH_TOZERO.

Terlepas dari metode thresholding ini, ada metode lain yang disediakan oleh kelas Imgproc. Mereka dijelaskan secara singkat -

Sr.No. Metode & Deskripsi
1

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

Ini mengubah gambar dari satu ruang warna ke ruang warna lainnya.

2

dilate(Mat src, Mat dst, Mat kernel)

Ini melebarkan gambar dengan menggunakan elemen penataan tertentu.

3

equalizeHist(Mat src, Mat dst)

Ini menyamakan histogram dari gambar grayscale.

4

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

Ini menggabungkan gambar dengan kernel.

5

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

Ini mengaburkan gambar menggunakan filter Gaussian.

6

integral(Mat src, Mat sum)

Ini menghitung integral dari sebuah gambar.

Contoh

Contoh berikut menunjukkan penggunaan kelas Imgproc untuk melakukan operasi thresholding ke gambar -

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;

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 destination = new Mat(source.rows(),source.cols(),source.type());

         destination = source;
         Imgproc.threshold(source,destination,127,255,Imgproc.THRESH_TOZERO);
         Highgui.imwrite("ThreshZero.jpg", destination);
         
      } catch (Exception e) {
         System.out.println("error: " + e.getMessage());
      }
   }
}

Keluaran

Saat Anda menjalankan kode yang diberikan, output berikut akan terlihat -

Gambar asli

Pada gambar asli di atas, beberapa operasi thresholding dilakukan yang ditunjukkan pada output di bawah ini -

Thresh Binary

Thresh Binary Invert

Thresh Zero