OpenCV示例3:图像美化(亮度、对比度、直方图)

图像亮度和对比度

图像亮度和对比度的调整操作,其实属于图像处理变换中比较简单的一种——点操作(pointoperators)。点操作有一个特点:仅仅根据输入像素值(有时可以加上某些全局信息或参数),来计算相应的输出像素值。这类算子包括亮度(brightness)和对比度(contrast)调整、颜色校正(colorcorrection)和变换(transformations)。

两种最常用的点操作(点算子)是乘上一个常数(对应对比度的调节)以及加上一个常数(对应亮度值的调节)。公式如下:
g ( x ) = a ∗ f ( x ) + b
参数f(x)表示源图像像素
参数g(x)表示输出图像像素
参数a(需要满足a>0)被称为增益(gain),常常被用来控制图像的对比度
参数b通常被称为偏置(bias),常常被用来控制图像的亮度。

static void on_ContrastAndBright(int, void *)
{
    namedWindow("src", 1);
    //三个for循环,执行运算    g_dstImage(i,j) = a*g_srcImage(i,j)+b;
    for(int y = 0; y < g_srcImage.rows; y++){

        for(int x = 0; x < g_srcImage.cols; x++){
            for(int c = 0; c < 3; c++){

                //图像变量名.at<元素类型>(行,列)[通道]
                g_dstImage.at<Vec3b>(y,x)[c] =
                           saturate_cast<uchar>((g_nContrastValue*0.01)*(g_srcImage.at<Vec3b>
                           (y,x)[c]) + g_nBrightValue);
            }
        }
    }

    imshow("src", g_srcImage);
    imshow("dst", g_dstImage);
}

直方图均衡化

图像的直方图是什么?

直方图是图像中像素强度分布的图形表达方式.
它统计了每一个强度值所具有的像素个数.
在这里插入图片描述

直方图均衡化是什么?

直方图均衡化是通过拉伸像素强度分布范围来增强图像对比度的一种方法.
说得更清楚一些, 以上面的直方图为例, 你可以看到像素主要集中在中间的一些强度值上. 直方图均衡化要做的就是 拉伸 这个范围. 见下面左图: 绿圈圈出了 少有像素分布其上的 强度值. 对其应用均衡化后, 得到了中间图所示的直方图. 均衡化的图像见下面右图.
在这里插入图片描述
官方示例

大神自定义EqualizeHist

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值