碧波液压网 欢迎你,游客。 登录 注册

视频图像灰度信号直方图均衡的FPGA实现

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。
液压导航网

  直方图均衡作为一种基础的图像处理方法在很多领域得到应用,但大多是通过DSP或者CPU编程实现,其优点是灵活性比较高,调试方便,最大的缺点是很难做到实时或者准实时处理,这在某些领域是不可接受的。而使用FPGA实现可以很好地解决实时处理的难题,而且目前的FPGA资源容量已经很丰富,片内的SRAM/PLL/逻辑资源已经足以应对一般图像处理算法的需要,同时随着价格的不断下降,客观上使得FPGA成为图像处理算法实现不错的选择。

  本文主要介绍在FPGA上实现直方图均衡算法的总体结构和最重要的两个子模块的实现细节,以及最终的实现结果。

  1 直方图均衡的理论基础

  原始图像灰度值r归一化在0~1之间,p(r)为原始图像灰度分布的概率密度函数。直方图均衡化处理实际上就是寻找一个灰度变换函数T,使得变化后的灰度值s=T(r), 其中,s归一化为0~1,即建立r与s之间的映射关系,要求处理后图像灰度分布的概率密度函数p(s)=1,期望所有灰度级出现概率相同。

  对于数字图像离散情况,其直方图均衡化处理的计算步骤如下:

  (1)统计原始图像的直方图

  式中,rk是归一化的输入图像灰度;nk是输入图像中归一化灰度等于rk的像素个数;n是输入图像的像素总数。

  (2)计算直方图累积分布曲线

  (3)用累积分布函数作变换函数进行图像灰度变换

  根据计算得到的累积分布函数,建立输入图像与输出图像灰度之间的对应关系,最后要将变换后的灰度恢复成原先范围。

  2 FPGA实现的总体结构

  从上面对直方图均衡算法的描述可知,在进行直方图均衡以前,首先必须对图像灰度进行统计,然后再计算输出。而要统计一幅图像的全局灰度信息,就不得不把整幅图像先写入缓存。虽然FPGA内部的SRAM资源丰富,但是仍然无法满足整幅图像存储的需要。因此,需要以SDRAM作为图像缓存,存储前后两场视频图像,然后再计算输出。SDRAM的容量、速度都能满足直方图均衡算法的要求,唯一的缺点是必须有相应的SDRAM控制器控制SDRAM的读写和刷新操作。下面简要介绍总体实现的方案,其实现框图如图1所示。

  从图1中可以看出,在输入端,模拟复合视频数据经过视频图像解码进入FPGA,在FPGA里先对数据进行简单处理,产生内部使用的行同步信号/场同步信号/数据有效信号和16bit YUV4:2:2格式的视频信号。然后,灰度信息进入灰度直方图统计模块对当前灰度信息出现的频率加以统计,将统计信息以乒乓的方式存入SRAM,与此同时所有视频数据通过“写”控制模块和SDRAM控制器存入SDRAM;在输出端,在“读”控制单元的控制下通过SDRAM控制模块从SDRAM读出上一场的数据进入灰度变换模块,根据存储的上一场的灰度统计信息,对数据进行灰度变换。这样就完成了完整的灰度直方图均衡变换。

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码: 看不清?点击更换

最新评论