হিস্টোগ্রাম একটি চিত্রের গভীরতার তীব্রতা উপস্থাপন করে। উদাহরণস্বরূপ, 8 বিটের রঙের গভীরতা সহ একটি চিত্র বিবেচনা করুন। এর অর্থ হল প্রতিটি পিক্সেলের রঙের গভীরতা 0 থেকে মানে 0 থেকে 255 পর্যন্ত হতে পারে৷ যদি ছবিটি একটি RGB ইমেজ হয় তবে এটির একটি লাল, সবুজ এবং নীল চ্যানেল রয়েছে৷ উদাহরণস্বরূপ, ছবির বিন্দুতে, শুধুমাত্র লাল আছে। তারপর সেই ছবির রঙের গভীরতা লাল চ্যানেলে, এবং পিক্সেলের মান 0 থেকে 255 পর্যন্ত পরিবর্তিত হবে। 0 মানে লাল নয় এবং 255 মানে আরও পড়া।
হিস্টোগ্রাম সমস্ত চ্যানেল এবং সমস্ত রঙের জন্য এই ধরণের ফলাফল দেখায়। পিক্সেলের মান পরিবর্তন করে, আপনি কিছু নির্দিষ্ট রঙের পিক্সেলের তীব্রতা পরিবর্তন করতে পারেন। উদাহরণস্বরূপ, আপনি যদি লাল চ্যানেলের ঘনত্ব বাড়াতে চান তবে আপনি লাল চ্যানেলের মান পরিবর্তন করতে পারেন।
প্রথমত, আমরা একটি ধূসর ছবিতে হিস্টোগ্রাম ইকুয়ালাইজার প্রয়োগ করব। একটি ধূসর চিত্র শুধুমাত্র কালো এবং সাদা অন্তর্ভুক্ত। মানে একটাই চ্যানেল আছে। ছবিটি একটি 8-বিট চিত্র। এর মানে রঙের গভীরতা 0 থেকে 255 পর্যন্ত পরিবর্তিত হয়। 0 মানে সাদা, এবং 255 মানে কালো। নিম্নলিখিত কোডে, আমরা একটি রঙিন চিত্র লোড করব এবং এটিকে গ্রেস্কেলে রূপান্তর করব। তারপর আমরা পিক্সেল মান সমান করতে OpenCV এর 'equalizeHist' ফাংশন ব্যবহার করব।
নিম্নলিখিত প্রোগ্রামটি দেখায় কিভাবে OpenCV-এ হিস্টোগ্রাম ইকুয়ালাইজার প্রয়োগ করতে হয়।
উদাহরণ
#include<opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp> using namespace cv; using namespace std; int main() { Mat original;//Declaring a matrix// original = imread("view.jpg");//loading the image Mat gray;//declaring a matrix// cvtColor(original, gray, COLOR_BGR2GRAY);//converting to grayscale// Mat hist;//declaring a matrix// equalizeHist(gray, hist);//applying histogram equalizer namedWindow("Original");//window for actual image// namedWindow("gray");//window for grayscale image// namedWindow("histogram");//window for histogram// imshow("Original", original);//showing actual image// imshow("gray", gray);//showing grayscale image// imshow("histogram", hist);//showing histogram effect waitKey(0);//wait for keystroke// return(0); }
আউটপুট