opencv提高对比度算法

环境: OPENCV2.4.6+VS2012

功能:

对每个像素进行修改,提高亮度

另一种方法是讲BGR三个通道分开,分别进行均衡化,当然出现的效果就比较丑


源图像

opencv提高对比度算法_第1张图片

效果图1(BGR均衡化)

opencv提高对比度算法_第2张图片

效果图2

opencv提高对比度算法_第3张图片

WIN32 控制窗的参数


opencv提高对比度算法_第4张图片


#include 
#include 
#include 
#include 
using namespace std;
using namespace cv;

int main()
{
	//
	直方图均衡化的方式修改源图像,当然这是一次性的效果
	///
    //读入图像
    Mat mat = imread("3.jpg");
	namedWindow("original");
	imshow("original", mat);
    Mat mergeImg;//合并后的图像
    //用来存储各通道图片的向量
    vector splitBGR(mat.channels());
    //分割通道,存储到splitBGR中
    split(mat,splitBGR);
    //对各个通道分别进行直方图均衡化
    for(int i=0; i> alpha;
    cout << "* Enter the beta value [0-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 );
            }
        }
    }

   
    namedWindow("alpha_beta", 1);
    imshow("alpha_beta", new_image);

	waitKey();
	return 0;
}



你可能感兴趣的:(opencv,计算机视觉,算法)