কম্পিউটার

জাভা ব্যবহার করে ওপেনসিভি-তে রূপগত ক্লোজিং ব্যাখ্যা করুন।


মরফোলজিক্যাল অপারেশন হল অপারেশনের সেট যা প্রদত্ত আকার অনুযায়ী চিত্রগুলিকে প্রক্রিয়া করে। ক্ষয় এবং প্রসারণ হল দুটি মৌলিক অঙ্গসংস্থান সংক্রান্ত কাজ।

  • প্রসারণের সময়, চিত্রের সীমানায় অতিরিক্ত পিক্সেল যোগ করা হয়।

  • ক্ষয়ের সময়, চিত্রের সীমানা থেকে অতিরিক্ত পিক্সেলগুলি সরানো হয়৷

যোগ করা/সরানো পিক্সেলের মোট সংখ্যা ব্যবহৃত কাঠামোগত উপাদানের মাত্রার উপর নির্ভর করে। আপনি যথাক্রমে 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);
   }
}

ইনপুট ছবি

জাভা ব্যবহার করে ওপেনসিভি-তে রূপগত ক্লোজিং ব্যাখ্যা করুন।

আউটপুট

কার্যকর করার সময়, উপরের প্রোগ্রামটি নিম্নলিখিত আউটপুট −

তৈরি করে

জাভা ব্যবহার করে ওপেনসিভি-তে রূপগত ক্লোজিং ব্যাখ্যা করুন।


  1. জাভা ব্যবহার করে ওপেনসিভিতে গাউসিয়ান ব্লার কীভাবে প্রয়োগ করবেন?

  2. কীভাবে জাভা ব্যবহার করে ওপেনসিভিতে ব্লার (গড়) প্রয়োগ করবেন?

  3. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে একটি ছবিতে মুখগুলি কীভাবে সনাক্ত করবেন?

  4. কিভাবে জাভা OpenCV লাইব্রেরি ব্যবহার করে একটি ছবি লিখতে হয়?