Binary এবং Grayscale ইমেজে মরফোলজিকাল প্রসেসিং

মরফোলজিকাল ইমেজ প্রসেসিং (Morphological Image Processing) - জাভা দিয়ে ডিজিটাল ইমেজ প্রসেসিং (Digital Image Processing using Java) - Computer Science

308

মরফোলজিকাল প্রসেসিং (Morphological Processing)

মরফোলজিকাল প্রসেসিং একটি ইমেজ প্রসেসিং টেকনিক যা একটি ইমেজের কাঠামো বা গঠন (structure) বিশ্লেষণ এবং পরিবর্তন করতে ব্যবহৃত হয়। এটি সাধারণত বাইনারি (Black and White) এবং গ্রেস্কেল (Grayscale) ইমেজে ব্যবহৃত হয় এবং বিভিন্ন ধরনের ফিল্টারিং, শেপ বিশ্লেষণ, এবং ইমেজের আকৃতি সংশোধন করতে সাহায্য করে। এটি ইমেজের শেপ বা গঠন নিয়ে কাজ করে এবং সাধারণত স্প্যাটিয়াল অপারেশন হিসেবে পরিচিত।

মরফোলজিকাল প্রসেসিংয়ের কিছু প্রধান অপারেশন হল:

  • Erosion (ইরোশন): একটি ইমেজের শেপ ছোট করা।
  • Dilation (ডাইলেশন): একটি ইমেজের শেপ বড় করা।
  • Opening (ওপেনিং): একটি ইমেজের ছোট অবাঞ্ছিত জিনিস সরিয়ে ফেলা।
  • Closing (ক্লোজিং): ইমেজের ছোট ফাঁক বা গ্যাপ বন্ধ করা।
  • Gradient (গ্রেডিয়েন্ট): ইমেজের ফ্রন্টিয়ার বা প্রান্ত সনাক্ত করা।

বাইনারি ইমেজে মরফোলজিকাল প্রসেসিং (Morphological Processing on Binary Images)

বাইনারি ইমেজ হল এমন একটি ইমেজ যা শুধুমাত্র দুটি রঙ ধারণ করে: সাদা (255) এবং কালো (0)। বাইনারি ইমেজে মরফোলজিকাল অপারেশনগুলি সাধারণত পিক্সেলগুলির স্থানীয় কাঠামো পরিবর্তন করতে ব্যবহৃত হয়।

১. Erosion (ইরোশন):

  • বর্ণনা: ইরোশন অপারেশনটি বাইনারি ইমেজের কালো (0) অংশ বাড়ায় এবং সাদা (255) অংশ সংকুচিত করে। এটি একটি নির্দিষ্ট শেপের আকার ছোট করার জন্য ব্যবহৃত হয়।
  • ফাংশন: ইমেজের মধ্যে কালো অংশ প্রসারিত করা এবং সাদা অংশ সংকুচিত করা।

২. Dilation (ডাইলেশন):

  • বর্ণনা: ডাইলেশন অপারেশনটি বাইনারি ইমেজের সাদা (255) অংশ বাড়ায় এবং কালো (0) অংশ সংকুচিত করে। এটি সাধারণত শেপ বা বর্ডারকে সম্প্রসারিত করতে ব্যবহৃত হয়।
  • ফাংশন: ইমেজের সাদা অংশকে প্রসারিত এবং কালো অংশকে সংকুচিত করা।

৩. Opening (ওপেনিং):

  • বর্ণনা: ওপেনিং হল প্রথমে ইরোশন এবং পরে ডাইলেশন অপারেশন চালানো। এটি ইমেজের ছোট ছোট অপ্রয়োজনীয় অংশ সরিয়ে দেয় এবং বড় আকারের অবজেক্টগুলোকে সুরক্ষিত রাখে।
  • ফাংশন: ছোট অবজেক্ট সরিয়ে বড় অবজেক্ট সুরক্ষিত রাখা।

৪. Closing (ক্লোজিং):

  • বর্ণনা: ক্লোজিং অপারেশনটি প্রথমে ডাইলেশন এবং পরে ইরোশন অপারেশন চালায়। এটি ইমেজের ছোট ফাঁক এবং গ্যাপ বন্ধ করে এবং অবজেক্টগুলিকে সংযুক্ত করতে সাহায্য করে।
  • ফাংশন: ছোট ফাঁক বা গ্যাপ বন্ধ করা এবং অবজেক্টগুলোকে সংযুক্ত করা।

গ্রেস্কেল ইমেজে মরফোলজিকাল প্রসেসিং (Morphological Processing on Grayscale Images)

গ্রেস্কেল ইমেজে মরফোলজিকাল প্রসেসিংয়ের মূল উদ্দেশ্য হল, ইমেজের উজ্জ্বলতার ভিত্তিতে বিভিন্ন অপারেশন প্রয়োগ করা। গ্রেস্কেল ইমেজে, পিক্সেল ভ্যালু 0 থেকে 255 এর মধ্যে থাকে, এবং বিভিন্ন উজ্জ্বলতার স্তর বিশ্লেষণ করা হয়।

১. Erosion (ইরোশন):

  • বর্ণনা: গ্রেস্কেল ইমেজে ইরোশন অপারেশনটি একটি পিক্সেলের মান কমায় এবং এটি শুধুমাত্র পিক্সেলের আশেপাশের পিক্সেলগুলোর মধ্যে সর্বনিম্ন মানে রূপান্তরিত হয়। এটি ছবির শেপ কমাতে সাহায্য করে।
  • ফাংশন: পিক্সেলের উজ্জ্বলতা কমানো এবং আশেপাশের পিক্সেলগুলির সর্বনিম্ন মানে রূপান্তর।

২. Dilation (ডাইলেশন):

  • বর্ণনা: গ্রেস্কেল ইমেজে ডাইলেশন অপারেশনটি একটি পিক্সেলের মান বাড়ায় এবং এটি আশেপাশের পিক্সেলগুলোর মধ্যে সর্বোচ্চ মানে রূপান্তরিত হয়। এটি ছবির শেপ বাড়াতে সাহায্য করে।
  • ফাংশন: পিক্সেলের উজ্জ্বলতা বাড়ানো এবং আশেপাশের পিক্সেলগুলির সর্বোচ্চ মানে রূপান্তর।

৩. Opening (ওপেনিং):

  • বর্ণনা: ওপেনিং অপারেশনটি প্রথমে ইরোশন এবং পরে ডাইলেশন অপারেশন চালায়। এটি ছবির ছোট অস্বাভাবিকতা দূর করতে সহায়ক।
  • ফাংশন: ছোট অবাঞ্ছিত কাঠামো সরিয়ে বড় কাঠামো সুরক্ষিত রাখা।

৪. Closing (ক্লোজিং):

  • বর্ণনা: ক্লোজিং অপারেশনটি প্রথমে ডাইলেশন এবং পরে ইরোশন অপারেশন চালায়। এটি ছবির ছোট ফাঁক ও গ্যাপগুলো বন্ধ করে এবং অবজেক্টগুলোকে সংযুক্ত করতে সহায়ক।
  • ফাংশন: ছোট গ্যাপ বা ফাঁক বন্ধ করা এবং অবজেক্টগুলিকে সংযুক্ত করা।

Java কোড উদাহরণ: বাইনারি ইমেজে ইরোশন এবং ডাইলেশন

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

public class MorphologicalProcessing {
    public static void main(String[] args) {
        try {
            // বাইনারি ইমেজ লোড করা
            BufferedImage image = ImageIO.read(new File("path/to/your/binary_image.jpg"));
            int width = image.getWidth();
            int height = image.getHeight();
            
            // ইরোশন এবং ডাইলেশন জন্য কনভলিউশন মাস্ক
            int[][] kernel = {
                {-1, -1, -1},
                {-1,  1, -1},
                {-1, -1, -1}
            };
            
            // বাইনারি ইমেজে ইরোশন প্রয়োগ করা
            BufferedImage erodedImage = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY);
            for (int i = 1; i < width - 1; i++) {
                for (int j = 1; j < height - 1; j++) {
                    boolean isBlack = true;
                    for (int k = -1; k <= 1; k++) {
                        for (int l = -1; l <= 1; l++) {
                            if (image.getRGB(i + k, j + l) == 0xFFFFFF) {
                                isBlack = false;
                                break;
                            }
                        }
                    }
                    erodedImage.setRGB(i, j, isBlack ? 0x000000 : 0xFFFFFF);
                }
            }

            // ডাইলেশন প্রয়োগ করা
            BufferedImage dilatedImage = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY);
            for (int i = 1; i < width - 1; i++) {
                for (int j = 1; j < height - 1; j++) {
                    boolean isWhite = false;
                    for (int k = -1; k <= 1; k++) {
                        for (int l = -1; l <= 1; l++) {
                            if (image.getRGB(i + k, j + l) == 0xFFFFFF) {
                                isWhite = true;
                                break;
                            }
                        }
                    }
                    dilatedImage.setRGB(i, j, isWhite ? 0xFFFFFF : 0x000000);
                }
            }

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

সারসংক্ষেপ:

  • মরফোলজিকাল প্রসেসিং বাইনারি এবং গ্রেস্কেল ইমেজে শেপ এবং কাঠামো পরিবর্তন করতে ব্যবহৃত হয়।
  • Erosion এবং Dilation হল দুটি মৌলিক অপারেশন যা বাইনারি ইমেজে শেপ সংকুচিত বা প্রসারিত করতে ব্যবহ

ৃত হয়।

  • Opening এবং Closing অপারেশনগুলো ইমেজে ছোট অবজেক্ট বা ফাঁক/গ্যাপ বন্ধ করার জন্য ব্যবহৃত হয়।
  • Java কোডের মাধ্যমে মরফোলজিকাল অপারেশনগুলো বাইনারি ইমেজে প্রয়োগ করে এবং ফলস্বরূপ ইমেজ সংরক্ষণ করা হয়।
Content added By
Promotion

Are you sure to start over?

Loading...