欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 文化 > 图像处理之图像亮度/对比度调整

图像处理之图像亮度/对比度调整

2025/2/13 11:10:45 来源:https://blog.csdn.net/mickey2007/article/details/145366202  浏览:    关键词:图像处理之图像亮度/对比度调整

目录

1 图像亮度/对比度调整简介

2 图像亮度/对比度调整公式

 3 图像亮度/对比对调整代码实现

4 演示Demo

4.1 开发环境

4.2 功能介绍

4.3 下载地址

参考


1 图像亮度/对比度调整简介

        图像亮度是图像给人眼的一种直观感受。对于一张灰度图而言,灰度值越大,图像就越亮;反之,图像越暗。

        图像对比度是指图像中从黑色到白色渐变的层次反差或比值。反差越大,比值越大,从视觉上感知,图像就越清晰醒目,对比度越大;反差越小,比值越小,从视觉上感知,图像越不清晰醒目,蒙尘感越强,对比度越小。

2 图像亮度/对比度调整公式

        关于亮度和对比度调整的算法有很多,由于PS的特殊性和通用性,这里只介绍PS中的亮度/对比度调整算法。

(1)在RGB颜色空间中,计算宽x高为 MxN 的图像灰度平均值 Average

        灰度化公式: Gray = 0.299R + 0.587G + 0.114B

        灰度均值计算:

Average = \sum_{i=0,j=0}^{M,N}Gray(i,j)

(2)亮度/对比度调整公式

 3 图像亮度/对比对调整代码实现

/*************************************************
功    能:图像亮度与对比度调整
参    数:srcData    -    [输入/输出] 原始图像,格式为32位BGRA格式,执行后修为结果图像width      -   [输入] 原始图像宽度height     -   [输入] 原始图像高度stride     -   [输入] 原始图像的Stride(也就是行字节数width*4)bright     -   [输入] 亮度改变量(-100~100)contrast   -   [输入] 对比度改变量(-100~100)
返    回: 0-成功,其他-失败.
*************************************************/
int brightContrast(unsigned char *srcData, int width, int height, int stride, int bright, int contrast)
{int ret = 0;bright = CLIP3(bright, -100, 100);contrast = CLIP3(contrast, -100, 100);//compute average light of imageint Average = 0;int offset = stride - width * 4;unsigned char* pSrc = srcData;for (int j = 0; j < height; j++){for (int i = 0; i < width; i++){Average += (299 * pSrc[2] + 587 * pSrc[1] + 114 * pSrc[0]) / 1000;pSrc += 4;}pSrc += offset;}Average = Average / (width * height);pSrc = srcData;unsigned char BC_MAP[256];int temp = 0;for (int i = 0; i < 256; i++){int temp = contrast > 0 ? CLIP3(i + bright, 0, 255) : i;if (contrast > 0){temp = CLIP3(i + bright, 0, 255);temp = CLIP3(Average + (temp - Average) * (1.0f / (1.0f - contrast / 100.0f)), 0, 255);}else{temp = i;temp = CLIP3(Average + (temp - Average) * (1.0f + contrast / 100.0f), 0, 255);temp = CLIP3(temp + bright, 0, 255);}BC_MAP[i] = temp;}for (int j = 0; j < height; j++){for (int i = 0; i < width; i++){pSrc[0] = BC_MAP[pSrc[0]];pSrc[1] = BC_MAP[pSrc[1]];pSrc[2] = BC_MAP[pSrc[2]];pSrc += 4;}pSrc += offset;}return ret;
};

4 演示Demo

4.1 开发环境

  • Windows 10 Pro x64

  • Visual Studio 2015

4.2 功能介绍

        演示程序主界面如下图所示,具有图像读取、显示、保存、显示RGBA值、HSV调整、提取YUV分量、灰度化、二值化、直方图、亮度/对比度调整等功能。

原图

效果图(亮度:50,对比度:20)

4.3 下载地址

        开发环境:

  • Windows 10 pro x64

  • Visual Studio 2015

        下载地址:图像处理之图像亮度/对比度调整Demo

参考

        图像视频滤镜与人像美颜美妆算法详解. 胡耀武、谭娟、李云夕. 电子工业出版社、2020-07

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com