ইমেজ ফিল্টারিং: ব্লার, শার্পেন, গাউসিয়ান ফিল্টার

ইমেজ এনহ্যান্সমেন্ট (Image Enhancement Techniques) - জাভা দিয়ে ডিজিটাল ইমেজ প্রসেসিং (Digital Image Processing using Java) - Computer Science

314

ইমেজ ফিল্টারিং: ব্লার, শার্পেন, গাউসিয়ান ফিল্টার

ডিজিটাল ইমেজ প্রসেসিংয়ে, ইমেজ ফিল্টারিং হল একটি প্রক্রিয়া যার মাধ্যমে একটি ইমেজের পিক্সেল ডেটা পরিবর্তন করে চিত্রের বিভিন্ন বৈশিষ্ট্য যেমন শার্পনেস, কনট্রাস্ট বা ব্লার প্রভাব পরিবর্তন করা হয়। ফিল্টারিং সাধারণত কনভলিউশনাল অপারেশন ব্যবহার করে করা হয়, যেখানে একটি কোর বা ফিল্টার ম্যাট্রিক্স একটি পিক্সেলের আশেপাশের পিক্সেলগুলোর উপর কনভলিউশন (গণনা) প্রয়োগ করে।

এখানে আমরা তিনটি সাধারণ ইমেজ ফিল্টারিং কৌশল — ব্লার, শার্পেন, এবং গাউসিয়ান ফিল্টার — এর বিস্তারিত আলোচনা করব এবং জাভাতে কিভাবে এই ফিল্টারগুলি প্রয়োগ করা যায় তা দেখাব।


১. ব্লার (Blur)

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

উদাহরণ: গড় ব্লার ফিল্টার

import java.awt.image.BufferedImage;

public class ImageBlur {
    public static BufferedImage applyBlur(BufferedImage image) {
        int width = image.getWidth();
        int height = image.getHeight();
        BufferedImage blurredImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

        int[] kernel = {-1, -1, -1, -1, 8, -1, -1, -1, -1}; // 3x3 filter

        for (int i = 1; i < width - 1; i++) {
            for (int j = 1; j < height - 1; j++) {
                int sumRed = 0, sumGreen = 0, sumBlue = 0;
                for (int k = -1; k <= 1; k++) {
                    for (int l = -1; l <= 1; l++) {
                        int pixel = image.getRGB(i + k, j + l);
                        sumRed += (pixel >> 16) & 0xff;
                        sumGreen += (pixel >> 8) & 0xff;
                        sumBlue += pixel & 0xff;
                    }
                }

                // Apply the blur effect
                int newRed = Math.min(255, Math.max(0, sumRed / 9));
                int newGreen = Math.min(255, Math.max(0, sumGreen / 9));
                int newBlue = Math.min(255, Math.max(0, sumBlue / 9));

                int newColor = (newRed << 16) | (newGreen << 8) | newBlue;
                blurredImage.setRGB(i, j, newColor);
            }
        }

        return blurredImage;
    }
}

এখানে একটি সাধারণ গড় ব্লার ফিল্টার প্রয়োগ করা হয়েছে যা পিক্সেলের আশেপাশের পিক্সেলগুলির গড় মান ব্যবহার করে ছবির মোলায়েমতা বৃদ্ধি করে।


২. শার্পেন (Sharpen)

শার্পেন ফিল্টার একটি ছবির তীক্ষ্ণতা বাড়াতে ব্যবহৃত হয়। এটি পিক্সেলগুলির পার্থক্য বাড়ায় এবং চিত্রের প্রান্তকে স্পষ্ট করে, যার ফলে ছবির বিস্তারিত প্রভাব বৃদ্ধি পায়।

উদাহরণ: শার্পেন ফিল্টার

import java.awt.image.BufferedImage;

public class ImageSharpness {
    public static BufferedImage applySharpness(BufferedImage image) {
        int width = image.getWidth();
        int height = image.getHeight();
        BufferedImage sharpenedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

        // Sharpness kernel
        int[] kernel = { 0, -1, 0, -1, 5, -1, 0, -1, 0 }; // 3x3 kernel for sharpening

        for (int i = 1; i < width - 1; i++) {
            for (int j = 1; j < height - 1; j++) {
                int sumRed = 0, sumGreen = 0, sumBlue = 0;
                int kernelIndex = 0;

                // Apply kernel to the surrounding pixels
                for (int k = -1; k <= 1; k++) {
                    for (int l = -1; l <= 1; l++) {
                        int pixel = image.getRGB(i + k, j + l);
                        int red = (pixel >> 16) & 0xff;
                        int green = (pixel >> 8) & 0xff;
                        int blue = pixel & 0xff;

                        sumRed += red * kernel[kernelIndex];
                        sumGreen += green * kernel[kernelIndex];
                        sumBlue += blue * kernel[kernelIndex];

                        kernelIndex++;
                    }
                }

                // Normalize and update the pixel values
                int newRed = Math.min(255, Math.max(0, sumRed));
                int newGreen = Math.min(255, Math.max(0, sumGreen));
                int newBlue = Math.min(255, Math.max(0, sumBlue));

                int newColor = (newRed << 16) | (newGreen << 8) | newBlue;
                sharpenedImage.setRGB(i, j, newColor);
            }
        }

        return sharpenedImage;
    }
}

এখানে শার্পেন ফিল্টার ব্যবহৃত হয়েছে যা পিক্সেলগুলির পার্শ্ববর্তী পিক্সেলগুলির মান বৃদ্ধি করে ছবির স্পষ্টতা উন্নত করে।


৩. গাউসিয়ান ব্লার (Gaussian Blur)

গাউসিয়ান ব্লার একটি বিশেষ ধরনের ব্লার ফিল্টার, যা একটি গাউসিয়ান বন্টন (Gaussian distribution) ব্যবহার করে ছবি ব্লার করার প্রক্রিয়া। এটি ছবির বিভিন্ন অংশে শুদ্ধভাবে ব্লার প্রয়োগ করে, এবং খুব জনপ্রিয়।

উদাহরণ: গাউসিয়ান ব্লার ফিল্টার

import java.awt.image.BufferedImage;

public class GaussianBlur {
    public static BufferedImage applyGaussianBlur(BufferedImage image) {
        int width = image.getWidth();
        int height = image.getHeight();
        BufferedImage blurredImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

        // Gaussian kernel
        float[][] kernel = {
            {1/16f, 2/16f, 1/16f},
            {2/16f, 4/16f, 2/16f},
            {1/16f, 2/16f, 1/16f}
        };

        for (int i = 1; i < width - 1; i++) {
            for (int j = 1; j < height - 1; j++) {
                float sumRed = 0, sumGreen = 0, sumBlue = 0;

                // Apply the Gaussian kernel to the surrounding pixels
                for (int k = -1; k <= 1; k++) {
                    for (int l = -1; l <= 1; l++) {
                        int pixel = image.getRGB(i + k, j + l);
                        int red = (pixel >> 16) & 0xff;
                        int green = (pixel >> 8) & 0xff;
                        int blue = pixel & 0xff;

                        sumRed += red * kernel[k + 1][l + 1];
                        sumGreen += green * kernel[k + 1][l + 1];
                        sumBlue += blue * kernel[k + 1][l + 1];
                    }
                }

                // Normalize and set the pixel values
                int newRed = Math.min(255, Math.max(0, (int)sumRed));
                int newGreen = Math.min(255, Math.max(0, (int)sumGreen));
                int newBlue = Math.min(255, Math.max(0, (int)sumBlue));

                int newColor = (newRed << 16) | (newGreen << 8) | newBlue;
                blurredImage.setRGB(i, j, newColor);
            }
        }

        return blurredImage;
    }
}

এখানে গাউসিয়ান ব্লার ফিল্টার একটি গাউসিয়ান বন্টন ব্যবহার করে ছবির বিভিন্ন পিক্সেলগুলির মান কমিয়ে এবং মোলায়েম করে।


সারসংক্ষেপ

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

করা সম্ভব। এই ফিল্টারগুলি বিভিন্ন আলগোরিদম ব্যবহার করে পিক্সেল ডেটার উপর প্রভাব ফেলে এবং ছবির পারফরম্যান্স ও দৃশ্যমানতা বৃদ্ধি করে।

Content added By
Promotion

Are you sure to start over?

Loading...