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