# Revision history [back]

As I commented, it is hard do give you a Answer which is fitting your Needs, because we don't know your needs. Still on Stackoverflow is a quite common solution for a problem like this.

You can convert your Image into a YUV Image and then perform a histogram equalization on the Y channel. After that convert it back to RGB (if needed). With this method, you can normalize the luminance of your Image.

Code in opencv c++ would be:

cv::cvtColor(img, img, CV_BGR2YUV);
std::vector<cv::Mat> channels;
cv::split(img, channels);
cv::equalizeHist(channels[0], channels[0]);
cv::merge(channels, img);
cv::cvtColor(img, img, CV_YUV2BGR);


For more details look at the Link and note: this is not a solution I came up with it was the solution of Aurelius from stackoverflow