किसी छवि का हिस्टोग्राम पिक्सेल की तीव्रता मानों की आवृत्ति दिखाता है। छवि हिस्टोग्राम में, X-अक्ष ग्रे लेवल तीव्रता दिखाता है और Y-अक्ष इन तीव्रताओं की आवृत्ति दिखाता है।
हिस्टोग्राम इक्वलाइज़ेशन तीव्रता रेंज को फैलाकर छवि के कंट्रास्ट में सुधार करता है। आप equalizeHist() फंक्शन का उपयोग करके दी गई छवि के हिस्टोग्राम को इक्वलाइज़ कर सकते हैं।
इस फंक्शन का मूल सिंटैक्स है -
सिंटैक्स
equalizeHist(Source Matrix, Destination Matrix).
इस प्रोग्राम में, यह एक ग्रेस्केल छवि को इक्वलाइज़ करता है। इसका मतलब है कि केवल एक चैनल है। यह फंक्शन उस एकल चैनल के पिक्सेल मान को इक्वलाइज़ करता है। हालांकि, जब हम इस फंक्शन को रंगीन छवि पर लागू करते हैं, तो हमें स्रोत और गंतव्य मैट्रिक्स के बजाय अलग-अलग चैनलों को परिभाषित करना होगा। निम्नलिखित प्रोग्राम में, हम रंगीन छवि में equalizehist() के अनुप्रयोग को देखेंगे।
OpenCV में equalizeHist() फंक्शन को दर्शाने वाला निम्नलिखित प्रोग्राम।
उदाहरण
#include<iostream> #include<opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp> using namespace cv; using namespace std; int main(int argc, const char** argv) { Mat original;//एक मैट्रिक्स घोषित करना// original = imread("sky.jpg");//छवि लोड करना// vectorchannels;//प्रत्येक चैनल को अलग सरणी में संग्रहीत करने के लिए वेक्टर// Mat hist;//एक मैट्रिक्स घोषित करना// cvtColor(original, hist, COLOR_BGR2YCrCb);//BGR से YCrCB में परिवर्तित करना// split(hist, channels);//चैनलों को विभाजित करना// equalizeHist(channels[2], channels[2]);//दूसरे चैनल में हिस्टोग्राम इक्वलाइज़र लागू करना// Mat histeql;//एक मैट्रिक्स घोषित करना// merge(channels, hist);//इक्वलाइज़्ड चैनल को वास्तविक मैट्रिक्स के साथ मर्ज करना// cvtColor(hist, histeql, COLOR_YCrCb2BGR);//BGR में पुनः परिवर्तित करना// namedWindow("original");//मूल छवि दिखाने के लिए विंडो// namedWindow("hist");//संपादित छवि दिखाने के लिए विंडो// imshow("original", original);//मूल छवि दिखाना// imshow("hist", histeql);//संपादित छवि दिखाना// waitKey(0);//कीस्ट्रोक की प्रतीक्षा करना// return 0; }आउटपुट
