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

引言

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

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

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

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

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

1.1直方图统计

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

数作为原始图像的直方图:

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

nk的取值决定于图像的分辨率,最大值为一帧图像的像素总数。

目前普遍采用的两种方法是如图1所示的计数器阵列和存储器阵列法。

(b)存储器阵列

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

图1(a)给出的是计数器阵列结构,每个灰度级对应一个计数器,若每个像素点有n个比特,就有2"个计数器,译码器为n-2"译码器,计数器的位宽取决于一幅图像的分辨率。

图1(b)采用的是存储器阵列结构进行直方图统计,输入图像直接和RAM的地址线连接,这里RAM的时钟应该是图像时钟的2倍,图像时钟的一半用于读-修改操作,一半用于写操作。

1.2直方图均衡

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

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

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

以灰度级为0〜255,分辨率为1024X1024的灰度图像处理为例,公式(2)可以具体化为:

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

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

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

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

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

据宽度为8位,容量为256。

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

在上述结构中,随着图像的分辨率增大,用于直方图统计的RAM资源或计数器资源会呈指数增长。在FPGA中RAM和计数器资源很有限

且非常重要,只使用RAM或者计数器进行直方图统计,会导

了实时图像处理的要求。

致FPGA中对应资源的紧缺。为了解决这一问题,本文给出了一种改进的资源可置换的实时直方图均衡结构,可根据工程实践中剩余资源的情况动态分配资源,以达到FPGA中RAM和寄存器资源平衡。本文提出的资源可置换的直方图均衡结构如图2所示。

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

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

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

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

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

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

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

图4给出了在三种图像分辨率下,用本文所给出的结构进行直方图均衡处理时,所需的寄存器资源和存储器资源关系图。在灰度级范围一定的情况下,寄存器个数和RAM的深度都等于灰度级数,所以K、L之和完全由图像的分辨率决定,且K和L呈线性关系。

图4资源可置换的直方图均衡结构性能图

3性能分析

为验证本文所提出的资源可置换直方图均衡结构的性能,我们比较本文所提出的结构与其它两种结构的性能。MatLab仿真中使用8比特灰度级图像,在分辨率为256X256、512X512以及1024X1024三种情况下,分别用上述三种结构实现直方图均衡,比较三种方法的处理时间和资源占用情况。

在上述三种方法中,当一帧图像的像素到来时,都可以对像素进行实时统计,当一帧的最后一个像素到达时,该帧的像素统计结束。因此,上述三种方法的处理时间相同。

在处理时间相同的前提下,上述三种方法的资源占用情况的比较如表1所列。

表1三种方法资源占用情况比较

方法
图像分辨率
占用寄存器个数
占用RAM容量
   256X256X8
217X256
0
文献E,4]
512X512X8
219X256
0
中的结构
1204X1024X8
221X256
0
   256X256X8
0
217X256
文献[3,5]
512X512X8
0
219X256
中的结构
1204X1024X8
0
221X256
   256X256X8
2nX256
2X256
本文提出
512X512X8
2nX256
2⑴X256
的结构
1204X1024X8
2nX256
2⑵X256

分析上表可以得出,计数器个数和RAM深度由图像灰度级决定,单纯使用计数器阵列或者存储器阵列,随着分辨率的增加,计数器位宽或RAM深度呈指数增长。使用本文中提出的混合使用计数器阵列和存储器阵列,可根据具体寄存器资源和RAM资源使用情况合理选取N,得到计数器和RAM资源的一个平衡点,使工程的资源占用率达到最小。

4结语

本文提出了一种可平衡寄存器和存储器资源的直方图均衡结构,即资源可置换的实时直方图均衡结构。该结构混合使用计数器阵列和存储器阵列,可根据具体情况合理选择计数器位宽和RAM单元位宽,达到资源使用的平衡点。还可以根据设计需要以及资源的使用情况,最大化FPGA的资源利用率,有效解决硬件工程设计中寄存器或RAM资源不足的问题。同时也可用于其它寄存器和存储器互换而不影响整个系统的功能。

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

近日举办的GTC大会把人工智能/机器学习(AI/ML)领域中的算力比拼又带到了一个新的高度,这不只是说明了通用图形处理器(GPGPU)时代的来临,而是包括GPU、FPGA和NPU等一众数据处理加速器时代的来临,就像GPU...

关键字: FPGA AI 图形处理器

当我们提到成本优化型FPGA,往往与简化逻辑资源、有限I/O和较低制造工艺联系在一起。诚然,在成本受限的系统设计中,对于价格、功耗和尺寸的要求更为敏感;但随着一系列创新应用的发展、随着边缘AI的深化,成本优化型FPGA也...

关键字: AMD FPGA Spartan 边缘计算

全球领先的高性能现场可编程门阵列(FPGA)和嵌入式FPGA(eFPGA)半导体知识产权(IP)提供商Achronix Semiconductor公司宣布,该公司参加了由私募股权和风险投资公司Baird Capital举...

关键字: FPGA 智能汽车 eFPGA

全新 FPGA 能为嵌入式视觉、医疗、工业互联、机器人与视频应用提供高数量 I/O、功率效率以及卓越的安全功能

关键字: FPGA 嵌入式视觉 机器人

Altera致力于为客户提供端到端的FPGA、易于使用的AI、软件和弹性供应链。

关键字: FPGA AI

在半导体领域,大部分对于AI的关注都集中在GPU或专用AI加速器芯片(如NPU和TPU)上。但事实证明,有相当多的组件可以直接影响甚至运行AI工作负载。FPGA就是其中之一。

关键字: FPGA AI 半导体

半导体产品老化是一个自然现象,在电子应用中,基于环境、自然等因素,半导体在经过一段时间连续工作之后,其功能会逐渐丧失,这被称为功能失效。半导体功能失效主要包括:腐蚀、载流子注入、电迁移等。其中,电迁移引发的失效机理最为突...

关键字: 半导体 电迁移 FPGA

这款较低成本的开发平台可帮助学生、初学者和经验丰富的设计人员采用新兴技术

关键字: RISC-V FPGA 嵌入式

进一步扩展旗下IEEE®-1588主时钟产品组合,可实现小于1纳秒的精确时间精度

关键字: 主时钟 数字合成器 FPGA

中国上海——2024年1月22日——莱迪思半导体(NASDAQ:LSCC),低功耗可编程器件的领先供应商,今日宣布莱迪思的中端FPGA系列莱迪思Avant-E™ FPGA荣获国际科技创新节(STIF)“年度产品创新奖”,...

关键字: 可编程器件 FPGA AI
关闭