问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

图像处理中的亮度、曝光度和对比度滤镜详解

创作时间:
作者:
@小白创作中心

图像处理中的亮度、曝光度和对比度滤镜详解

引用
CSDN
1.
https://blog.csdn.net/h2282802627/article/details/114039152

在图像处理领域,调整图像的亮度、曝光度和对比度是常见的需求。本文将详细介绍这三种滤镜的原理和实现方法,帮助读者更好地理解和应用这些技术。

亮度滤镜(GPUImageBrightnessFilter)

亮度滤镜用于调节图像的整体亮度。其计算公式如下:

y = x + 255 ∗ b

其中:

  • x 是调节前的像素值
  • y 是调节后的像素值
  • b 是调节参数

具体实现代码如下:

vec3 col = texture(iChannel0,uv).rgb;
float brightness = 0.5;
col += vec3(brightness);
fragColor = vec4(col, 1.);

下面是不同亮度参数的效果展示:


曝光度滤镜(GPUImageExposureFilter)

曝光度滤镜用于调节图像的曝光程度。曝光值(EV)的计算公式如下:

EV = log2(N^2/t)

其中:

  • N 是光圈值
  • t 是曝光时间(秒)

在GPUImage中,曝光值与图像呈现效果呈线性关系。具体实现代码如下:

const float exposure = 1.;
vec2 uv = fragCoord/iResolution.xy;
vec4 col = texture(iChannel0,uv);
col.rgb = col.rgb * pow(2.,exposure);
fragColor = vec4(col.rgb,1.0);

下面是不同曝光度参数的效果展示:

对比度滤镜(GPUImageContrastFilter)

对比度滤镜用于调节图像的亮暗区域层次感。其计算公式如下:

y = [ x − 127.5 ∗ ( 1 − b ) ] ∗ k + 127.5 ∗ ( 1 + b )

其中:

  • x 是调节前的像素值
  • y 是调节后的像素值
  • b 的取值范围是[-1, 1],用于调节亮度
  • k 用于调整对比度

具体实现代码如下:

vec3 col = texture(iChannel0,uv).rgb;
float contrast = 0.2;
col = (col.rgb - vec3(.5)) * contrast + vec3(.5);
fragColor = vec4(col, 1.);

下面是不同对比度参数的效果展示:


© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号