基于FGPA图像直方图均衡优化与实现

期刊: 创新科技研究 DOI: PDF下载

惠为君

盐城工学院,江苏盐城 224051

摘要

直方图均衡是一种图像增强的基本算法。直方图均衡算法原理清晰、算法比较简单,比较适合硬件处理。基于FGPA优化并实现了直方图均衡算法,其基本方法是利用双口RAM保存灰度级统计值和累加值,然后利用移位运算代替除法运算,实现直方图均衡。测试表明,可以用EDA技术实现该算法,并且能体现FPGA速度快、实时性的优点。


关键词

FPGA;图像增强;直方图均衡;双口RAM

正文


中图分类号TN91 文献标识码  A


0 引言

直方图均衡化是一种常用的图像增强方法,其主要目的是通过调整图像的像素值分布,提升图像的视觉质量。在实际应用中,如果图像曝光不足,通常会显得过暗;相反,如果曝光过度,图像则会显得过亮。这些情况都会导致图像的细节不清晰,主要原因在于图像的像素值范围较为狭窄,不符合人眼对大动态范围的图像特性的敏感度。为了改善这一问题,需要对图像的像素值进行拉伸,以增强其视觉表现,而直方图均衡化正是一种有效的技术手段。

随着机器视觉技术的快速发展,对图像处理速度的要求不断提高。传统基于CPU的图像处理方式依赖于软件实现,通常难以满足实时性要求。由于FPGA具备强大的并行处理能力,近年来逐渐被广泛应用于图像处理领域。FPGA不仅能够完成图像的采集和存储,还可以高效地实现多种图像处理算法。直方图均衡化算法相对简单,可以通过加法和移位运算实现,非常适合FPGA的硬件架构。基于这种背景,研究如何在FPGA上优化直方图均衡化算法,具有重要的实际意义。


1 直方图均衡算法原理

一幅数字图像中,不同灰度值的像素的数目的数值随机,光照强,则灰度值大的像素数目较多,光照弱,则灰度值小像素数目较多。不同条件下,图像的像素灰度分布不同,并且没有一定的规律。可以通过灰度变换,使像素值均匀分布,这样就可以使像素具有最大的动态范围,适应人类视觉需求。

设像素灰度值为x,取值范围为[0,L-1],概率密度为。经过变换后的灰度值为y,如公式1-1所示,y的取值范围也是

                    

1-1                                         [0,L-1]。灰度值y对应的概率密度为g(y)对于任意x, 必然存在y,使得公式1-2成立。

 1-2

公式1-2两边对x求导,可以推导得到灰度值y的概率密度 变换以后,概率密度函数g(y)为常数,灰度值分布为均匀分布,这就是直方图均衡算法的由来。

对于离散图像,把积分改成累加,变换公式如式1-3所示:

      1-3

j表示灰度级,表示灰度级j对应的灰度值,表示灰度值为的像素数目。灰度值的范围为[0,L-1],N表示像素的总数目


2、直方图均衡的硬件优化算法

由公式1-3可知,计算结果主要由加法、乘法和除法实现。对于固定尺寸的图像,N由图像的分辨率决定,是一个常数,L-1表示图像的最大灰度级,由像素的位数决定。取图像的分辨率为1280×720,则 N = 921600,对于8位灰度图像,L=256。计算得到变换后的灰度值:

        1-4

整个计算过程用到加法运算和一个除法运算。除法器由于消耗资源较多,并且被除数数值比较大,位宽比较大,除法器计算较慢,时序约束难以通过。可以把除法运算转换成乘法运算和移位运算,如式1-5所示。

        1-5

n的数值由1280×720×255决定,取值为27。由此得到结果如式1-6所示,结果由加法和乘法运算得到,可以用硬件运算实现。

    1-6  

直方图均衡硬件算法实现步骤如下:

a) 统计一幅图像的直方图;

b) 计算直方图累加和

c) 计算累加和与37138的乘积,右移位27位。


3、系统模块设计

 

1-1 直方图均衡系统框图


整个系统的核心是一个双口RAM,用来存储一幅数据的直方图。双口RAM的深度由像素的位数来决定,对于8位灰度图像,存储地址为0-255,深度即为256,宽度由图像分辨率决定,对于1280×720图像,宽度即为20位。

对于一幅实时采集的1280×720图像,首先进行直方图统计,得到每一个像素的数目,存储到以像素值为地址的双口RAM中,如图1-1所示,同时把图像数据存储到存储器(DDR3)中。在场同步无效之后,对双口RAM中的直方图进行累加,然后回写到双口RAM中,覆盖之前直方图统计数据。读取DDR3存储的图像像素,一像素值为地址,读取双口RAM中的直方图累加统计值,把结果乘以37138并右移移位27位,结果就得到原始图像数据对应的直方图均衡的像素值。


4 模块实现

4.1 直方图统计模块   

基于verilog设计一个hist模块完成直方图统计和直方图累积。模块引脚如表1-1所示。


1-1 直方图模块引脚图

信号

方向

位宽

功能

clk

Input

1

系统时钟

rst_n

Input

1

系统复位,低电平有效

vsync

Input

1

场信号,高电平有效

href

Input

1

行信号,低电平有效

grey

Input

8

视频图像数据

level

output

8

像素灰度级,0-255

acc

output

20

灰度级累加和

valid

output

1

累加和统计有效信号,高电平有效


输入信号来自摄像头的视频数据,vsync场同步信号,href表示行同步信号。只有场、行同步信号都有效的时候,才可以读取像素灰度值。如图1-2所示


1-2  像素灰度统计示意图





 


1-3 直方图累加示意图


输入像素先经过一个预处理过程,对像素序列中相同的的像素个数计数,存放在寄存器CNT中。用像素值为地址,从A端口读取双口RAM中存储的像素的统计数,加上CNT的值,从B端口写到双口RAM中。这样处理的原因是,如果像素序列中,系列像素值相同,那么反复存取同一个地址的内容,可能发生错误。由于对相同像素的值,只计数,不存储,因此系统的耗时也减少。

在完成直方图统计之后,就需要实现直方图累加。如图1-3所示,其实现步骤如下:

1)从B端口依次读出0-255级灰度统计值,延时之后,从A端口输入0值,把RAM空间清零,为下存储图像像素累加值做准备。

2)将读出的统计值依次累加,为直方图均衡做准备。


4.2 直方图均衡实现

在获得像素直方图累加值之后,通过A端口写入到双端口RAM中,然后启动直方图均衡处理。从外部存储器读取一幅图像的数据,对于每一个像素值,以像素值为地址,

读取双口RAM中存储的像素灰度累加值。经过乘法和四舍五入运算以后,得到均衡后的图像,如图1-4所示。定义mul_result寄存器向量,位宽为35位,存放乘法器的计算结果。


 

1-4 直方图均衡实现示意图


直方图均衡输出结果是直接取mul_result的高28位,加上 mult_result[26],取四舍五入的结果。


5 直方图均衡仿真

基于verilog实现了的直方图均衡算法,并进行了仿真,验证功能的正确性。首先实现了视频图像直方图和直方图累加,结果存入双口RAM中,然后对视频图像实现均衡算法。实现一个testbench,首先读取一幅500×500图象,并按照视频数据格式,产生时序信号,为直方图累加模块提供激励,并获取累加模块的输出,结果如图1-5所示。图中显示了500×500图像,其灰度级及其对应的直方图累加和,比如,灰度级101对应的累加和为78212,灰度级103对应的累加和为89159,结果符合预期。


 

1-5 直方图累加结果图


基于python实现对同一幅图像的直方图均衡,结果也存储为一幅图像。设计的testbench读取源图像,形成视频图像数据格式,为直方图累加模块和直方图均衡模块提供激励,输出直方图均衡后的结果,同时,testbench读取python编程处理的图像直方图均衡结果,二者比较,如图1-6所示。图中的图像数据有三行,第一行位源图像数据,第二行


 

1-6 直方图均衡结果对比图


verilog硬件算法直方图均衡结果,第三行为python软件算法直方图结果,可以看出,二者的结果相同,符合预期。


 

6 结束语

基于FPGA图像处理是FPGA应用的重要分支。和基于软件的CPU处理相比,FPGA由于其并行特性,能实时处理图像问题,在机器视觉等领域有重要的应用。图像处理的算法,有一部分适合于用FPGA实现,有一部分用FPGA实现比较困难。直方图均衡算法适合用FPGA实现,算法实现的思路与CPU有区别。由于FPGA实现除法速度会变慢,因此需要对算法进行优化。仿真结果表明,算法的实现是成功的,效果符合预期。


参考文献

[1]王永杰. 基于FPGA的低照度环境下激光图像增强研究[J]. 激光志,2021,42(5):68-72.

[2] 姜柏军,钟明霞. 改进的直方图均衡化算法在图像增强中的应用[J].激光与红外,2014,44(06):702-706.

[3] 刘彬.基于FPGA的监控视频图像增强技术的研究[D].吉林:长春工业大学,2016.

[4] 史豪斌,胡航语.一种基于FPGA的红外图像细节增强加速方法[J].西北工业大学学报,2022,40(03):524-529[6]

[5]张宝山,杨燕,陈高科,等.结合直方图均衡化和暗通道先验的去雾算法[J].传感器与微系统,2018,37(3):148-152.

[6]冈萨雷斯,伍兹.数字图像处理:MATLAB版[M].3版.阮秋琦,译.北京:电子工业出版社,2005:54-60

            


...


阅读全文