亮度未在图像中调整

时间:2014-05-07 19:09:40

标签: image opencv image-processing computer-vision

我正在努力实现这个结果

enter image description here

但我正在尝试的是

Mat out = imread ("F:\\image.jpg");
Mat img2 = Mat(out.size(),out.type());
cv_Gamma(out,image ,0.7);
blending_overlay(image , out , image);

这给了我以下结果

enter image description here

,原始图片是

enter image description here

我的图像中看起来亮度不足但是当我增加亮度时仍无法提供所需的效果

编辑 混合叠加

void blending_overlay(Mat& img1 , Mat& img2 , Mat& out)
{

Mat result(img1.size(), CV_32FC3);
for(int i = 0; i < img1.size().height; ++i){
    for(int j = 0; j < img1.size().width; ++j){

        for (int c=0 ; c<img1.channels();c++){
            float target = (float)img1.at<uchar>(i, 3*j+c)/255.0 ;
            float blend =  (float)img2.at<uchar>(i, 3*j+c)/255.0 ;
            if(target > 0.5){
                result.at<float>(i, 3*j+c) = ((1 - (1-2*(target-0.5)) * (1-blend)));

                }
            else{
                result.at<float>(i, 3*j+c) = ((2*target) * blend);
                }
        }
    }
}
result.convertTo(out,CV_8UC3,255);
}

事实上我已经尝试了每种混合模式,我对此的理解是,我可以乘以从黄色到白色的线性渐变,但是如何制作这种渐变对我来说是不可理解的。关于这种情况的任何algorithm也将受到赞赏。

1 个答案:

答案 0 :(得分:1)

您似乎需要进行伽马校正。

看看这里:

http://subokita.com/2013/06/18/simple-and-fast-gamma-correction-on-opencv/

和上面的链接源(包含源/结果图片):

http://imagingsolution.net/program/opencv/gamma-correction/