মর্ফোলজিক্যাল অপারেশন হলো দেওয়া আকৃতির অনুযায়ী ইমেজ প্রসেস করার অপারেশন সেট। ইরোশন এবং ডাইলেশন হলো দুটি বেসিক মর্ফোলজিক্যাল অপারেশন।
- ডাইলেশনে, ইমেজ বাউন্ডারিতে অতিরিক্ত পিক্সেল যোগ হয়।
- ইরোশনে, ইমেজ বাউন্ডারি থেকে অতিরিক্ত পিক্সেল রিমুভ হয়।
যোগ/বিয়োগ হওয়া টোটাল পিক্সেলের সংখ্যা স্ট্রাকচারিং এলিমেন্টের ডাইমেনশনের উপর নির্ভর করে। ডাইলেশনের পাশাপাশি, OpenCV আরও মর্ফোলজিক্যাল ট্রান্সফরমেশন প্রদান করে যেমন Opening, Closing, Morphological Gradient, Top Hat, Black Hat।
মর্ফোলজিক্যাল ক্লোজিং
এটি একটি অপারেশন যা একটি ইমেজে ডাইলেশন প্রয়োগ করে এবং তারপর রেজাল্টেন্ট ইমেজ ইরোড করার সমতুল্য। এই ব্যবহার করে আপনি একটি ইমেজে ছোট হোল রিমুভ/ফিল করতে পারেন। সংক্ষেপে, মর্ফোলজিক্যাল ক্লোজিং ইমেজ থেকে নয়েজ রিমুভ করতে ব্যবহৃত হয়।
আপনি morphologyEx() মেথড ব্যবহার করে একটি ইমেজে এটি প্রয়োগ করতে পারেন। এই মেথড গ্রহণ করে:
- দুটি Mat অবজেক্ট যা সোর্স এবং ডেস্টিনেশন ইমেজকে প্রতিনিধিত্ব করে।
- একটি ইন্টিজার ভেরিয়েবল যা মর্ফোলজিক্যাল অপারেশনের টাইপকে প্রতিনিধিত্ব করে।
- একটি Mat অবজেক্ট যা কার্নেল ম্যাট্রিক্সকে প্রতিনিধিত্ব করে।
মর্ফোলজিক্যাল ওপেনিং অপারেশন একটি ইমেজে প্রয়োগ করতে হলে উপরে নির্দিষ্ট মেথডকে Imgproc.MORPH_CLOSE (৩য় প্যারামিটার হিসেবে) সোর্স, ডেস্টিনেশন এবং কার্নেল ম্যাট্রিক্সের সাথে পাস করে আহ্বান করতে হবে।
উদাহরণ
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 MorphologicalClosing extends Application {
public void start(Stage stage) throws IOException {
// OpenCV কোর লাইব্রেরি লোড করা
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// ইমেজ ডেটা পড়া
String file = "D:\\Images\\morph_input2.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_CLOSE, 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("Dilation Example");
stage.setScene(scene);
stage.show();
}
public static void main(String args[]) {
launch(args);
}
}
ইনপুট ইমেজ

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