七夜浮生

Gamma校正及其FPGA实现(一)

0
阅读(914) 评论(2)

          最近在做一个千兆以太网传输的项目,里面用到了Gama校正算法,本来想使用Altera 的IP核Gamma Corrector,但Quartus16.0把Gamma Corrector的IP核集成到了QSYS里面了,还得研究qsys怎么用,与自己本来的方案不符合,还是直接用HDL写个Gamma模块来的实际,先研究下理论部分。

wps2C08.tmp

一、什么是Gamma校正?

Gamma校正是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系:

wps2C18.tmp[2]

这个指数即为Gamma.

经过Gamma校正后的输入和输出图像灰度值关系如图1所示:横坐标是输入灰度值,纵坐标是输出灰度值,蓝色曲线是gamma值小于1时的输入输出关系,红色曲线是gamma值大于1时的输入输出关系。可以观察到,当gamma值小于1时(蓝色曲线),图像的整体亮度值得到提升,同时低灰度处的对比度得到增加,更利于分辩低灰度值时的图像细节。

wps2C29.tmp

图1 Gamma校正.

二、为什么进行Gamma校正?

1. 人眼对外界光源的感光值与输入光强不是呈线性关系的,而是呈指数型关系的。在低照度下,人眼更容易分辨出亮度的变化,随着照度的增加,人眼不易分辨出亮度的变化。而摄像机感光与输入光强呈线性关系。如图2所示:

wps2C39.tmp

图2 人眼和摄像机的感光与实际输入光强的关系

为方便人眼辨识图像,需要将摄像机采集的图像进行gamma校正。

2. 为能更有效的保存图像亮度信息,需进行Gamma校正。

未经gamma校正和经过gamma校正保存图像信息如图3所示:

wps2C4A.tmp

图3 未经gamma校正和经过gamma校正保存图像信息.

可以观察到,未经gamma校正的情况下,低灰度时,有较大范围的灰度值被保存成同一个值,造成信息丢失;同时高灰度值时,很多比较接近的灰度值却被保存成不同的值,造成空间浪费。经过gamma校正后,改善了存储的有效性和效率。

本文理论部分转载自:

http://blog.csdn.net/lichengyu/article/details/8457425

  1. 学习一下 

  2. 等我做出来再写FPGA实现部分~_~