এজ ডিটেকশন ফিল্টার: Sobel, Prewitt, এবং Canny

ইমেজ ফিল্টারিং এবং ফিল্টার ডিজাইন (Image Filtering and Filter Design) - জাভা দিয়ে ডিজিটাল ইমেজ প্রসেসিং (Digital Image Processing using Java) - Computer Science

327

এজ ডিটেকশন ফিল্টার: Sobel, Prewitt, এবং Canny

এজ ডিটেকশন (Edge Detection) হল ইমেজ প্রসেসিংয়ের একটি গুরুত্বপূর্ণ টেকনিক, যার মাধ্যমে ছবির মধ্যে প্রান্ত বা "এজ" সনাক্ত করা হয়। প্রান্ত হল ইমেজের এমন অংশ যেখানে পিক্সেল মানের দ্রুত পরিবর্তন ঘটে। এজ ডিটেকশন সাধারণত ইমেজ বিশ্লেষণ, অবজেক্ট রিকগনিশন, এবং চিত্রের বৈশিষ্ট্য আহরণের জন্য ব্যবহৃত হয়।

এজ ডিটেকশন ফিল্টারগুলি মূলত গ্রেডিয়েন্ট ইনফরমেশন বা পরিবর্তনের সিগন্যাল ব্যবহার করে, যা একটি পিক্সেলের পার্শ্ববর্তী পিক্সেলের তুলনায় কতটা পরিবর্তন হচ্ছে তা নির্দেশ করে। এখানে আমরা Sobel, Prewitt, এবং Canny ফিল্টারগুলির বিবরণ এবং তাদের ব্যবহারের পদ্ধতি আলোচনা করব।


১. Sobel এজ ডিটেকশন ফিল্টার (Sobel Edge Detection Filter)

Sobel ফিল্টার একটি গ্রেডিয়েন্ট মেথড যা একসাথে অনুভূমিক এবং উল্লম্ব দিক থেকে এজ ডিটেকশন করতে ব্যবহৃত হয়। এটি একটি 2x2 ম্যাট্রিক্স ব্যবহৃত করে এবং পিক্সেল মানের পরিবর্তনকে হাইলাইট করে।

Sobel কনভলিউশন মাস্কস (Kernel):

  • Horizontally (Gx):

    \[
    \begin{bmatrix}
    -1 & 0 & 1 \
    -2 & 0 & 2 \
    -1 & 0 & 1
    \end{bmatrix}
    \]

  • Vertically (Gy):

    \[
    \begin{bmatrix}
    -1 & -2 & -1 \
    0 & 0 & 0 \
    1 & 2 & 1
    \end{bmatrix}
    \]

গ্রেডিয়েন্ট (Gradient) গণনা:

  • অনুভূমিক গ্রেডিয়েন্ট \( G_x \) এবং উল্লম্ব গ্রেডিয়েন্ট \( G_y \) পেতে এই কনভলিউশন মাস্কগুলো ব্যবহার করা হয়।

    \[
    G_x = \sqrt{(Gx)^2 + (Gy)^2}
    \]

ব্যবহার:

  • Sobel ফিল্টারটি সহজ, দ্রুত এবং কম্পিউটেশনে কার্যকর, তবে এটি কিছুটা শোর (Noise) প্রবণ।

২. Prewitt এজ ডিটেকশন ফিল্টার (Prewitt Edge Detection Filter)

Prewitt ফিল্টারটি Sobel এর মতো, কিন্তু এর কনভলিউশন মাস্কগুলির মান কিছুটা আলাদা। এটি একইভাবে অনুভূমিক এবং উল্লম্ব গ্রেডিয়েন্ট গণনা করে এবং ছবির প্রান্ত সনাক্ত করতে সহায়ক।

Prewitt কনভলিউশন মাস্কস (Kernel):

  • Horizontally (Gx):

    \[
    \begin{bmatrix}
    -1 & 0 & 1 \
    -1 & 0 & 1 \
    -1 & 0 & 1
    \end{bmatrix}
    \]

  • Vertically (Gy):

    \[
    \begin{bmatrix}
    -1 & -1 & -1 \
    0 & 0 & 0 \
    1 & 1 & 1
    \end{bmatrix}
    \]

ব্যবহার:

  • Prewitt ফিল্টারটি Sobel এর তুলনায় একটু বেশি সংবেদনশীল এবং সোজা পদ্ধতিতে প্রান্ত সনাক্ত করতে সহায়ক, তবে এটি কিছুটা ব্লার (blurring) হতে পারে এবং শোর (Noise) এর কারণে আরও কম কার্যকর।

৩. Canny এজ ডিটেকশন ফিল্টার (Canny Edge Detection Filter)

Canny ফিল্টার হল একটি উন্নত এবং সর্বোত্তম এজ ডিটেকশন অ্যালগরিদম যা সিগন্যাল প্রক্রিয়াকরণগ্রাফিক্স ক্ষেত্রে সবচেয়ে জনপ্রিয় এবং কার্যকর। এটি একাধিক স্টেপে কাজ করে এবং এটি একটি অত্যন্ত নির্ভুল এবং সঠিক এজ ডিটেকশন প্রদান করে।

Canny ফিল্টার প্রক্রিয়া:

  1. গাউসিয়ান ব্লার: ছবিতে গাউসিয়ান ফিল্টার প্রয়োগ করে শোর (Noise) কমানো হয়।
  2. গ্রেডিয়েন্টের দিক গণনা: গাউসিয়ান ব্লার হওয়া ছবিতে অনুভূমিক এবং উল্লম্ব গ্রেডিয়েন্ট গণনা করা হয় (Sobel বা Prewitt ফিল্টার ব্যবহার করে)।
  3. Non-maximum suppression: সবার সর্বোচ্চ গ্রেডিয়েন্ট ভ্যালু রেখে অন্য পিক্সেলগুলিকে সরিয়ে ফেলা হয়।
  4. ডাবল থ্রেশোল্ডিং: দুইটি থ্রেশোল্ড মান নির্ধারণ করা হয় — একটিকে হাই থ্রেশোল্ড এবং একটিকে লো থ্রেশোল্ড, যাতে সঠিক এজ সনাক্ত করা যায়।
  5. এজ ট্র্যাকিং: লো থ্রেশোল্ডের নিচে সব পিক্সেলকে বাদ দেওয়া হয় এবং হাই থ্রেশোল্ডের উপরে থাকা পিক্সেলগুলো এজ হিসেবে চিহ্নিত হয়।

ব্যবহার:

  • Canny ফিল্টারটির একটি বড় সুবিধা হলো এটি খুবই কার্যকরী এবং নির্ভুল, যদিও এটি অন্যান্য ফিল্টারের তুলনায় অনেক বেশি কম্পিউটেশনাল সময় নেয়।

Java কোড উদাহরণ

import java.awt.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.File;
import java.io.IOException;

public class EdgeDetectionExample {
    public static void main(String[] args) {
        try {
            // ইমেজ লোড করা
            BufferedImage image = ImageIO.read(new File("path/to/your/image.jpg"));

            // Sobel, Prewitt, বা Canny ফিল্টার প্রয়োগের জন্য কোড এখানে থাকবে।

            // আউটপুট ইমেজ তৈরি
            BufferedImage outputImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_ARGB);

            // ফিল্টার প্রয়োগ এবং আউটপুট ইমেজ তৈরি
            for (int x = 1; x < image.getWidth() - 1; x++) {
                for (int y = 1; y < image.getHeight() - 1; y++) {
                    // পিক্সেল প্রক্রিয়া
                    // যেমন Sobel বা Prewitt এজ ডিটেকশন লজিক প্রয়োগ করা
                }
            }

            // ফলস্বরূপ ইমেজ সংরক্ষণ
            ImageIO.write(outputImage, "jpg", new File("path/to/save/output_image.jpg"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

সারসংক্ষেপ:

  1. Sobel এবং Prewitt ফিল্টারগুলি গ্রেডিয়েন্ট বেসড এজ ডিটেকশন ফিল্টার, যা অনুভূমিক এবং উল্লম্ব গ্রেডিয়েন্টের সাহায্যে চিত্রের প্রান্ত সনাক্ত করে।
  2. Canny ফিল্টারটি সবচেয়ে উন্নত এবং নির্ভুল এজ ডিটেকশন প্রযুক্তি, যা ধাপে ধাপে কাজ করে এবং শোর কমানোর জন্য গাউসিয়ান ব্লার সহ বিভিন্ন প্রক্রিয়া ব্যবহার করে।
  3. প্রতিটি ফিল্টারটি বিভিন্ন চিত্রের জন্য বিভিন্ন কার্যকারিতা প্রদান করে, এবং সঠিক পদ্ধতি নির্বাচন ছবির প্রকৃতির উপর নির্ভর করে।
Content added By
Promotion

Are you sure to start over?

Loading...