饱和度调节

饱和度调整的算法很多,基本上是越复杂的算法,调整后的图像视觉效果越好。

由于FPGA 不善长复杂的浮点运算,另一方面由于本文定位于基本的图像处理算法,此处只选择一种比较简单的饱和度算法。

设当前输入像素值位宽为 8,RGB 三通道数值为 r、g、b,三个数值间最大值为 max,最小值为 min。

如果 max=minmax=minmax=min,则当前像素点不用调节,直接输出原像素值。

令 v=max+minv=max+minv=max+min,则有:
s={max−minmax+minv&lt;255max−min255−max+255−minv≥255s=\begin{cases} \frac{max-min}{max+min}&amp;v&lt;255\\ \frac{max-min}{255-max+255-min}&amp;v\geq255 \end{cases} s={max+minmax−min​255−max+255−minmax−min​​v<255v≥255​
设饱和度调节系数为 saturation,范围 -1.0~1.0。

如果 saturation≤0saturation\leq0saturation≤0:
rout=max+min2+(rin−max+min2)×(1+saturation)gout=max+min2+(gin−max+min2)×(1+saturation)bout=max+min2+(bin−max+min2)×(1+saturation)r_{out}=\frac{max+min}{2}+(r_{in}-\frac{max+min}{2})\times(1+saturation)\\ g_{out}=\frac{max+min}{2}+(g_{in}-\frac{max+min}{2})\times(1+saturation)\\ b_{out}=\frac{max+min}{2}+(b_{in}-\frac{max+min}{2})\times(1+saturation) rout​=2max+min​+(rin​−2max+min​)×(1+saturation)gout​=2max+min​+(gin​−2max+min​)×(1+saturation)bout​=2max+min​+(bin​−2max+min​)×(1+saturation)
如果 saturation&gt;0saturation&gt;0saturation>0:
α={1s−1(saturation+s)≥111−saturation−1(saturation+s)&lt;1\alpha=\begin{cases} \frac{1}{s}-1&amp;(saturation+s)\geq 1\\ \frac{1}{1-saturation}-1&amp;(saturation+s)&lt;1 \end{cases} α={s1​−11−saturation1​−1​(saturation+s)≥1(saturation+s)<1​

rout=rin+(rin−max+min2)×αgout=gin+(gin−max+min2)×αbout=bin+(bin−max+min2)×αr_{out}=r_{in}+(r_{in}-\frac{max+min}{2})\times\alpha\\ g_{out}=g_{in}+(g_{in}-\frac{max+min}{2})\times\alpha\\ b_{out}=b_{in}+(b_{in}-\frac{max+min}{2})\times\alpha rout​=rin​+(rin​−2max+min​)×αgout​=gin​+(gin​−2max+min​)×αbout​=bin​+(bin​−2max+min​)×α

在 sysgen 中使用浮点数进行计算,以保证精度,在输出前转化为无符号整数。整个设计即将前述的算法用 sysgen 模块搭起来,比较麻烦的部分在于各计算结果的时序对齐。

取得当前输入像素点 3 个颜色通道的最大值和最小值:

计算s值:

计算 α\alphaα 值:

$saturation>0 $ 的计算:

saturation≤0saturation\leq0saturation≤0 的计算:

仿真结果。

试验图片来源于:Lena

输入图像:

saturation 值为 0.4 的输出图像:

saturation 值为 -0.3 的输出图像:

FPGA图像处理12_常用算法_饱和度调节相关推荐

  1. JAVA工程师常用算法_算法工程师必须要知道的8种常用算法思想

    算法思想有很多,业界公认的常用算法思想有8种,分别是枚举.递推.递归.分治.贪心.试探法.动态迭代和模拟.当然8种只是一个大概的划分,是一个"仁者见仁.智者见智"的问题. 1.1 ...

  2. java常用算法_五分钟记住Java常用的八种排序算法与代码实现

    1.直接插入排序 经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中. 将第一个数和第二个数排序,然后构成一个有序序列 将第三个数插入进去,构成一个新的有序序列. 对第四个数.第五个数--直 ...

  3. fpga图像处理------常用算法(二)

    图像处理的常用算法: 畸变校正 List item Hue/Sat map 色相(3D LUT ) color manipulation 颜色处理(3D LUT) ae - 自动曝光统计 (支持统计选 ...

  4. FPGA白平衡 自动白平衡 FPGA图像处理

    FPGA白平衡 自动白平衡 FPGA图像处理 工程和算法包含以下内容: 1,MATLAB中实现图像处理. 2,verilog代码利用MATLAB联合modelsim仿真实现的图像处理. 3,小梅哥AC ...

  5. 常用十大算法_回溯算法

    回溯算法 回溯算法已经在前面详细的分析过了,详见猛击此处. 简单的讲: 回溯算法是一种局部暴力的枚举算法 循环中,若条件满足,进入递归,开启下一次流程,若条件不满足,就不进行递归,转而进行上一次流程. ...

  6. dataframe常用操作_【Data Mining】机器学习三剑客之Pandas常用算法总结上

    一.前言 看pandas之前我建议先看我的numpy总结,效果更佳. SEU-AI蜗牛车:[Data Mining]机器学习三剑客之Numpy常用算法总结​zhuanlan.zhihu.com 可以 ...

  7. etc的常见算法_谈常用的几个机器学习算法,学懂算法也可以这么简单!

    本文的目的,是务实.简洁地盘点一番当前机器学习算法.文中内容结合了个人在查阅资料过程中收集到的前人总结,同时添加了部分自身总结,在这里,依据实际使用中的经验,将对此类模型优缺点及选择详加讨论 主要回顾 ...

  8. aes算法实现c语言_以C语言实现归并排序为例,谈谈五大常用算法之一的“分治法”...

    分治算法,顾名思义就是"分而治之",即把规模较大的复杂问题拆分为若干规模较小的类似子问题,并逐个解决,最后再将各个子问题的解决结果合并,得到原始问题的结果的方法.这个技巧是很多高效 ...

  9. 文本聚类分析算法_常用的聚类分析算法综述

    聚类分析定义 所谓聚类就是按照事物的某些属性,把事物聚集成类,使类间的相似性尽可能小,类内相似性尽可能大.聚类是一个无监督的学习过程,它同分类的根本区别在于分类是需要事先知道所依据的数据特征,而聚类是 ...

最新文章

  1. 双边滤波算法的简易实现bilateralFilter
  2. c语言动态链表creat函数,用create建立动态链表
  3. [网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster原理详解
  4. Linux网络编程 之 无连接和有连接通信(二)
  5. python flask项目过程_Python 开发过程遇到的问题
  6. 孟菲斯风格海报设计素材,艺术一点点
  7. 梯度下降-单变量线性回归-理论+代码+解释
  8. PHP将图片转换成base64编码,hash函数
  9. Sparx Systems发布Enterprise Architect 16
  10. 【Practical】线性空间
  11. 服务器上的文件都变成只读了,[求助]Excel 文档都变成只读了,请问怎么恢复?/excle变成只读文件怎么办...
  12. 基于劈窗算法的地表温度反演算法
  13. ftk挂载镜像 加vm 实现仿真
  14. 2022年驾驶员考试推土机司机考试模拟试题卷及答案
  15. rg1 蓝光危害rg0_LED蓝光危害评价的最新标准及测试方案介绍
  16. APK 反编译可视化修改工具IDE
  17. Linux忘记root密码如何找回
  18. 齐鲁云采入驻条件是什么
  19. 美女面试官问我:能说几个常见的Linux性能调优命令吗?
  20. 有用的 Solaris 命令 [zt]

热门文章

  1. 典型相关分析(Canonical Correlation Analysis, CCA)
  2. 网络层协议介绍与概述
  3. 移动端--web开发
  4. 中文文本分类 传统机器学习+深度学习
  5. JAVA高级面试题汇总
  6. 自动驾驶层次测试体系(单元测试/集成测试/SIL/HIL/VIL/RIL/LABCAR/实车等)
  7. mysql百万数据写入_快速写入百万数据
  8. EDG 赢了,程序员们坐不住了.....
  9. 小程序开发需要用到服务器么
  10. 蓝桥杯CT107D:关于矩阵键盘工作原理及其应用