0
我想学习equalization of histograms,当然我知道有histogram equalization in OpenCV。我由calcHist
返回,我不知道这是否是正确的方式...或者有其他方法。首先,calcHist
是否会返回浮标或双打或整数的Mat?我似乎无法在文档中找到它。迭代calcHist返回的Mat
int histSize = 256;
float range[] = {0, 256} ;
const float* histRange = { range };
Mat histogram;
calcHist(&image, 1, 0, Mat(), histogram, 1, &histSize, &histRange);
Mat accumulatedHistogram = histogram.clone();
MatIterator_<float> accHistIt, accHistEnd;
accHistIt=accumulatedHistogram.begin<float>();
accHistEnd=accumulatedHistogram.end<float>();
bool firstLoop = true;
for(; accHistIt != accHistEnd; accHistIt++) {
if(firstLoop) {
firstLoop = false;
} else {
*accHistIt += *(accHistIt-1);
}
}
感谢,
(accHistIt -1)肯定会导致第一次迭代中的缓冲区不足。你想达到什么目的? – berak
我想计算一下:AH = clone(H);循环{AH [i] = AH [i] + AH [i-1]; }其中AH =积分曲线,H =直方图。正如您在[维基百科中的直方图均衡的累积分布函数(cdf)示例]中所看到的(http://en.wikipedia.org/wiki/Histogram_equalization#Small_image)。我希望我已经说清楚了。 – lmiguelmh