মরফোলজিক্যাল অপারেশন হল অপারেশনের সেট যা প্রদত্ত আকার অনুযায়ী চিত্রগুলিকে প্রক্রিয়া করে। ক্ষয় এবং প্রসারণ হল দুটি মৌলিক অঙ্গসংস্থান সংক্রান্ত কাজ।
-
প্রসারণের সময়, চিত্রের সীমানায় অতিরিক্ত পিক্সেল যোগ করা হয়।
-
ক্ষয়ের সময়, চিত্রের সীমানা থেকে অতিরিক্ত পিক্সেলগুলি সরানো হয়৷
যোগ করা/সরানো পিক্সেলের মোট সংখ্যা ব্যবহৃত কাঠামোগত উপাদানের মাত্রার উপর নির্ভর করে। আপনি যথাক্রমে erode() এবং dilate() পদ্ধতি ব্যবহার করে ক্ষয় এবং প্রসারণ অপারেশন করতে পারেন।
প্রসারণ ছাড়াও, ওপেনসিভি আরও রূপগত রূপান্তর প্রদান করে যেমন ওপেনিং, ক্লোজিং, মরফোলজিক্যাল গ্রেডিয়েন্ট, টপ হ্যাট, ব্ল্যাক হ্যাট।
মর্ফোলজিক্যাল ক্লোজিং
এটি একটি ক্রিয়াকলাপ যা একটি চিত্রের উপর প্রসারণ প্রয়োগ করার এবং তারপরে ফলস্বরূপ চিত্রটি মুছে ফেলার সমতুল্য। এটি ব্যবহার করে, আপনি অ্যানিমেজে ছোট গর্তগুলি সরাতে/পূরণ করতে পারেন। সংক্ষেপে, একটি চিত্র থেকে শব্দ অপসারণ করতে রূপগত সমাপ্তি ব্যবহার করা হয়।
আপনি morphologyEx() ব্যবহার করে একটি ছবিতে এটি প্রয়োগ করতে পারেন পদ্ধতি এই পদ্ধতি গ্রহণ করে −
-
উৎস এবং গন্তব্য চিত্রের প্রতিনিধিত্বকারী দুটি ম্যাট বস্তু।
-
একটি পূর্ণসংখ্যা ভেরিয়েবল যা রূপগত ক্রিয়াকলাপের প্রকারের প্রতিনিধিত্ব করে।
-
কার্নেল ম্যাট্রিক্সের প্রতিনিধিত্বকারী একটি ম্যাট অবজেক্ট।
একটি ছবিতে রূপগত ওপেনিং অপারেশন প্রয়োগ করার জন্য আপনাকে Imgproc.MORPH_CLOSE পাস করে উপরে-নির্দিষ্ট পদ্ধতি ব্যবহার করতে হবে। উৎস গন্তব্য এবং কার্নেল ম্যাট্রিক্স সহ (3য়) একটি প্যারামিটার হিসাবে।
উদাহরণ
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 { //Loading the OpenCV core library System.loadLibrary( Core.NATIVE_LIBRARY_NAME ); //Reading image data String file ="D:\\Images\\morph_input2.jpg"; Mat src = Imgcodecs.imread(file); //Creating destination matrix Mat dst = new Mat(src.rows(), src.cols(), src.type()); //Preparing the kernel matrix object Mat kernel = Mat.ones(5,5, CvType.CV_32F); //Applying dilate on the Image Imgproc.morphologyEx(src, dst, Imgproc.MORPH_CLOSE, kernel); //Converting matrix to JavaFX writable image Image img = HighGui.toBufferedImage(dst); WritableImage writableImage= SwingFXUtils.toFXImage((BufferedImage) img, null); //Setting the image view ImageView imageView = new ImageView(writableImage); imageView.setX(10); imageView.setY(10); imageView.setFitWidth(575); imageView.setPreserveRatio(true); //Setting the Scene object 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); } }
ইনপুট ছবি
আউটপুট
কার্যকর করার সময়, উপরের প্রোগ্রামটি নিম্নলিখিত আউটপুট −
তৈরি করে