基于FPGA的视频图像直方图均衡 图像处理 图像增强 VGA对比度增强CLAHE
本设计是基于FPGA的视频图像直方图均衡,实现的效果是可以实时地将摄像头采集的图像进行直方图均衡,具体过程是FPGA控制摄像头采集环境图像,然后数据一路送给SDRAM缓存,另一路放到直方图均衡模块,接着从SDRAM读取出缓存的数据也送到直方图模块进行均衡,最后将直方图模块的输出通过VGA进行显示。
第一张图:将摄像头采集到的图像数据直接通过VGA显示出来,不经过任何处理过程。
第二张图:将图像数据使用直方图均衡技术进行均衡,然后均衡后的结果通过VGA显示出来,通过与第一张图进行对比可以看到增强效果非常明显。
当然你可能会问为什么均衡前后的图像都与原图差距这么大,这主要是因为使用的摄像头比较廉价,只有30W像素。
第三张图:用于FPGA仿真的测试图。
前面的两张图是实际板子得到的图像,从现在开始我们从理论仿真验证程序是不是对的,不仅要动手能力好,还要理论水平高。
第四张图:PDF建立图。
直方图均衡可以大致分成三步,概率密度函数(或者说频数)PDF建立阶段,累积分布函数CDF建立阶段,查询CDF用于均衡阶段。
这张图展示的是PDF是怎么建立起来的,也就是看在遍历图像所有像素点时,对用灰度值的频数是否会自动加1. 即 PDF[val] = PDF[val] + 1
第五张图:CDF建立图。
这个图是表示在一张图像遍历结束后通过CDF[0] = PDF[0]; CDF[val] = CDF[val – 1] + PDF[val], val > 0 建立CDF。
第六张图:CDF查询图。
当CDF有了之后就可以输入一个灰度值然后映射一个新的灰度值并输出了。
第七张图:FPGA建立的CDF表。
与下面的Matlab建立的CDF进行比较,看是否是一样的,也就是看FPGA的程序有没有问题。
第八张图:Matlab建立的CDF表。
我们把Matlab的CDF当做理论值,如果FPGA的CDF表与Matlab的一样,那么说明程序正确,否则FP