কম্পিউটার টিউটোরিয়াল

OpenCV-এ C++ ব্যবহার করে হিস্টোগ্রাম ইক্যুয়ালাইজার প্রয়োগ করা

হিস্টোগ্রাম একটি ইমেজের গভীরতা ইন্টেনসিটি উপস্থাপন করে। উদাহরণস্বরূপ, ৮-বিট কালার ডেপথের একটি ইমেজ বিবেচনা করুন। অর্থাৎ প্রতিটি পিক্সেলের কালার ডেপথ ০ থেকে ২৫৫ পর্যন্ত হতে পারে। যদি ইমেজটি RGB হয়, তবে এর রেড, গ্রিন এবং ব্লু চ্যানেল থাকে। উদাহরণস্বরূপ, ইমেজের একটি পয়েন্টে শুধু রেড থাকে। তখন সেই ইমেজের কালার ডেপথ রেড চ্যানেলে থাকবে এবং পিক্সেল মান ০ থেকে ২৫৫ পর্যন্ত পরিবর্তন হবে। ০ মানে কোনো রেড নেই এবং ২৫৫ মানে অধিক রেড।

হিস্টোগ্রাম সব চ্যানেল এবং সব রঙের জন্য এই ধরনের ফলাফল দেখায়। পিক্সেল মান পরিবর্তন করে আপনি নির্দিষ্ট রঙের পিক্সেলের ইন্টেনসিটি পরিবর্তন করতে পারেন। উদাহরণস্বরূপ, আপনি যদি রেড চ্যানেলের ডেনসিটি বেড়াতে চান, তবে রেড চ্যানেলের মান বেড়াতে পারেন।

প্রথমে আমরা গ্রে ইমেজে হিস্টোগ্রাম ইক্যুয়ালাইজার প্রয়োগ করব। একটি গ্রে ইমেজে শুধু কালো এবং সাদা থাকে। অর্থাৎ শুধু একটি চ্যানেল থাকে। ইমেজটি ৮-বিট। অর্থাৎ কালার ডেপথ ০ থেকে ২৫৫ পর্যন্ত পরিবর্তন হয়। ০ মানে সাদা, এবং ২৫৫ মানে কালো। নিচের কোডে, আমরা একটি কালার ইমেজ লোড করব এবং গ্রেস্কেলে রূপান্তর করব। তারপর OpenCV-এর 'equalizeHist' ফাংশন ব্যবহার করে পিক্সেল মান সমান করব।

OpenCV-এ হিস্টোগ্রাম ইক্যুয়ালাইজার প্রয়োগ করার প্রোগ্রাম

#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;

int main() {
    Mat original; // একটি ম্যাট্রিক্স ঘোষণা
    original = imread("view.jpg"); // ইমেজ লোড
    Mat gray; // একটি ম্যাট্রিক্স ঘোষণা
    cvtColor(original, gray, COLOR_BGR2GRAY); // গ্রেস্কেলে রূপান্তর
    Mat hist; // একটি ম্যাট্রিক্স ঘোষণা
    equalizeHist(gray, hist); // হিস্টোগ্রাম ইক্যুয়ালাইজার প্রয়োগ
    namedWindow("Original"); // আসল ইমেজের উইন্ডো
    namedWindow("gray"); // গ্রেস্কেল ইমেজের উইন্ডো
    namedWindow("histogram"); // হিস্টোগ্রাম ইফেক্টের উইন্ডো
    imshow("Original", original); // আসল ইমেজ দেখানো
    imshow("gray", gray); // গ্রেস্কেল ইমেজ দেখানো
    imshow("histogram", hist); // হিস্টোগ্রাম ইফেক্ট দেখানো
    waitKey(0); // কীস্ট্রোক অপেক্ষা
    return 0;
}

আউটপুট

OpenCV-এ C++ ব্যবহার করে হিস্টোগ্রাম ইক্যুয়ালাইজার প্রয়োগ করা

  1. OpenCV-এ C++ ব্যবহার করে বাইনারি ইমেজ ইনভার্ট করা

  2. OpenCV-এ C++ ব্যবহার করে বাইনারি ইমেজ তৈরি করা

  3. OpenCV-এ C++ ব্যবহার করে ইমেজের চ্যানেল সংখ্যা গণনা করা

  4. OpenCV-এ C++ ব্যবহার করে ইমেজ লোড ও প্রদর্শন করা