基于FPGA的CLAHE算法实现

 参考文献《基于 FPGA 的图像去雾算法优化研究》

直方图均衡算法是以直方图统计为理论基础演变而来,此算法思想是使图像的灰度
值处于动态均匀分布的状态。此算法在获得图像的灰度级分布后,利用累计函数将图像
的灰度级由集中、分散分布拉伸为均匀分布,提高图像的对比度。但是,只对简单的图
像有效,无法适用于较复杂场景的图像。在此理论基础上局部直方图均衡被提出,将一
幅图像划分为若干子块来分别进行直方图均衡处理。AHE 算法通过累计各个子块的直
方图后重新分配图像的灰度值,但是,在统计各个子块时会产生重复累计,使得局部对
比度降低,子块交叉处噪声被过度放大。CLAHE 算法 是对图像中所有像素赋予新的
灰度值,改变图像中亮区和暗区的比例,来增强对比度和视觉效果。此外,CLAHE 算
法通过设定阈值的方法对图像灰度值进行裁剪,双线性插值的方法确定各个子块的位置,
弥补了 HE 和 AHE 的不足。此算法有效的增强了图像的对比度,消除了子块间的噪声。

CLAHE 算法具体步骤如下。
1. 子块划分。将低质量图像分割成只相邻的大小相等、不重叠的若干子块。为了防
止过度增强,需根据实际情况划分子块的个数。
2. 直方图统计。灰度直方图作为算法的基础,可以反映图像中相同灰度级的频率与
灰度级的关系,对各个子块进行灰度直方图统计。

3. 裁剪重分配。为了防止对比度被过度放大,需要限制对比度,选取合适的阈值对
直方图裁剪重分配。将多于阈值的部分均匀分布到每个灰度级上。图 3.4 为裁剪重分配
示意图。将下图左侧中大于阈值的蓝色部分分配到阈值之下的部分,右侧中仍有少部分
大于阈值的绿色部分,可以通过二次裁剪直至像素点均小于阈值。关系,对各个子块进行灰度直方图统计。 

4. 在对对比度限制后,对每个子块进行直方图均衡,在每个灰度级动态均匀分布。
5. 利用双线性插值法重新获得子块的新的灰度值。此方法解决了将局部处理结果累
计成整幅图像的过程中产生子块之间边缘部分不连续的问题。

 

FPGA实现

CLAHE 算法中各个子模块以流水线的形式并行处理数据,满足在视频图像去雾过
程中高速的数据读、写操作需求。CLAHE 算法实现流程如图 4.2 所示,首先,在第 n 帧
有效时,对输入的 RGB 像素信息进行图像子块划分。其次,根据像素的横、纵坐标确
定像素的位置并进行裁剪重分配直方图统计。再其次,调用器件内部的双口 RAM,将
统计的结果映射到四个双口 RAM 中。双口 RAM 具有两组数据总线、时钟信号和地址
总线等信号,可以保证数据传输的正确性。由于是并行处理数据,所以当 RGB 像素信
息进入子块划分模块时,RGB 像素信息也进入双线性插值模块,此模块通过接收上一帧
处理的数据,得到双口 RAM 中统计的灰度值,将其进行双线性插值运算。最终输出处
理后的像素信息。 

图像子块划分电路

子块划分模块。本设计使用分辨率为 640×480 的视频图像,在子块划分时将视频图
像分为 4×3 即 12 个 160×160 的子块。

裁剪重分配直方图统计电路

裁剪重分配直方图统计电路,此电路设计是在 ram_control 模块中进行的,使用乒
乓技术将 24 bit 的 RGB 数据处理后传输到 12 个 ram_control 模块中。

算法模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值