কম্পিউটার টিউটোরিয়াল

OpenCV প্রোবাবিলিস্টিক হfline ট্রান্সফর্মের জাভা ইমপ্লিমেন্টেশন

Hough লাইন ট্রান্সফর্ম ব্যবহার করে একটি ইমেজে সোজা রেখা ডিটেক্ট করা যায়। OpenCV-এ দুটি ধরনের Hough Line Transform আছে: Standard Hough Line Transform এবং Probabilistic Hough Line Transform।

Probabilistic Hough line transform প্রয়োগ করতে Imgproc ক্লাসের HoughLinesP() মেথড ব্যবহার করুন। এই মেথড নিচের প্যারামিটার গ্রহণ করে:

  • দুটি Mat অবজেক্ট যা সোর্স ইমেজ এবং লাইনের প্যারামিটার (r, Φ) স্টোর করার ভেক্টরকে প্রতিনিধিত্ব করে।
  • দুটি ডাবল ভেরিয়েবল যা প্যারামিটার r (পিক্সেল) এবং Φ (রেডিয়ান) এর রেজোলিউশনকে প্রতিনিধিত্ব করে।
  • একটি ইন্টিজার যা একটি লাইন "ডিটেক্ট" করার জন্য মিনিমাম ইন্টারসেকশন সংখ্যাকে প্রতিনিধিত্ব করে।

উদাহরণ

নিচের জাভা উদাহরণ Probabilistic Hough Line Transform ব্যবহার করে ইমেজে লাইন ডিটেক্ট করে:

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.core.Point;
import org.opencv.core.Scalar;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class HoughLineProbabilisticTransform extends Application {
    public void start(Stage stage) throws IOException {
        // OpenCV কোর লাইব্রেরি লোড করা
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        
        String file = "D:\\Images\\road4.jpg";
        Mat src = Imgcodecs.imread(file);
        
        // ইমেজকে গ্রে-তে কনভার্ট
        Mat gray = new Mat();
        Imgproc.cvtColor(src, gray, Imgproc.COLOR_RGBA2GRAY);
        
        // এজ ডিটেক্ট করা
        Mat edges = new Mat();
        Imgproc.Canny(gray, edges, 60, 60*3, 3, false);
        
        // ক্যানি এর রঙ পরিবর্তন
        Mat cannyColor = new Mat();
        Imgproc.cvtColor(edges, cannyColor, Imgproc.COLOR_GRAY2BGR);
        
        // (ক্যানি থেকে) Hough লাইন ডিটেক্ট করা
        Mat lines = new Mat();
        Imgproc.HoughLinesP(edges, lines, 1, Math.PI/180, 50, 50, 10);
        
        for (int i = 0; i < lines.rows(); i++) {
            double[] data = lines.get(i, 0);
            // ইমেজে লাইন আঁকা
            Point pt1 = new Point(data[0], data[1]);
            Point pt2 = new Point(data[2], data[3]);
            Imgproc.line(cannyColor, pt1, pt2, new Scalar(0, 0, 255), 3);
        }
        
        // ম্যাট্রিক্সকে JavaFX writable ইমেজে কনভার্ট
        Image img = HighGui.toBufferedImage(cannyColor);
        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("Hough Line Transform");
        stage.setScene(scene);
        stage.show();
    }
    public static void main(String args[]) {
        launch(args);
    }
}

ইনপুট ইমেজ

OpenCV প্রোবাবিলিস্টিক হfline ট্রান্সফর্মের জাভা ইমপ্লিমেন্টেশন

আউটপুট

প্রোগ্রাম এক্সিকিউট করলে নিচের আউটপুট পাওয়া যায়:

OpenCV প্রোবাবিলিস্টিক হfline ট্রান্সফর্মের জাভা ইমপ্লিমেন্টেশন

  1. ইমেজ প্রসেসিং/ওপেনসিভি ইমেজ ইরোজান জাভা উদাহরণ

  2. জাভা ব্যবহার করে ওপেনসিভিতে মিডিয়ান ব্লার কীভাবে ইমপ্লিমেন্ট করবেন?

  3. জাভা ব্যবহার করে ওপেনসিভিতে বাইল্যাটেরাল ব্লার কীভাবে ইমপ্লিমেন্ট করবেন?

  4. জাভা ওপেনসিভি (OpenCV) ব্যবহার করে রেখা আঁকার পদ্ধতি