Java DIP - Temel Eşikleme
Eşikleme, görüntü bölümlemesinin en kolay şekilde elde edilmesini sağlar. Görüntü bölümleme, tüm görüntünün, her bir kümedeki piksellerin bazı ortak özelliklere sahip olacağı şekilde bir dizi piksele bölünmesi anlamına gelir. Görüntü bölütleme, nesneleri ve sınırlarını tanımlamada oldukça kullanışlıdır.
Bu bölümde görüntüler üzerinde bazı temel eşikleme işlemleri gerçekleştiriyoruz.
Kullanırız OpenCV işlevi threshold. Altında bulunabilirImgprocpaketi. Söz dizimi aşağıda verilmiştir -
Imgproc.threshold(source, destination, thresh , maxval , type);
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 | thresh Eşik değerdir. |
4 | maxval THRESH_BINARY ve THRESH_BINARY_INV eşik türleriyle kullanılacak maksimum değerdir. |
5 | type Olası türler THRESH_BINARY, THRESH_BINARY_INV, THRESH_TRUNC ve THRESH_TOZERO'dur. |
Bu eşikleme yöntemlerinin dışında, 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 ddepth, 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üye eşikleme işlemleri 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.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());
}
}
}
Çıktı
Verilen kodu çalıştırdığınızda, aşağıdaki çıktı görülür -
Gerçek görüntü
Yukarıdaki orijinal görüntüde, aşağıdaki çıktıda gösterilen bazı eşikleme işlemleri gerçekleştirilir -