ISP模块之色彩增强算法--HSV空间Saturation通道调整
色彩增强不同于彩色图像增强,图像增强的一般处理方式为直方图均衡化等,目的是为了增强图像局部以及整体对比度。而色彩增强的目的是为了使的原有的不饱和的色彩信息变得饱和、丰富起来。对应于Photoshop里面的“色相/饱和度”调节选项里面对饱和度的操作。色彩增强的过程,并不改变原有彩色图像的颜色以及亮度信息。
在我的色彩增强算法模块里面,始终只针对色彩饱和度(Saturation)信息做研究,调整。这样的话,那就不得不介绍HSV颜色空间了,H代表Hue(色彩),S代表Saturation(饱和度),V代表Value,也可用B表示(Brightness,明度),HSV空间也可称作HSB空间。
HSV空间在wikipedia上的介绍,https://en.wikipedia.org/wiki/HSL_and_HSV
下面根据自己的理解介绍一下HSV空间,以及其各通道在Matlab和OpenCV中的不同。
HSV的圆柱模型
HSV的圆锥模型
从上图可以看出,在HSV空间中,Hue通道的取值从0-360°变化时,颜色从红->黄->绿->青->蓝逐步变化。Saturation从0->1变化时,色彩逐渐加深变成纯色(pure)。Value值从0->1变化时,图像整体亮度增加,V值为0时,图像为全黑,V值为1时,图像为全白。
Matlab RGB色彩空间向HSV转换,采用函数rgb2hsv,转换后的hsv各通道的元素取值范围为[0,1];OpenCV中彩色图像向HSV空间中转换,cvtColor(src,srcHsv,CV_BGR2HSV),转换后H的取值范围为[0,180],S,V的取值范围为[0,255].
下面介绍自己的算法处理思路,后面会给出完整的Matlab代码:
步骤一、给出一张原图src,用PS进行饱和度(Saturation)+40处理后另存为src_40;
步骤二、将以上两张图像分别转换到hsv空间,提取出饱和度信息,分别为S,S_40;
步骤三、统计饱和度增加40后,原色彩饱和度与饱和度增量之间的对应关系,即S -- (S_40-S);
步骤四、对关系S -- (S_40-S)进行二次多项式曲线拟合,得到二次曲线f(x) = p1*x^2 + p2*x + p3;
为什么是二次?1.对应关系呈现出抛物线形状;2.更高次曲线并没有明显改善拟合性能,且计算消耗会变高。
步骤五、任意给定输出图像input,根据其色彩饱和度信息,即可进行色彩增强40处理,新的饱和度信息可以表示为S'(x) = S(x) + f(x),得到增强后的色彩信息后返回RGB图像输出;
步骤六、分别对原图+20,+40,+60后进行饱和度信息统计,并得到相应拟合参数,设置为色彩增强的低、中、高三挡,在实际处理过程中,根据输入图像input自身色彩饱和度信息(均值)自适应选取相应参数进行色彩增强;
步骤七、按需对某一单独颜色通道进行色彩增强处理,例如绿色范围为105°-135°,在对该范围进行增强的同时,还需对75°-105°,135°-165°进行一半强度的增强,这样才会保证色彩的连续性,不会出现色斑;
步骤八、按需对色彩(Hue)进行转换;
代码部分:第一部分用作估计拟合参数,在Curve fitting tool里面对X,Y进行拟合,得到曲线参数。
% Color Enhancement
clc,clear,close all
src1 = imread('src.bmp');
src2 = imread('src_40.bmp');
src1_hsv = rgb2hsv(src1);
src2_hsv = rgb2hsv(src2);
h1 = src1_hsv(:,:,1);
s1 = src1_hsv(:,:,2);
v1 = src1_hsv(:,:,3);
h2 = src2_hsv(:,:,1);
s2 = src2_hsv(:,:,2);
v2 = src2_hsv(:,:,3);
%
meanS1 = mean(s1(
ISP模块之色彩增强算法--HSV空间Saturation通道调整相关推荐
- ISP模块之色彩增强算法--HSV空间Saturation通道调整 .
本文来自:https://blog.csdn.net/u013626386/article/details/47831385 彩增强不同于彩色图像增强,图像增强的一般处理方式为直方图均衡化等,目的是为 ...
- HSV颜色空间 HSV空间各通道分离实验
HSV空间各通道分离实验 https://blog.csdn.net/bamboocan/article/details/70627137 HSV颜色空间 https://blog.csdn.net/ ...
- HALCON示例程序color_simple.hdev在HSV空间筛选黄色线
HALCON示例程序color_simple.hdev在HSV空间筛选黄色线 示例程序源码(加注释) 关于显示类函数解释 dev_close_window () dev_open_window (0, ...
- python图像主色调(主颜色)提取,在hsv空间k均值迭代实现
完整项目代码在:https://github.com/liuhuang31/simple_mainColor 本人新手一枚,所编写的代码基本尽量没调用库类,所以感觉代码会很臃肿,连三级代码都称不上哈, ...
- HSV空间Retinex理论低照度图像增强
文章目录 一.课题任务.目的和要求 二.课题方案设计 三.课题设计实现 1 同态滤波算法增强夜晚图像的RGB各分量 2 HSV空间改进的多尺度Retinex 算法及伽马校正 3 直方图均衡函数对反射图 ...
- 荔枝hsv空间图像分割程序matlab,基于Retinex图像增强的不同光照条件下的成熟荔枝识别_熊俊涛...
第29卷第12期农业工程学报V ol.29 No.12 170 2013年6月Transactions of the Chinese Society of Agricultural Engineeri ...
- python种颜色循环_python图像主色调(主颜色)提取,在hsv空间k均值迭代实现
#!coding=utf-8fromPIL importImage importrgb2hsv importrandom asran importhsvTRGB frompylab import* # ...
- OpenCV的HSV空间度量与标准HSV不一样,使用的时候需要换算;另附一个调色取色的小工具
图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 在对图像的颜色进行处理时,RGB通道并不能很好地 ...
- 【Matlab 图像】HSV 空间图片分离器
[Matlab]HSV 空间图片分离器 代码已上传到 Github 也使用直接下载 最近在图片识别的课题,发现在利用颜色进行目标的分离时,不停的手动更改颜色空间参数太麻烦. 于是从网上查了一下 Mat ...
- boost::sort模块实现Spinsort算法的测试程序
boost::sort模块实现Spinsort算法的测试程序 实现功能 C++实现代码 实现功能 boost::sort模块实现Spinsort算法的测试程序 C++实现代码 #include < ...
最新文章
- mate30pro什么时候可以升级鸿蒙,mate 30pro什么时候能装鸿蒙系统?
- React 重温之 组件生命周期
- Java-变量、常量
- ICLR2021 | 唯一录取的NER论文:NER数据存在漏标怎么办?
- 想成为一个怎样的人?
- 立创EDA超详细的PCB设计流程
- 吃鸡游戏计算机配置,手游吃鸡pc端吃什么配置
- 单片机流水灯显示方式
- 进入IT行业,你后悔过吗?
- 独家可用发卡小程序源码下载卡密系统
- 2022/11/21-11/26周报
- 一阶导数和二阶导数的意义
- js数组中添加新元素,如果没有则添加
- WebAssembly 学习笔记
- 机器学习笔记~五种常见的聚类算法简介
- FCKeditor使用帮助
- Python VLC+PyQt5 读取视频音频流
- office ppt放映时,视频无法播放
- 消费互联网时代建立了一种互联网经济与实体经济对立的二元经济结构
- 【双机调试】WinDbg+Win7虚拟机双机调试详细步骤
热门文章
- layui laydate设置最小时间为当前时间
- MATLAB深度学习代码详细分析(一)__nnff.m
- MYSQL不能远程连接
- 一种基于SoC和阿里云的智能家居系统设计方案_家电研究报告
- python 折线图标签_如何使用python绘制折线图?
- 3d游戏开发实训一周总结 3
- git 工作区、暂存区、版本库(本地)、远程版本库区别
- stm32 I2C总线入门笔记
- python预测你的小孩身高_Python 孩子身高预测
- Star Way To Heaven 二分 + 并查集 + Prime