OpenCV仿Photoshop曲线调整图像亮度与色彩

《QT 插件化图像算法研究平台》有仿Photoshop曲线调整图像的功能,包括RGB曲线调整和HSV曲线调整。

    Photoshop曲线调整原理:RGB、HSV各通道曲线,可以理解为一个值映射(值转换)函数。X轴是输入,Y轴是输出。x0对应y0,x1对应y1,... ,x255对应y255。 以R通道为例:R通道曲线调整就是,把原图像的所有像素的r值,按R通道曲线,由x替换为y,生成目标图像。

   通过HSV曲线调整来实现去雾效果:Value曲线适当拉低、Saturation 饱和度曲线适当拉高,提高饱和度,相当于增亮暗通道。

原文:用OpenCV实现Photoshop算法(三): 曲线调整  原文有代码可下载,但需要积分。

原文代码在QT6.5.2、Opencv 4.8.0下编译通过。

原作者实现了RGB的曲线调整图像功能,我在他基础上,实现了HSV的曲线调整,即通过曲线调整:Hue 色调、Saturation 饱和度、Value 明度。

曲线调整是Photoshop的最常用的重要功能之一。

分析对单通道一条曲线的原理,比如:对红色通道:


图中,横轴是输入,比左到右分别表示0到255.  纵轴是输出,从下到上分别表示0到255.

该曲线由三个点定义,座标分别为:  点1(0,0),  点2(127,154),点3(255,255)

点1和点3是默认产生的,  点2是我们新增加的。在这三个点中画出一条曲线(Spline).


调整的实现:    当输入(红色通道值)为X1时,将输出值(新的红色通道值)设为曲线对应的值  Y1.

代码实现: 对图片的所有像素点进行扫描, 取红色值 X1,   换为 对应的 Y1.  其它两个通道值(绿蓝)不变。

         比如:  像素点的RGB= (127,  230, 220),  其中红色值为 X1 = 127,    对应曲线上的值Y1 = 154, 则对该通道曲线调整后 像素点的RGB= (154,  230, 220)


如果曲线仅是一条由左下角到右上角的45度斜线,则 X1 总是等于 Y1, 则曲线调整后 图片不变。
 

HSV曲线调整原理与RGB曲线调整一样:

  1、RGB、HSV各通道曲线,可以理解为一个值映射(值转换)函数。X轴是输入,Y轴是输出。

     x0对应y0,x1对应y1,... ,x255对应y255。

 2、R通道曲线调整就是,把原图像的所有像素的r值,按R通道曲线,由x替换为y,生成目标图像。

  可以单通道调整图像,也可以多通道调整图像。依次调整RGB,或HSV。

3、  图像所有像素的Hue、Saturation 、Value(亮度)按各自通道的曲线进行转换。

4、由于Opencv的Hue的范围为0~180,那H通道曲线的y值超过180的均设为180。

RGB功能效果如下图所示:

1、把RGB曲线向下拉,相当于图像的中亮部分(125左右)像素给调暗一点。

2、把R通道曲线向上拉,相当于图像所有像素的R值适当增大,其中R值在125左右的增大较多,R值在0,或255左右有较小的增加。

2、把B通道曲线向上拉,相当于图像所有像素的B值适当增大,其中B值在125左右的增大较多,B值在0,或255左右有较小的增加。

通过HSV曲线调整来实现去雾效果:

1、把Value曲线(亮度)向下拉,此时图像略变暗,且偏灰。

2、把Saturation 饱和度曲线向上拉,增加饱和度。

原图(左上)非常灰,左下图为暗通道去雾图(颜色过于饱和),右下图为通过HSV的亮度曲线和饱和曲线调整,有去雾效果,但皮肤色彩更自然。

3、其它去雾效果对比图如下:暗通道去雾图更通透、HSV曲线调整也有去雾效果,但通透度差一点。

《QT 插件化图像算法研究平台》其它内容:
Opencv 图像金字塔----高斯和拉普拉斯

OpenCV仿Photoshop曲线调整图像亮度与色彩

QT 插件化图像算法软件架构

Opencv 图像暗通道调优去雾

opencv 提取选中区域内指定 hsv 颜色的水印

Opencv 手工选择图片区域去水印

Opencv 基于文字检测去图片水印

QT 插件化图像算法研究平台

Opencv 图像亮度调节的几种方式

Opencv使用QT的线程注意事项

OpenCV 深度学习模块(DNN)识别手势

欢迎广大朋友沟通交流,微信/QQ:23245175,加好友,请备注:插件软件。

猜你喜欢

转载自blog.csdn.net/stonewu/article/details/132681320