OpenCV实现Photoshop曲线调整

news2024/12/25 9:02:39

《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曲线调整也有去雾效果,但通透度差一点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/972767.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是SpringCloud Eureka服务注册与发现

😀前言 本篇博文是关于SpringCloud Eureka 介绍,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力&…

包管理工具--》npm的配置及使用(一)

目录 🌟概念 🌟背景 🌟前端包管理器 🌟包的安装 本地安装 全局安装 🌟包配置 配置文件 保存依赖关系 🌟包的使用 🌟概念 模块(module) 通常以单个文件形式存…

解决windows下git操作提示用户名密码错误的问题

当代码从一个平台切换到另一个平台的时候,需要做两步操作,第一步就是更新git的仓库地址,在项目的.git/config文件里面修改,这一步做完之后,就可以推送代码到新的仓库了,这里就是重点来了。 一般第一次推动代…

数据结构与算法复杂度介绍

目录 一、基本概念 二、时间复杂度 【2.1】时间复杂度概念 【2.2】大O的渐进表示法 【2.3】举例时间复杂度计算 三、空间复杂度 一、基本概念 数据结构:相互之间存在一种或者多种特定关系的数据元素的集合。在逻辑上可以分为线性结构,散列结构、树…

关于 ignore

当使用 insert into xxx 时,可能出现因数据类型错误插入失败的情况,如图所示: 当出现这种情况时,可以通过 ignore 来“强制”插入,提示插入成功 但是这种操作会带来隐患如图: 时间有问题,但是时…

SMU200A/罗德与施瓦茨SMU200A信号发生器

181/2461/8938产品概述 R&S SMU200A信号发生器旨在满足现代通信系统研发及其生产中遇到的所有要求。R&S SMU200A矢量信号发生器不仅将多达两个独立的信号发生器组合在一个只有四个高度单位的机柜中,还提供无与伦比的RF和基带特性。 Rohde & Schwarz S…

如何让Android平台像网络摄像机一样实现GB28181前端设备接入?

技术背景 好多开发者在做国标对接的时候,首先想到的是IPC(网络摄像头),通过参数化配置,接入到国标平台,实现媒体数据的按需查看等操作。 像执法记录仪等智能终端,跑在Android平台,…

mysql主从同步步骤(一主一从)

1、主库添加binlog配置,并设置server-id server-id124 # 设置日志格式,日志路径(注意路经需要mysql用户有权限写,默认地址放在datadir的目录下) binlog_formatmixed log-binmysql-bin# 设置binlog清理时间(秒), binlog每个日志文件大小 binlog_expire_l…

线上问诊:数仓开发(三)

系列文章目录 线上问诊:业务数据采集 线上问诊:数仓数据同步 线上问诊:数仓开发(一) 线上问诊:数仓开发(二) 线上问诊:数仓开发(三) 文章目录 系列文章目录前言一、ADS1.交易主题1.交易综合统计2.各医院交易统计3.各性…

行业追踪,2023-09-04

自动复盘 2023-09-04 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…

实时操作系统Freertos开坑学习笔记:(四):临界段保护、列表与列表项

前言 废话不多说,直接看主要要探究的问题: 一、临界段代码保护 1.什么是临界段? 图里面说,临界区的代码是不能被打断的,它运行时不能被中断打断,也不能由于非阻塞任务延时而切换到其他任务去。 比如说…

【Java转Go】Go中使用WebSocket实现聊天室(私聊+群聊)

目录 前言功能效果(一人分饰多角.jpg😎)用户上线、群聊私聊和留言下线 实现思路代码服务端 chat.go 完整代码客户端 html 完整代码 最后 前言 之前在Java中,用 springbootwebsocket 实现了一个聊天室:springbootwebso…

用BAPI创建销售订单条件价格有多个

说明: 在用BAPI_SALESORDER_CREATEFROMDAT2创建销售订单的时候,业务配置的是Z001自动出来的,我在BAPI条件那块赋值更改标识也是U,但是创建出来的单据还是有两条件类型。 解决方法: LOGIC_SWITCH-PRICING G .即可

AP9193 升压恒流驱动芯片 美容护肤仪 美容灯 锂电池升压驱动IC

AP9193 是一款高效率、高精度的升 压型大功率 LED 灯恒流驱动控制芯片。 应用领域 LED 灯杯 电池供电的 LED 灯串 平板显示 LED 背光 恒流充电器控制 大功率 LED 照明 AP9193 内置高精度误差放大器,固 定关断时间控制电路,恒流驱动电路等&#xff…

签到系统怎么设计

背景 相信签到系统大家都有接触过,更多的是使用。但是有思考过这种系统是怎么设计的吗?比方说我统计一下每个月中每天的签到情况,怎么设计呢?今天一篇文章告诉你。 首先,我们熟悉的思维是:我设计一个数据…

电商平台-业务中台-SPU,SKU,SN概念简介

什么是SPU (Standard Product Unit)? SPU标准属性是商品基本属性,基本属性中最核心两个属性是品牌和型号,电商平台一般采用 品牌和型号 来确定SPU(Standard Product Unit)标准化管理单元, 例如:小米 10 就…

Vue3 el-tooltip 根据内容控制宽度大小换行和并且内容太短不显示

el-tooltip 根据长度自适应换行以及显隐 环境 vue: "3.2.37" element-ui: "2.1.8"要求 tooltip 根据内容自动换行如果内容超出显示省略号显示&#xff0c;不超出不显示 tooltip 代码 组件 // ContentTip 组件 <template><el-tooltipv-bind&qu…

excel中的引用与查找函数篇1

1、COLUMN(reference)&#xff1a;返回与列号对应的数字 2、ROW(reference)&#xff1a;返回与行号对应的数字 参数reference表示引用/参考单元格&#xff0c;输入后引用单元格后colimn()和row()会返回这个单元格对应的列号和行号。若参数reference没有引用单元格&#xff0c;…

SOME/IP TTL 在各种Entry 中各是什么意思?有什么限制?

1 服务发现 SOME/IP SD 服务发现主要用于 定位服务实例检测服务实例状态是否在运行发布/订阅行为管理SOME/IP SD 也是 SOME/IP 消息,遵循 SOME/IP 消息格式,有固定的 Message ID、Request ID 以及 Message Type 等。并对 SOME/IP Payload 进行了详细的定义。 SOME/IP SD …

2023-9-4 快速幂求逆元

题目链接&#xff1a;快速幂求逆元 #include <iostream> #include <algorithm>using namespace std;typedef long long LL;LL qmi(int a, int k, int p) {LL res 1;while(k){if(k & 1) res (LL) res * a % p;k >> 1;a (LL) a * a % p;}return res; }i…