opencv使图片变亮

1.改变图片的对比度和亮度

int text1(){
	double alpha; //对比度
	int beta;     //亮度
	Mat image = imread("C://Users//Lenovo//Desktop//IMG//图像增强.png");


	/// 目标图像空间预分配
	Mat new_image = Mat::zeros(image.size(), image.type());


	/// 输入初始化值
	cout << "请输入对比度1-3: ";
	cin >> alpha;
	cout << "请输入亮度1-100: ";
	cin >> beta;
	/// 执行变换 new_image(i,j) = alpha    * image(i,j) + beta
	for (int y = 0; y < image.rows; y++)
	{
		for (int x = 0; x < image.cols; x++)
		{
			for (int c = 0; c < 3; c++)
			{
				new_image.at(y, x)[c] = saturate_cast(alpha * (image.at(y, x)[c]) + beta);
			}
		}
	}




	/// 显示图像
	imshow("原图像", image);
	imshow("新图像", new_image);


	/// 等待键盘事件
	waitKey();


	cin.get();
	return 0;
}

2.伽马算法

伽马变换:在图像处理中,将漂白(相机过曝)的图片或者过暗(曝光不足)的图片,进行修正!

伽马变换的基本形式如下:

曲线图如下:

opencv使图片变亮_第1张图片



通过以上曲线图:

         

                 gamma值小于1时,会拉伸图像中灰度级较低的区域,同时会压缩灰度级较高的部分

                  gamma值大于1时,会拉伸图像中灰度级较高的区域,同时会压缩灰度级较低的部分

int imageAdjust(Mat &src, Mat &dst,
	double low_in, double high_in,
	double low_out, double high_out,
	double gamma) {
	if (low_in < 0 && low_in >1 && high_in <0 && high_in >1
		&& low_out < 0 && low_out > 1 && high_out < 0 && high_out > 1
		&& low_out > high_out)
		return -1;

	double low2 = low_in * 255;
	double high2 = high_in * 255;
	double bottom2 = low_out * 255;
	double top2 = high_out * 255;
	double err_in = high2 - low2;
	double err_out = top2 - bottom2;

	int x, y;
	double val;
	uchar* p;

	//亮度变换    
	for (y = 0; y < src.rows; y++)
	{
		p = src.ptr(y);  //行指针    
		for (x = 0; x < src.cols; x++)
		{
			val = pow((p[x] - low2) / err_in, gamma)*err_out + bottom2;
			if (val > 255)  val = 255;
			if (val < 0)    val = 0;

			dst.at(y, x) = (uchar)val;
		}
	}
}
int text2()
{
	Mat src;

	src = imread("C://Users//Lenovo//Desktop//IMG//图像增强.png", 0);

	if (src.data == NULL)
	{
		cout << "未找到该图片!" << endl;
		return -1;
	}

	imshow("原图像", src);

	Mat dst = src.clone();

	//图像亮度变换    
	imageAdjust(src, dst, 0, 0.5, 0.5, 1, 1);

	imshow("新图像", dst);

	waitKey(0);

	return 0;
}
伽马变换的图片失去了彩色效果,变为了黑白图片由暗变亮


参考博客:http://blog.csdn.net/gone_huilin/article/details/53433836

                    http://www.cnblogs.com/MakeView660/p/6513589.html  

                    http://blog.csdn.net/yangleo1987/article/details/52912560

你可能感兴趣的:(学习)