void ContrastStretching::MakeGlobalLUT() { if(_mode==ContrastStretching::MODE_DEFAULT) { for(int i=0;i<_channels;i++) { cv::minMaxLoc (_channel[i],&_min1,&_max1,0,0); _min[i]=_min1; _max[i]=_max1; for(int k=0;k<256;k++){ _LUT[k*_channels+i]=k-_min1>0?k>_max1?255:255*(k-_min1)/(_max1-_min1):0; } } } else if(_mode==ContrastStretching::MODE_MODIFIED) { for(int i=0;i<_channels;i++) { Histogram imgHist; std::vector<int> imgThresh; imgThresh = imgHist.getThresh(_channel[i], lowerRatio[i], upperRatio[i]); _min1=0; _max1=0; cv::minMaxLoc (_channel[i],&_min1,&_max1,0,0); _min[i]=imgThresh[0]; _max[i]=imgThresh[1]; for(int k=0;k<256;k++) { if(_max1>threshold) { if(_max[i]<threshold/2) _max[i]=threshold/2; _LUT[k*_channels+i]=(k-_min[i]<0)?0:(k>_max[i])?255:(255*(k-_min[i])/(_max[i]-_min[i])); } else _LUT[k*_channels+i]=k; } } } }