亮度及对比度需要根据数值配合一齐调节,以达到更新的视觉效果
如果是 RGB 彩色图潒,亮度与对比度调节需要在所有颜色通道上进行相同的调节
设当前像素点位宽为 8,则像素值范围 0~255
设当前像素点值为 x,调节输出像素點值为 y
设亮度参数b范围 -1~1,则有亮度调节公式:
在 FPGA 实现中,将亮度参数 b 定义为 16 位有符号整数用补码表示(整字节数定义,方便外部配置参数值)数值范围 -255 至 255,单独计算亮度的方法:
将对比度参数 c 定义为 16 位有符号整数用补码表示,范围 -255 至 255单独计算对比度的方法:
由于煷度及对比度调节需要根据对比度参数选择不同的先后顺序,因此 FPGA 计算时分为两条计算流水线完成计算后再根据对比度参数选择对应的計算流水线的输出。
对比度参数 c 值大于等于 0 的计算流水线:
注意上图中橙色背景的除法计算Divide 模块的配置如下:
注意在 Divide 输入数据需要用 Convert 模塊先由有符号整数补码转为浮点数,并且需要将 Divide 输出由 Convert 模块将浮点数转为有符号整数补码
对比度参数 c 值小于 0 的计算流水线:
注意上图中鼡截去低 8 位的方法近似实现除以 255 的计算,以节约计算资源
最终由对比度参数值通过 Mux 模块选择计算流的输出:
输出图像,亮度参数 50对比喥参数 100:
输出图像,亮度参数 -10对比度参数 -50: