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

জাভা উদাহরণ সহ OpenCV ডিস্ট্যান্স ট্রান্সফর্মেশন ব্যাখ্যা

ডিস্ট্যান্স ট্রান্সফর্ম, সাধারণত একটি ডিজিটাল ইমেজের উদ্ভূত প্রতিনিধিত্ব। এই অপারেশনে, ফোরগ্রাউন্ড রিজনের ভেতরের পয়েন্টের গ্রে লেভেল ইন্টেনসিটি তাদের রেসপেক্টিভ ডিস্ট্যান্স থেকে নিকটতম ০ মান (বাউন্ডারি) এ পরিবর্তিত হয়।

Imgproc ক্লাসের distanceTransform() মেথড দেওয়া ইমেজে ডিস্ট্যান্স ট্রান্সফর্ম প্রয়োগ করে। এই মেথড গ্রহণ করে:

  • দুটি 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 DistanceTransform extends Application {
    public void start(Stage stage) throws IOException {
        // OpenCV কোর লাইব্রেরি লোড করা
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        
        // ফাইল থেকে ইমেজ পড়া এবং ম্যাট্রিক্স অবজেক্টে স্টোর করা
        String file = "D://images//boy.jpg";
        Mat src = Imgcodecs.imread(file, Imgcodecs.IMREAD_GRAYSCALE);
        
        // রেজাল্ট স্টোর করার জন্য খালি ম্যাট্রিক্স
        Mat dst = new Mat();
        Mat binary = new Mat();
        
        // গ্রে স্কেল ইমেজকে বাইনারি ইমেজে কনভার্ট
        Imgproc.threshold(src, binary, 100, 255, Imgproc.THRESH_BINARY);
        
        // ডিস্ট্যান্স ট্রান্সফর্ম প্রয়োগ
        Imgproc.distanceTransform(binary, dst, Imgproc.DIST_C, 3);
        Core.convertScaleAbs(dst, dst);
        
        // ম্যাট্রিক্সকে JavaFX writable ইমেজে কনভার্ট
        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("Distance Transform");
        stage.setScene(scene);
        stage.show();
    }
    public static void main(String args[]) {
        launch(args);
    }
}

ইনপুট ইমেজ

জাভা উদাহরণ সহ OpenCV ডিস্ট্যান্স ট্রান্সফর্মেশন ব্যাখ্যা

আউটপুট

প্রোগ্রাম এক্সিকিউট করলে নিচের উইন্ডো জেনারেট হবে:

জাভা উদাহরণ সহ OpenCV ডিস্ট্যান্স ট্রান্সফর্মেশন ব্যাখ্যা

  1. জাভা ব্যবহার করে ওপেনসিভিতে ব্লার (অ্যভারেজিং) কীভাবে ইমপ্লিমেন্ট করবেন?

  2. জাভা এফএক্স ও ওপেনসিভি ব্যবহার করে চিত্রের উজ্জ্বলতা কমানোর উদাহরণ

  3. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে চিত্রে মুখ সনাক্তকরণ

  4. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে চিত্র লিখা/সংরক্ষণ