थ्रेशोल्डिंग एक इमेज के सेगमेंटेशन के लिए एक सरल तकनीक है। इसका उपयोग अक्सर बाइनरी इमेजेज बनाने के लिए किया जाता है। इसमें दिए गए थ्रेशोल्ड मान से अधिक पिक्सल्स को एक मानक मान से बदल दिया जाता है।
एडेप्टिव थ्रेशोल्डिंग वह विधि है जहां थ्रेशोल्ड मान छोटे क्षेत्रों के लिए गणना की जाती है और इसलिए, विभिन्न क्षेत्रों के लिए अलग-अलग थ्रेशोल्ड मान होते हैं।
adaptiveThreshold() मेथड दिए गए इमेज पर एडेप्टिव थ्रेशोल्ड ऑपरेशन करता है। इस मेथड के निम्नलिखित पैरामीटर्स हैं -
स्रोत और गंतव्य इमेजेज का प्रतिनिधित्व करने वाले दो Mat ऑब्जेक्ट्स।
थ्रेशोल्ड मान का प्रतिनिधित्व करने वाला एक इंटीजर वेरिएबल।
उपयोग की जाने वाली एडेप्टिव विधि और थ्रेशोल्ड प्रकार का प्रतिनिधित्व करने वाले दो इंटीजर वेरिएबल्स।
थ्रेशोल्ड मान की गणना के लिए उपयोग किए जाने वाले पिक्सेल पड़ोस के आकार का प्रतिनिधित्व करने वाला एक इंटीजर वेरिएबल।
दोनों विधियों में उपयोग किए जाने वाले स्थिरांक का प्रतिनिधित्व करने वाला डबल टाइप का एक इंटीजर वेरिएबल।
उदाहरण
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javafx.application.Application;
import javafx.embed.swing.SwingFXUtils;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.ImageView;
import javafx.scene.image.WritableImage;
import javafx.stage.Stage;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class AdaptiveThreshold extends Application {
@Override
public void start(Stage stage) throws IOException {
// OpenCV कोर लाइब्रेरी लोड करना
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
String file = "D:\\Images\\win2.jpg";
Mat src = Imgcodecs.imread(file, Imgcodecs.IMREAD_GRAYSCALE);
// गंतव्य इमेज स्टोर करने के लिए खाली मैट्रिक्स बनाना
Mat dst = new Mat(src.rows(), src.cols(), src.type());
// सरल थ्रेशोल्ड लागू करना
Imgproc.adaptiveThreshold(src, dst, 125,
Imgproc.ADAPTIVE_THRESH_MEAN_C,
Imgproc.THRESH_BINARY, 11, 12);
// मैट्रिक्स को JavaFX राइटेबल इमेज में कनवर्ट करना
Image img = HighGui.toBufferedImage(dst);
WritableImage writableImage = SwingFXUtils.toFXImage((BufferedImage) img, null);
// इमेज व्यू सेट करना
ImageView imageView = new ImageView(writableImage);
imageView.setX(10);
imageView.setY(10);
imageView.setFitWidth(575);
imageView.setPreserveRatio(true);
// Scene ऑब्जेक्ट सेट करना
Group root = new Group(imageView);
Scene scene = new Scene(root, 595, 400);
stage.setTitle("एडेप्टिव थ्रेशोल्ड");
stage.setScene(scene);
stage.show();
}
public static void main(String args[]) {
launch(args);
}
}
इनपुट इमेज

आउटपुट
उपरोक्त प्रोग्राम निष्पादित करने पर निम्नलिखित विंडो उत्पन्न करता है -
