ইরোশন এবং ডাইলেশন হলো দুটি বেসিক মর্ফোলজিক্যাল অপারেশন। নাম অনুযায়ী, মর্ফোলজিক্যাল অপারেশন হলো আকৃতির অনুযায়ী ইমেজ প্রসেস করার অপারেশন সেট।
ডাইলেশন অপারেশনে একটি ইমেজ বাউন্ডারিতে অতিরিক্ত পিক্সেল যোগ হয় এবং ইরোশন অপারেশনে ইমেজ বাউন্ডারি থেকে অতিরিক্ত পিক্সেল রিমুভ হয়। ডাইলেশন প্রসেসে যোগ হওয়া টোটাল পিক্সেলের সংখ্যা ব্যবহার করা স্ট্রাকচারিং এলিমেন্টের ডাইমেনশনের উপর নির্ভর করে।
মর্ফোলজিক্যাল গ্রেডিয়েন্ট হলো ডাইলেশন এবং ইরোশনের পার্থক্যের সমান একটি অপারেশন। রেজাল্টিং ইমেজের প্রতিটি পিক্সেল মান নিকটবর্তী পিক্সেলের কন্ট্রাস্ট ইন্টেনসিটি নির্দেশ করে। এটি এজ ডিটেকশন, সেগমেন্টেশন এবং অবজেক্টের আউटलাইন খুঁজে বের করতে ব্যবহৃত হয়।
উদাহরণ
নিচের জাভা উদাহরণ দেওয়া ইমেজের মর্ফোলজিক্যাল গ্রেডিয়েন্ট ধারণকারী একটি উইন্ডো জেনারেট করে:
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.CvType;
import org.opencv.core.Mat;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class MorphologicalGradient extends Application {
public void start(Stage stage) throws IOException {
// OpenCV কোর লাইব্রেরি লোড করা
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// ইমেজ ডেটা পড়া
String file = "D:\\Images\\morph_input1.jpg";
Mat src = Imgcodecs.imread(file);
// ডেস্টিনেশন ম্যাট্রিক্স তৈরি
Mat dst = new Mat(src.rows(), src.cols(), src.type());
// কার্নেল ম্যাট্রিক্স অবজেক্ট প্রস্তুত
Mat kernel = Mat.ones(5, 5, CvType.CV_32F);
// ইমেজে ডাইলেট প্রয়োগ
Imgproc.morphologyEx(src, dst, Imgproc.MORPH_GRADIENT, kernel);
// ম্যাট্রিক্সকে 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("Morphological Gradient");
stage.setScene(scene);
stage.show();
}
public static void main(String args[]) {
launch(args);
}
}
ইনপুট ইমেজ

আউটপুট ইমেজ
