【发布时间】:2013-02-07 01:47:38
【问题描述】:
我正在尝试使用以下函数使用 OpenCV 执行直方图均衡
Mat Histogram::Equalization(const Mat& inputImage)
{
if(inputImage.channels() >= 3)
{
vector<Mat> channels;
split(inputImage,channels);
Mat B,G,R;
equalizeHist( channels[0], B );
equalizeHist( channels[1], G );
equalizeHist( channels[2], R );
vector<Mat> combined;
combined.push_back(B);
combined.push_back(G);
combined.push_back(R);
Mat result;
merge(combined,result);
return result;
}
return Mat();
}
但是当我得到结果时,输入和输出图像似乎没有区别,我做错了什么?
抱歉图像质量不好,“预处理”(左)是直方图均衡,你可以看到它与输入相同(右)。
错过了什么?
【问题讨论】:
-
Split -> Equalize -> Merge 不是执行彩色图像直方图均衡的正确方法。它会严重影响图像的色彩平衡。在图像中引入多种颜色的对象,您会看到它会产生颜色不平衡。
标签: c++ opencv image-processing histogram histogram-equalization