我是靠谱客的博主 爱笑高山,最近开发中收集的这篇文章主要介绍FPGA图像处理11_常用算法_亮度及对比度调节,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

亮度及对比度调节

亮度及对比度需要根据数值配合一齐调节,以达到更新的视觉效果。

如果是 RGB 彩色图像,亮度与对比度调节需要在所有颜色通道上进行相同的调节。

设当前像素点位宽为 8,则像素值范围 0~255。

设当前像素点值为 x,调节输出像素点值为 y。

设亮度参数b范围 -1~1,则有亮度调节公式:
y b = x + 255 × b y = { 0 y b ≤ 0 255 y b ≥ 255 y b 0 &lt; y b &lt; 255 yb=x+255times b\ y=begin{cases} 0&amp;ybleq0\ 255&amp;ybgeq255\ yb&amp;0&lt;yb&lt;255 end{cases} yb=x+255×by=0255ybyb0yb2550<yb<255
设对比度参数c范围 -1~1,对比度门限 th,则有对比度调节公式:
y c = { x ≥ t h ? 255 : 0 c = 1 x + ( x − t h ) × ( 1 1 − c − 1 ) 0 ≤ c &lt; 1 x + ( x − t h ) × c c &lt; 0 y = { 0 y c ≤ 0 255 y c ≥ 255 y b 0 &lt; y c &lt; 255 yc=begin{cases} xgeq th? 255:0&amp;c=1\ x+(x-th)times(frac{1}{1-c}-1)&amp;0leq c&lt;1\ x+(x-th)times c&amp;c&lt;0 end{cases}\ y=begin{cases} 0&amp;ycleq0\ 255&amp;ycgeq255\ yb&amp;0&lt;yc&lt;255 end{cases} yc=xth?255:0x+(xth)×(1c11)x+(xth)×cc=10c<1c<0y=0255ybyc0yc2550<yc<255
前述公式仅用于亮度或者对比度单独调节的情况,实际情况下需要将亮度对比度一同调节,并且在对比度数值大于 0 的情况下先调节亮度,在对比度数值小于 0 的情况下先调整对比度

在 FPGA 实现中,将亮度参数 b 定义为 16 位有符号整数,用补码表示(整字节数定义,方便外部配置参数值),数值范围 -255 至 255,单独计算亮度的方法:
y = x + b y=x+b y=x+b
计算结果再经过 0 至 255 范围的饱和控制,得到亮度调节的结果。

将对比度参数 c 定义为 16 位有符号整数,用补码表示,范围 -255 至 255,单独计算对比度的方法:
y = { x ≥ 128 ? 255 : 0 c = 255 x + ( x − 128 ) × c 255 − c 0 ≤ c &lt; 255 x + ( x − 128 ) × c 255 c &lt; 0 y=begin{cases} xgeq 128?255:0&amp;c=255\ x+(x-128)timesfrac{c}{255-c}&amp;0leq c&lt;255\ x+(x-128)times frac{c}{255}&amp;c&lt;0 end{cases} y=x128?255:0x+(x128)×255ccx+(x128)×255cc=2550c<255c<0
计算结果再经过 0 至 255 范围的饱和控制,得到对比度调节的结果。

由于亮度及对比度调节需要根据对比度参数选择不同的先后顺序,因此 FPGA 计算时分为两条计算流水线,完成计算后再根据对比度参数选择对应的计算流水线的输出。

对比度参数 c 值大于等于 0 的计算流水线:

在这里插入图片描述

sysgen 中的实现如下:

在这里插入图片描述

注意上图中橙色背景的除法计算,Divide 模块的配置如下:

在这里插入图片描述

注意在 Divide 输入数据需要用 Convert 模块先由有符号整数补码转为浮点数,并且需要将 Divide 输出由 Convert 模块将浮点数转为有符号整数补码。

最后输出之前用于饱和控制的 Convert 模块的配置如下,注意 Overflow 配置为 Saturate:

在这里插入图片描述

对比度参数 c 值小于 0 的计算流水线:

在这里插入图片描述

sysgen 中的实现如下:

在这里插入图片描述

注意上图中用截去低 8 位的方法近似实现除以 255 的计算,以节约计算资源。

最终由对比度参数值通过 Mux 模块选择计算流的输出:

在这里插入图片描述

仿真结果。

试验图片来源于:https://unsplash.com/

输入原始图像:

在这里插入图片描述

输出图像,亮度参数 50,对比度参数 100:

在这里插入图片描述

输出图像,亮度参数 -10,对比度参数 -50:

在这里插入图片描述

最后

以上就是爱笑高山为你收集整理的FPGA图像处理11_常用算法_亮度及对比度调节的全部内容,希望文章能够帮你解决FPGA图像处理11_常用算法_亮度及对比度调节所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(75)

评论列表共有 0 条评论

立即
投稿
返回
顶部