/* Image gamma correction * * PARAMETERS: * - src: Mat to perform gamma correction * * RETURN: -- */ void gammaCorrection(const Mat& src, float factor) { float inverse_gamma = 1.0/2.5; Mat lut_matrix(256, 1, CV_8UC1); uchar* ptr = lut_matrix.ptr<uchar>(0); for( int i = 0; i < 256; ++i) ptr[i] = saturate_cast<uchar>(pow(i/255.0, inverse_gamma)*255.0); LUT(src, lut_matrix, src); }
void GammaDialog::viewGamma(){ double inverse_gamma = 50 / slSigma->value(); cv::Mat lut_matrix(1, 256, CV_8UC1 ); uchar * ptr = lut_matrix.ptr(); for( int i = 0; i < 256; i++ ) ptr[i] = (int)( cv::pow( (double) i / 255.0, inverse_gamma ) * 255.0 ); cv::Mat result; cv::LUT( QImage2Mat(imgM), lut_matrix, result ); imgL->setPixmap(QPixmap::fromImage(Mat2QImage(result).scaledToWidth(anch))); }