हिस्टोग्राम एक छवि का पिक्सेल तीव्रता मूल्यों की आवृत्ति को दर्शाता है। एक छवि हिस्टोग्राम में, एक्स-अक्ष ग्रे स्तर की तीव्रता दिखाता है और वाई-अक्ष इन तीव्रताओं की आवृत्ति दिखाता है।
हिस्टोग्राम इक्वलाइजेशन एक छवि के कंट्रास्ट में सुधार करता है, ताकि तीव्रता की सीमा को बढ़ाया जा सके। आप equalizeHist() फ़ंक्शन . का उपयोग करके किसी दिए गए चित्र के हिस्टोग्राम की बराबरी कर सकते हैं ।
इस फ़ंक्शन का मूल सिंटैक्स है -
सिंटैक्स
equalizeHist(Source Matrix, Destination Matrix).
इस कार्यक्रम में, यह एक ग्रेस्केल छवि की बराबरी करता है। इसका मतलब है कि केवल एक चैनल है। यह फ़ंक्शन उस एकल चैनल के पिक्सेल मान को बराबर करता है। हालांकि, जब हम इस फ़ंक्शन को रंगीन छवि के लिए लागू करते हैं, तो हमें स्रोत और गंतव्य मैट्रिक्स के बजाय विभिन्न चैनलों को परिभाषित करना होगा। निम्नलिखित कार्यक्रम में, हम एक रंगीन छवि में इक्वलाइज़हिस्ट () का अनुप्रयोग देखेंगे।
निम्न प्रोग्राम equalizeHist() . को प्रदर्शित करता है OpenCV में कार्य करें।
उदाहरण
#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;//Declaring a matrix// original = imread("sky.jpg");//loading image// vectorchannels;//vector to store each channel in different array// Mat hist;//Declaring a matrix// cvtColor(original, hist, COLOR_BGR2YCrCb);//Converting from BGR to YCrCB// split(hist, channels);//splitting channels// equalizeHist(channels[2], channels[2]);//applying histogram equalizer in 2nd channel// Mat histeql;//Declaring a matrix// merge(channels, hist);//merging equalized channel with actual matrix// cvtColor(hist, histeql, COLOR_YCrCb2BGR);//Reconverting to BGR// namedWindow("original");//window to show original image// namedWindow("hist");//window to show edited image// imshow("original", original);//showing original image// imshow("hist", histeql);//showing edited image// waitKey(0);//wait for keystroke// return 0; }
आउटपुट