资源可置换的实时直方图均衡结构设计

时间:2022-09-08 12:28:44

资源可置换的实时直方图均衡结构设计

摘 要:直方图均衡是一种有效的空间域图像增强技术,但是它的直接FPGA实现资源需求很大。为解决FPGA硬件资源紧缺的问题,文中提出了一种资源可置换的实时直方图均衡结构。该方法可通过多次比较单纯使用寄存器资源方法、单纯使用RAM资源方法来进行资源置换以缓解资源占用情况,结果表明,该方法能根据具体情况动态调整资源分配,从而有效解决硬件工程设计中资源不足问题。

关键词:直方图均衡;FPGA;资源可置换

中图分类号:TN911 文献标识码:A 文章编号:2095-1302(2014)08-0039-03

0 引 言

直方图均衡是一种有效的空间域图像增强方法。它通过灰度变换使得图像在每个灰度级上都具有相同多的像素点,以提高图像的对比度。

自原始直方图均衡算法提出以来,由于处理的需要出现了许多改进形式。如自适应直方图均衡(AHE)[1],对比度受限的自适应直方图均衡(CLAHE)[2]等。这些算法通过拉伸某个特定区域的灰度级动态范围来提高图像质量,很好的改善了图像的视觉效果。目前关于直方图均衡算法的硬件实现方法主要有两种:计数器阵列实现[3,4]和存储器(RAM)阵列实现[5]。但随着算法复杂度的增加,带来的硬件资源消耗也急剧上升[6,7]。这严重影响在芯片上添加其它功能。

本文在考虑到FPGA中寄存器和RAM使用率平衡性的基础上,以原始直方图均衡算法为例,提出了一种资源可置换的实时直方图均衡结构,为解决工程实践中寄存器或RAM资源紧缺提供了一种有效的结构。

1 FPGA中普遍采用的直方图均衡结构

直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均匀强度分布的图像,即使得图像在每个灰度级上都具有相同像素点数的过程[8]。算法中涉及到浮点运算,但由于FPGA本身构建浮点运算逻辑运算时间比较长,并且会加重硬件压力,所以为避免浮点运算,一般可以将算法按如下步骤进行拆分:

1.1 直方图统计

统计每个灰度级的像素点个数,为避免小数运算,不对原始图像数据进行归一化,直接统计每个灰度级的像素点个数作为原始图像的直方图:

1.2 直方图均衡

进行直方图均衡化,可得到灰度级映射关系,输出时按照式(2)所给的新的映射关系对原始图像各像素点进行灰度转换:

其中Sk对应原灰度为k的均衡后的灰度值,优化后的算法可以同时进行直方图统计和均衡,其可以根据精度要求利用简单的移位代替除法来实现。

以灰度级为0~255,分辨率为1 024 × 1 024的灰度图像处理为例,公式(2)可以具体化为:

假设输入图像每一个像素的灰度值都相同,则统计的像素累加和最大,为1 024 × 1 024个,在FPGA中需要定义数据位宽为21位,容量为256的RAM来统计0~255灰度级像素数目。

当一帧图像的直方图统计完毕时,在相邻两帧的时间间隔里,根据式(3)计算Sk的值存入RAM中,建立灰度级映射表。以原始图像数据为RAM地址,输出图像直方图后的数据。由于是灰度图像,所以此灰度级映射RAM大小为数据宽度为8位,容量为256。

2 资源可置换的实时直方图均衡结构

在上述结构中,随着图像的分辨率增大,用于直方图统计的RAM资源或计数器资源会呈指数增长。在FPGA中RAM和计数器资源很有限且非常重要,只使用RAM或者计数器进行直方图统计,会导致FPGA中对应资源的紧缺。为了解决这一问题,本文给出了一种改进的资源可置换的实时直方图均衡结构,可根据工程实践中剩余资源的情况动态分配资源,以达到FPGA中RAM和寄存器资源平衡。本文提出的资源可置换的直方图均衡结构如图2所示。

在图2所给出的结构中,可将图2中256×20的直方图统计RAM拆分成256个11位的进位计数器(counter_00-counter_ff)和一个256×10的直方图统计RAM。在图2中,256个计数器对应256个灰度级,用来统计每个灰度级的像素个数,计数到1 024时产生进位标志。FIFO用于缓存当前计数到1 024个的像素点的灰度值,防止多个计数器同时满足条件时造成直方图统计错误。式(3)的形式可以变为:

那么,在本文提出的结构中,寄存器个数为2N×256,RAM容量为2(21-N)×256,其中0≤N≤21。可根据实际情况调整N的大小,从而实现资源置换。具体操作流程如图3所示。

图3中,译码器接收原始图像并激活相应的计数器,对应的计数器加1,当计数器累加和等于1 024时,RAM相应地址内容加1。RAM的地址对应256个灰度级,循环检测计数直到一帧结束。在等待下一帧到来的时间里,运算逻辑开始根据式(4)计算原始图像每一级灰度映射后的灰度值,取每个RAM单元中的高8位存放到灰度级映射RAM中,建立灰度级映射查找表。当下一帧原始图像到来时,将原始图像的灰度值和灰度级映射RAM的地址线相连,由于相邻两帧图像间对应像素点的灰度值相差较小,这样当前帧可以用前一帧图像的灰度映射表映射输出当前帧直方图均衡后的数据,满足了实时图像处理的要求。

上述方法在统计直方图时会有截断误差。即若一个灰度级的像素有1 023个,将不会产生进位。但是由于直方图均衡化后的图像质量主要是人主观判定的,微小的误差在视觉上不会造成影响,所以资源置换造成的截断误差可以忽略。

在上述改进的直方图均衡结构中,计数器的位数和直方图统计RAM的大小可以互相置换。假设一幅图像的分辨率为M×N,计数器的位宽为K,进位阈值为T(上述算法中T为1024),直方图统计RAM的位宽为L,统计最大值为S(上述算法中为1 024),将M×N,T,S改写成指数格式:

对于灰度级范围固定的图像来说,若采用单一结构,则寄存器的个数和片内RAM的深度是固定不变的。但是由式 (8)可知,采用本结构对分辨率为M×N的图像进行直方图均衡处理时,寄存器的位宽和RAM的位宽可以调节置换,相对于只用RAM或者只用寄存器进行直方图统计的结构,本文提出的结构可以通过选取合适的K,L值,对于具体工程找到一个硬件资源占用的平衡点。

上一篇:教室用电数据采集系统的上位机软件设计 下一篇:基于无线传感器网络技术的水产养殖场信息获取...