在了解了前述公式的计算和5x5图像的映射例子后,接下来准备在FPGA中实现该过程:本次FPGA直方图均横实现主要分3步:第一步:在一帧灰度图像的遍历过程中统计出每个灰度值的像素个数的直方图统计;第二步:在一帧图像遍历后据第一步的直方图算出每个灰度的映射值,做成查找表;第三步:在第二帧图像遍历时使用查找表将灰度值替换,同时进行该帧图像直方图统计;实现框架:本次直方图均衡设计分为3个模块,顶层模块histogram_equalization.v,用于状态和输入输出控制;直方图统计模块histogram_gray.v,用于遍历一帧图像时进行直方图统计;映射值计算模块histogram_map.v,用于根据直方图和公式计算出灰度映射值;下图为模块结构:上图中,外部图像数据进入FIFO,后分别输送到了histogram_gray和histogram_map模块,进入histogram_gray模块是为了统计一帧图像的直方图,进入histogram_map模块是为了通过查找表,将图像灰度值映射后输出。其中直方图统计的逻辑在一帧数据遍历时进行,而等待一帧数据遍历完毕后,帧间隙FIFO会停止读出图像数据,将统计直方图数据送到histogram_map模块,给映射值计算逻辑使用,当映射值计算完毕而且将LUT_map这个查找表给更新后,FIFO将会继续读出下一帧数据,这帧数据就可以使用上一帧数据计算得到的映射值进行映射输出,同时这帧数据也在进行直方图统计,直方图统计的结果将会用于下一帧数据使用。histogram_equalization模块:首先外部输入到模块,都会先将数据直接写入到一个位宽8,深度2048的fifo中进行缓冲,添加