예제 #1
0
/* 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);
}
예제 #2
0
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)));

}