মর্ফোলজিক্যাল অপারেশন হলো দেওয়া আকৃতির অনুযায়ী ইমেজ প্রসেস করার অপারেশন সেট।
- ইরোশন (Erosion) - ইরোশন হলো একটি মর্ফোলজিক্যাল অপারেশন যেখানে ইমেজ বাউন্ডারি থেকে পিক্সেল রিমুভ করা হয়।
- ডাইলেশন (Dilation) - ডাইলেশন হলো একটি মর্ফোলজিক্যাল অপারেশন যেখানে ইমেজ বাউন্ডারিতে পিক্সেল যোগ করা হয়।
- যে টোটাল পিক্সেল যোগ/রিমুভ হয় সেটি ব্যবহার করা স্ট্রাকচারিং এলিমেন্টের ডাইমেনশনের উপর নির্ভর করে।
- মর্ফোলজিক্যাল ওপেনিং (Morphological Opening) - এই অপারেশনে ইনপুটে ইরোশন প্রয়োগ করা হয় এবং রেজাল্টে ডাইলেশন প্রয়োগ করা হয়। এটি ইমেজের ফোরগ্রাউন্ড থেকে ছোট অবজেক্ট রিমুভ করতে ব্যবহৃত হয়।
- মর্ফোলজিক্যাল ক্লোজিং (Morphological Closing) - এই অপারেশনে ইনপুটে ডাইলেশন প্রয়োগ করা হয় এবং রেজাল্টে ইরোশন প্রয়োগ করা হয়। এটি ইমেজে ছোট হোল রিমুভ করতে ব্যবহৃত হয়।
একটি মর্ফোলজিক্যাল টপ হ্যাট হলো দেওয়া ইমেজ এবং এর ওপেনিং-এর মধ্যে পার্থক্য।
উদাহরণ
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 TopHatExample {
public static void main(String args[]) {
// 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_TOPHAT, kernel);
// ইমেজ প্রদর্শন
HighGui.imshow("Top Hat Gradient", dst);
HighGui.waitKey();
}
}
ইনপুট ইমেজ

আউটপুট

একটি মর্ফোলজিক্যাল ব্ল্যাক হ্যাট হলো ক্লোজিং এবং দেওয়া ইমেজের মধ্যে পার্থক্য।
উদাহরণ
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 BlackHatExample {
public static void main(String args[]) {
// 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_BLACKHAT, kernel);
// ইমেজ প্রদর্শন
HighGui.imshow("Blackhat Gradient", dst);
HighGui.waitKey();
}
}
ইনপুট ইমেজ

আউটপুট
