华侨大学学报自然科学版
主办单位:福建省教育厅
国际刊号:1000-5013
国内刊号:35-1079/N
学术数据库优秀期刊 《中文科技期刊数据库》来源期刊
       首 页   |   期刊介绍   |   新闻公告   |   征稿要求   |   期刊订阅   |   留言板   |   联系我们   
  本站业务
  在线期刊
      最新录用
      期刊简明目录
      本刊论文精选
      过刊浏览
      论文下载排行
      论文点击排行
      
 

访问统计

访问总数:19518 人次
 
    本刊论文
基于FPGA的灰度图像直方图均衡化实现

  摘 要直方图均衡化算法是空域图像增强技术的重要算法,是图像压缩、图像分割和图像识别等后续图像处理的基础,在图像预处理技术中有着广泛的应用。本文介绍了一种利用FPGA实现灰度图像直方图均衡化的方案,实践测试表明,该设计方案具有控制逻辑简单,便于实现,效果明显等优点。

  【关键词】FPGA CDF 概率统计 图像灰度 直方图均衡

  1 引言

  直方图均衡化算法是空域图像增强技术的重要算法,是图像压缩、图像分割和图像识别等后续图像处理的基础,在图像预处理技术中有着广泛的应用。目前,针对视频图像的直方图均衡化算法均采用高性能处理器和高速存储器结合的图像处理系统实现,大量硬件存储器资源的使用提高了逻辑设计的复杂度和系统成本,无法满足图像视频处理的低成本要求。

  本文根据视频图像相邻两场直方图的高相似性和直方图均衡化算法特点,设计了一种基于FPGA+SRAM的直方图均衡化处理硬件实现平台,并在FPGA上通过硬件逻辑实现了直方图均衡化算法。经过实际测试,该种方式能够有效的实现灰度图像的对比度增强,使图像显示质量得到明显改善。

  2 直方图均衡化概述

  直方图均衡化处理实质是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布,也就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。通过将原始图像的直方图变换为均匀分布的形式,增加了像素灰度值的动态范围,从而达到增强图像整体对比度的效果。

  设原始图像在(x,y)处的灰度为f,而改变后在该处的灰度为g,则图像均衡化处理的过程可表述为将(x,y)处的灰度f映射为g,将该映射函数定义为:

  g=EQ(f) 式(1)

  在式(1)中映射函数EQ(f)应满足以下两个条件(L为图像的灰度级数):

  (1)EQ(f)在0≤f≤L-1的范围内是一个单调递增函数。这是为了保证在均衡化处理过程中不打乱原始图像的灰度排列次序,使得原图像在经过处理后仍保持从黑到白(或从白到黑)的排列次序;

  (2)对于0≤f≤L-1,有0≤g≤L-1。这个条件是为了保证变换前后,图像的灰度动态范围一致。

  概率论中的累积分布函数(Cumulative Distribution Function,CDF)即可满足上述两个条件,并且通过该函数可以完成将原图像f的分布转换成g的均匀分布。由于在图像处理中,原始图像各像素点的灰度相互之间为离散数据,故可将CDF离散化处理,按式(2)进行处理,其中L为图像的总灰度级数,n为图像的像素总数,nj为灰度为j的像素点数量。

  式(2)

  3 FPGA逻辑设计

  3.1 画面累积分布函数的实现

  在画面分辨率及灰度级已确定的前提下,对式(2)进行变换可得式(3)。设画面分辨率为1024×768,画面灰度等级为64。

  式(3)

  根据式(3),在FPGA内实现直方图均衡化处理唯一需要确定的即为累积分布函数

  ,而计算累积分布函数的基础则是计算概率密度函数nj。

  在FPGA内部需同时开辟64个process进程同步并行进行累积分布函数的统计,每一个进程分别只用于实现1个灰度值的统计数量加1操作。

  将求出的累积分布函数值d0~d63在场同步的消隐区间写入FPGA片上的一组RAM中,对应的地址为“00”~“3F”,这样在该片上RAM中,相应的地址k所对应的即为灰度值为k的像素点所对应的累积分布函数值。

  3.2 灰度画面的直方图均衡化实现

  根据3.1节,将输入画面的累积分布函数求出并存入FPGA片上RAM后,直方图均衡化的操作实际上就已变成了一个简单的查表操作,即根据当前输入像素点的灰度值k,读出片上RAM地址k中存储的数值dk,然后再将dk根据式(3)乘以一个系数

  ,此时得到的数值即为当前像素点在经过直方图增强处理后的灰度值。经过适当的处理,系数的乘除法可简化为乘法和移位操作,如下式(4)。

  为适应动态画面,在实际实现的过程中,需在FPGA片外扩展两组SRAM,用于画面帧存,对这两组SRAM进行乒乓操作来完成画面的缓存,从而实现动态画面的直方图均衡化操作。具体实现过程如下:

  3.2.1 在奇数场画面

  计算实时输出画面的累积分布函数,并存入FPGA片上RAM(RAM_ODD),同时将实时画面存入FPGA片外的A组SRAM。在进行这些操作的同时,FPGA读取片外的B组SRAM缓存的上一个偶数场的画面,并将读出的每一个像素点的灰度值,在缓存上一场画面的累积分布函数的FPGA片上RAM(RAM_EVEN)中进行查表,再将查表得出的值进行乘法移位操作后输出,即得到上一个偶数场画面经直方图均衡化处理后的画面。

  3.2.2 在偶数场画面

  同样计算实时输出画面的累积分布函数,并存入FPGA片上RAM(RAM_EVEN),同时将实时画面存入FPGA片外的B组SRAM。在进行这些操作的同时,FPGA读取片外的A组SRAM缓存的上一个奇数场的画面,并将读出的每一个像素点的灰度值,在缓存上一场画面的累积分布函数的FPGA片上RAM(RAM_ODD)中进行查表,再将查表得出的值进行乘法移位操作后输出,即得到上一个奇数场画面经直方图均衡化处理后的画面。FPGA的逻辑功能模块互连关系如图1所示。

  4 实际测试

  实际测试的硬件平台原理框图如图2所示。前端利用摄像头输入单色的PAL制视频。在验证板上,核心器件采用altera公司的Cyclone III系列FPGA,其外围挂载两片1M×16bit的SRAM用于直方图运算时视频画面的帧存,1片4M×32bit的SDR SDRAM用于完成PAL制视频信号的隔行转逐行和视频分辨率缩放。验证板的前端采用AD公司的ADV7403完成对PAL制模式视频信号的模数转换,后端采用TI公司的TFP410芯片将处理完的视频RGB信号转换为DVI信号,送至监视器进行显示。

  利用摄像头实时拍摄外景,FPGA进行直方图均衡化处理,将处理后的画面转化为DVI信号送至监视器显示。处理前与处理后的画面显示效果如图3所示。

  比较图3处理前后的画面,可以看到经过直方图均衡化处理后,画面整体的对比度、层次感均有提升,原先画面中一些模糊不清的画面细节显示均有较为明显的改善。但对于原画面中灰度等级较低的部分像素(画面左下角区域),经过直方图处理后,部分低灰度等级存在融合的现象,导致该部分画面的对比度等级无法区分,画面细节反而有所缺失。

  5 结论

  本文提出了一种利用FPGA实现灰度图像直方图均衡化处理的方法,由于FPGA具有多线程并行处理的优势,因此这种直方图均衡化处理的过程具有很高的实时性,可以实现对输入视频图像的实时处理。经过处理后的视频图像具有较好的画面层次感,增加了像素灰度值的动态范围,实现了增强图像整体对比度的效果。

  参考文献

  [1]Peter J.Ashenden,VHDL设计指南[M].机械工业出版社,2005:131-240.

  [2]DDR and DDR2 SDRAM High-Performance Controller User Guide. Altera,2009:96-112.

  [3]AN 328: Interfacing DDR2 SDRAM with Stratix II, Stratix II GX, and Arria GX Devices. Altera,2009:11-79.

特别说明:本站仅协助已授权的杂志社进行在线杂志订阅,非《华侨大学学报自然科学版》杂志官网,直投的朋友请联系杂志社。
版权所有 © 2009-2024《华侨大学学报自然科学版》编辑部  (权威发表网)   苏ICP备20026650号-8