饱和度调节
饱和度调整的算法很多,基本上是越复杂的算法,调整后的图像视觉效果越好。
由于FPGA 不善长复杂的浮点运算,另一方面由于本文定位于基本的图像处理算法,此处只选择一种比较简单的饱和度算法。
设当前输入像素值位宽为 8,RGB 三通道数值为 r、g、b,三个数值间最大值为 max,最小值为 min。
如果 max=minmax=minmax=min,则当前像素点不用调节,直接输出原像素值。
令 v=max+minv=max+minv=max+min,则有:
s={
max−minmax+minv<255max−min255−max+255−minv≥255 s=\begin{cases} \frac{max-min}{max+min}&v<255\\ \frac{max-min}{255-max+255-min}&v\geq255 \end{cases} s={
max+minmax−min255−max+255−minmax−minv<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

该博客介绍了在FPGA上实现简单饱和度调节算法的过程。通过计算RGB三通道的最大值和最小值,根据饱和度系数进行像素值调整。算法在sysgen中使用浮点数确保精度,并在输出前转换为无符号整数。文中展示了正负饱和度系数对图像效果的影响,并提供了仿真结果。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



