当前位置:首页 > EDA > 电子设计自动化
[导读]本文主要介绍在FPGA上实现直方图均衡算法的总体结构和最重要的两个子模块的实现细节,以及最终的实现结果。

直方图均衡作为一种基础的图像处理方法在很多领域得到应用,但大多是通过DSP或者CPU编程实现,其优点是灵活性比较高,调试方便,最大的缺点是很难做到实时或者准实时处理,这在某些领域是不可接受的。而使用FPGA实现可以很好地解决实时处理的难题,而且目前的FPGA资源容量已经很丰富,片内的SRAM/PLL/逻辑资源已经足以应对一般图像处理算法的需要,同时随着价格的不断下降,客观上使得FPGA成为图像处理算法实现不错的选择。

  本文主要介绍在FPGA上实现直方图均衡算法的总体结构和最重要的两个子模块的实现细节,以及最终的实现结果。

  1 直方图均衡的理论基础

  原始图像灰度值r归一化在0~1之间,p(r)为原始图像灰度分布的概率密度函数。直方图均衡化处理实际上就是寻找一个灰度变换函数T,使得变化后的灰度值s=T(r), 其中,s归一化为0~1,即建立r与s之间的映射关系,要求处理后图像灰度分布的概率密度函数p(s)=1,期望所有灰度级出现概率相同。

  对于数字图像离散情况,其直方图均衡化处理的计算步骤如下:

  (1)统计原始图像的直方图

  式中,rk是归一化的输入图像灰度;nk是输入图像中归一化灰度等于rk的像素个数;n是输入图像的像素总数。

  (2)计算直方图累积分布曲线

  (3)用累积分布函数作变换函数进行图像灰度变换

  根据计算得到的累积分布函数,建立输入图像与输出图像灰度之间的对应关系,最后要将变换后的灰度恢复成原先范围。

  2 FPGA实现的总体结构

  从上面对直方图均衡算法的描述可知,在进行直方图均衡以前,首先必须对图像灰度进行统计,然后再计算输出。而要统计一幅图像的全局灰度信息,就不得不把整幅图像先写入缓存。虽然FPGA内部的SRAM资源丰富,但是仍然无法满足整幅图像存储的需要。因此,需要以SDRAM作为图像缓存,存储前后两场视频图像,然后再计算输出。SDRAM的容量、速度都能满足直方图均衡算法的要求,唯一的缺点是必须有相应的SDRAM控制器控制SDRAM的读写和刷新操作。下面简要介绍总体实现的方案,其实现框图如图1所示。

  从图1中可以看出,在输入端,模拟复合视频数据经过视频图像解码进入FPGA,在FPGA里先对数据进行简单处理,产生内部使用的行同步信号/场同步信号/数据有效信号和16bit YUV4:2:2格式的视频信号。然后,灰度信息进入灰度直方图统计模块对当前灰度信息出现的频率加以统计,将统计信息以乒乓的方式存入SRAM,与此同时所有视频数据通过“写”控制模块和SDRAM控制器存入SDRAM;在输出端,在“读”控制单元的控制下通过SDRAM控制模块从SDRAM读出上一场的数据进入灰度变换模块,根据存储的上一场的灰度统计信息,对数据进行灰度变换。这样就完成了完整的灰度直方图均衡变换。

  如果需要在显示设备(如PC显示器)上显示,还必须要有时序产生/图像数据格式变换等模块。另外,由于需要对某些内部参数进行调整(如SDRAM的Latency等),必须有一个控制接口和外部相连,在这里使用了一个I2C协议接口。

  在所有模块中最主要的实现单元主要有两大部分,一个是直方图统计和灰度变换模块,另一个是SDRAM控制器和读写控制单元。下面将详细介绍这两部分。

  3 直方图统计的实现结构

  直方图统计是通过FPGA内部两块双端口SRAM的乒乓操作实现的。其中每块SRAM的地址反映了灰度值的大小,而SRAM每个单元的数据宽度必须相应于每场图像的像素数量。例如,对于我国PAL制的电视图像来说,根据ITU-R BT.601/656数字视频标准规定每一场数字化后的视频图像,它的有效数据是每行720个有效点,每场288个有效行,每场总共207360个有效像素点,平均每个点16bit的数据量,其中有8bit灰度数据。所以在选取SRAM的大小时,应该选择容量为256(2的8次方)、数据宽度为18位(207 360大于2的17次方)的SRAM。但是为了扩展的方便,实际使用中使用了容量为256、数据宽度为22位的SRAM,这样可以对数据量更大的图像加以处理。

  每当一个新的图像数据进入统计模块,就将SRAM内相应地址的统计数据读出,累加后再存入该地址。由于前后数据可能是一样的,会造成对同一个SRAM地址同时读写而引起错误。这就需要一个模块对整个过程加以控制。基本的思路是:对前后数据进行比较,若前后数据相等就将计数器累加,直到发现数据不等才将统计数据写入SRAM,这样就从根本上避免了读写同一个地址的可能性。直方图统计状态机实现框图如图2所示。

  由于使用了乒乓模式(一块SRAM用于当前场的统计,另一块用于前一场灰度均衡的计算),状态机在上电复位后首先需要将用于统计的SRAM清空,这可以利用视频的场消隐时间加以处理(相应的状态机状态是CLEAR SRAM状态),然后等待有效数据进入(对应于STBY状态),一旦有效灰度数据进入,状态机就进入统计状态0(CALCULATION HISTOGRAM STEP0)。此时,首先读出SRAM相应于该灰度值的数据,同时将数据延迟并观察前后数据是否相同,如相同则继续停留在该状态,将计数器加1;否则进入统计状态1(CALCULATION HISTOGRAM STEP1)。进入状态1后,计算上一个灰度值的统计数据(将从SRAM中读出的值加上计数器的值再加1)存入SRAM,同时还要读出SRAM里相应于当前灰度值的数据。此后的工作与状态0相似。以此类推,状态不断在状态0和状态1之间切换,直到有效数据结束后进入统计状态2(CALCULATION HISTOGRAM STEP2),状态2 的作用是将这一行的最后一个灰度数据的统计信息写入SRAM。随后回到STBY状态,等待下一行数据。当所有有效行都统计完后,进入状态机的统计状态3(CALCULATION HISTOGRAM STEP3),重新将灰度统计数据累计后存入SRAM。

4 SDRAM 控制器的实现结构

  输入输出视频图像的速度(13.5MHz)远低于SDRAM的最高速度(143MHz),假如以单个数据对SDRAM读写(Single Write/Single Read),根本无法发挥SDRAM高速的优势,所以必须使用SDRAM的突发模式(BURST MODE),即一次读出或者写入多个数据。以美光公司(MICRON)MT48LC1M16A1S SDRAM为例,它支持1、2、4、8个字或者整页(256个字)的读写。由于属于两个时钟域,所以必须对写入或者读出SDRAM的数据缓存。在这里,读写模块分别使用两个深度为64、宽度为16bit的双口SRAM以乒乓的方式加以实现。一次突发模式读写的数据量都是64个字,因此选择深度为64的SRAM是一种折衷的办法,数据过少无法发挥突发模式的优势,数据过大则需要更多的SRAM作为缓存,使开销过高。实践证明一次读写64个数据比较合适。

  由于SDRAM结构的特殊性,它的读写刷新操作需要满足一定的时序要求,所以需要专门的控制器来维护对SDRAM的操作。图3是Hynix Electronics公司HY5DV641622AT 的SDRAM的状态机框图,该框图包含SDRAM上电时序、模式寄存器的设置、读写控制、预充电和定时刷新等多个环节。控制器的具体实现可以参考Xillinx或者Altera公司相关文档和各家DRAM厂商的资料。

  需要说明的是对SDRAM的地址划分问题。由于采用了乒乓模式,SDRAM也自然被划分为两个部分,一部分用于当前场的存储,另一部分用于前一场的读取,也就是说在存储/统计当前场的同时,将前一场读出并且计算灰度后输出。至于地址的具体划分则要考虑到SDRAM容量大小和输入视频大小。以MT48LC1M16A1S SDRAM为例,该SDRAM 的结构是512K×16×2,每块SDRAM被分为两个BANK,每个BANK有2 048行,每行256个16bit的字,总计1M字。而PAL制电视以ITU656数字化后的单场数据大约是202K字,NTSC大约是170K字,480P(YUV4:2:2格式)每帧大约是337K字,所以可以考虑将SDRAM以BANK划分,每个BANK存储一场/一帧。

  另外一个问题牵涉到逻辑地址到物理地址的映射问题,即由于PAL制每行有720个点,而SDRAM每行只有256个存储单元,所以一行图像需要占据稍小于三行的SDRAM空间,三行中的最后一行的最后一点空间不加利用。SDRAM读写控制单元的地址产生模块需要注意这一点。SDRAM的具体划分图如图4所示。

  5 实验结果与说明

  实验结果如图5、图6所示。从实验结果可以看出,直方图均衡后的图像对比度得到了明显的提高。但是,直方图均衡算法的缺点同样明显,噪声对直方图均衡的影响非常大。从对原图的处理结果就可以看到,原图的背景噪声并不明显,但是经过直方图均衡后变得非常突出。这就需要对算法进行改进,例如对局部图像进行统计,然后和全局图像统计数据进行比较,最后决定是否对该区域进行均衡。但这超出了本文的论述范围。

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

奈飞(Netflix)今年早些时候从数据中看到了一个令人担忧的信号:用户访问该流媒体服务的频率下降了。该公司对其用户在四周时间里观看其内容的天数进行了跟踪,并担心访问频率的下降会增加用户取消订阅的可能性。在发现这一问题之...

关键字: 信号 流媒体 TI ST

运放在没有输入的情况下,实际中仍会输出一个小电压。而这个小电压,会根据我们设置的放大倍数同等地被放大,同时,这个被放大的信号是有正、负之分的。

关键字: 运放 放大倍数 信号

9月5日上午消息,华为消费者业务CEO余承东表示,9月6日华为Mate50系列及全场景新品秋季发布会要发布的全新技术,让信号超越地面,让通信时刻相联。

关键字: 华为 Mate50系列 信号

Spesolimab 是一种单克隆抗体,可抑制白细胞介素 36 (IL-36)的信号传导,是首个获批专门用于治疗泛发性脓疱型银屑病发作的治疗药物 EFFISAYIL® 1 研究表明,治疗一周后,超过一半...

关键字: FDA GP BSP 信号

(全球TMT2022年7月22日讯)在华为全球智慧金融峰会2022期间,华为数据通信产品线总裁胡克文发表了题为“华为全新升级金融云网,构筑绿色数智金融新联接”的主题演讲,发布了全新升级的金融云网解决方案,推动银行业务云...

关键字: 华为 通信产品 信号 数据通信

关注疫情背景下女性科创力量,推动科学创新绽放"她"风采 北京2022年7月19日 /美通社/ -- 由凤凰网主办、欧莱雅鼎力支持的首届"她势界·凤凰网女性影响力大赏...

关键字: BSP 创始人 信号 成功率

普克鲁胺可发挥抗炎作用和降低急性肺损伤 苏州2022年7月18日 /美通社/ -- 近日,开拓药业研发团队于预印版期刊bioRxiv在线发表了题为"Inhibitory effects of GT0918 o...

关键字: RS 信号 NRF ACE2

(全球TMT2022年7月12日讯)经过专业研究人员4年的研究和开发,在RIAM、CNC、BPI和INRIA的支持下,SWEALINK提供了唯一的证人声音安全保护工具,即一种名为VOX PROTECT的插件。...

关键字: PROTECT 信号 LINK PI

团队作战、有趣玩法、劲爆福利点燃盛夏 上海2022年5月31日 /美通社/ -- 即日起至6月20日,希尔顿集团以"团长集结,嗨囤盛夏"为主题,汇聚海量品质旅游产品和力度十足的优惠活动,并且携手多位...

关键字: BSP 信号 微信

(全球TMT2022年4月22日讯)百度爱番番作为企业一站式智能营销管家,能够帮助企业对线索全生命周期进行智能化的管理。百度爱番番准备了一份转化提升指南,结合IM沟通、线索管家、中间号等功能,帮助企业在获取线索后持续提...

关键字: 手机 智能化 信号 快手

电子设计自动化

21191 篇文章

关注

发布文章

编辑精选

技术子站

关闭