直方图均衡是一个非线性过程.。信道分割和信道均衡不是均衡对比度的合适方法。均衡涉及强度图像的值,而不是颜色分量。因此,对于简单的RGB彩色图像,不应该单独在每个通道上应用HE。为了不干扰图像的颜色平衡,第一步是将图像的颜色空间从RGB转换为其中一个,该空间将灰度值与颜色分量分离。其中一些是:
YCbCr是首选的,因为它是为数字化图像。执行强度平面的HE转换,将图像转换回RGB。
在您当前的情况下,您没有观察到任何重大的变化,因为在图像中只有两个突出的颜色。当图像中含有大量的颜色时,分割方法会导致颜色的不平衡。
例如,考虑以下图像:
输入图像
灰度图像均衡
个别信道均衡
这是OpenCV代码,用于彩色图像的直方图均衡化。YCbCr颜色空间。Mat equalizeIntensity(const Mat& inputImage)
{
if(inputImage.channels() >= 3)
{
Mat ycrcb;
cvtColor(inputImage,ycrcb,CV_BGR2YCrCb);
vector channels;
split(ycrcb,channels);
equalizeHist(channels[0], channels[0]);
Mat result;
merge(channels,ycrcb);
cvtColor(ycrcb,result,CV_YCrCb2BGR);
return result;
}
return Mat();
}