কম্পিউটার

একটি জাভা উদাহরণ ব্যবহার করে OpenCV-তে Otsu থ্রেশহোল্ড কৌশল ব্যাখ্যা করুন


থ্রেশহোল্ডিং হল একটি চিত্রের বিভাজন করার জন্য একটি সহজ কৌশল৷ এটি প্রায়ই বাইনারি ছবি তৈরি করতে ব্যবহৃত হয়। এতে একটি প্রদত্ত থ্রেশহোল্ড মানের চেয়ে বড় পিক্সেল একটি আদর্শ মান দিয়ে প্রতিস্থাপিত হবে

  • সহজ কথায়, থ্রেশহোল্ড মান চিত্র জুড়ে স্থির থাকে।

  • অভিযোজিত থ্রেশহোল্ডিং থ্রেশহোল্ড মান ছোট অঞ্চলের জন্য গণনা করা হয় এবং সেইজন্য, বিভিন্ন অঞ্চলের জন্য বিভিন্ন প্রান্তিক মান থাকবে৷

যেখানে ওটসু থ্রেশহোল্ড কৌশলে থ্রেশহোল্ড মান স্বয়ংক্রিয়ভাবে নির্ধারিত হয়, এটি ইমেজ হিস্টোগ্রামের উপর ভিত্তি করে একটি সর্বোত্তম থ্রেশহোল্ড মান বেছে নেয়।

থ্রেশহোল্ড() Imgproc এর পদ্ধতি ক্লাস গ্রহণ করে

  • উৎস এবং গন্তব্য চিত্রের প্রতিনিধিত্বকারী দুটি ম্যাট বস্তু।

  • থ্রেশহোল্ড বা স্ট্যান্ডার্ড মান প্রতিনিধিত্বকারী দুটি পূর্ণসংখ্যা ভেরিয়েবল।

  • একটি পূর্ণসংখ্যা ভেরিয়েবল যা সরল থ্রেশহোল্ডের প্রকারের প্রতিনিধিত্ব করে।

পরামিতি হিসাবে এবং প্রদত্ত ছবিতে থ্রেশহোল্ড অপারেশন করে এবং ফলাফল গন্তব্য ম্যাট্রিক্সে সঞ্চয় করে।

একটি চিত্রের ওটসু থ্রেশহোল্ড কৌশলে Imgproc.THRESH_OTSU বাইপাস করে এই পদ্ধতিটি চালু করুন কৌশলের ধরন হিসাবে।

উদাহরণ

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 OtsuThresholding extends Application {
   public void start(Stage stage) throws IOException {
      //Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      String file ="D:\\Images\\win2.jpg";
      Mat src = Imgcodecs.imread(file, Imgcodecs.IMREAD_GRAYSCALE);
      //Creating an empty matrices to store the destination image.
      Mat dst = new Mat(src.rows(), src.cols(), src.type());
      //Applying simple threshold
      Imgproc.threshold(src, dst, 50, 255, Imgproc.THRESH_OTSU);  
      //Converting matrix to JavaFX writable image
      Image img = HighGui.toBufferedImage(dst);
      WritableImage writableImage= SwingFXUtils.toFXImage((BufferedImage) img, null);
      //Setting the image view
      ImageView imageView = new ImageView(writableImage);
      imageView.setX(10);
      imageView.setY(10);
      imageView.setFitWidth(575);
      imageView.setPreserveRatio(true);
      //Setting the Scene object
      Group root = new Group(imageView);
      Scene scene = new Scene(root, 595, 400);
      stage.setTitle("Otsu Threshold");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]) {
      launch(args);
   }
}

ইনপুট ছবি

একটি জাভা উদাহরণ ব্যবহার করে OpenCV-তে Otsu থ্রেশহোল্ড কৌশল ব্যাখ্যা করুন

আউটপুট

একটি জাভা উদাহরণ ব্যবহার করে OpenCV-তে Otsu থ্রেশহোল্ড কৌশল ব্যাখ্যা করুন


  1. জাভা ব্যবহার করে ওপেনসিভিতে গাউসিয়ান ব্লার কীভাবে প্রয়োগ করবেন?

  2. কীভাবে জাভা ব্যবহার করে ওপেনসিভিতে ব্লার (গড়) প্রয়োগ করবেন?

  3. OpenCV ব্যবহার করে একটি ছবির উজ্জ্বলতা কমাতে JavaFX উদাহরণ।

  4. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে একটি ছবিতে মুখগুলি কীভাবে সনাক্ত করবেন?