基于FPGA的图像边缘检测系统的设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

摘要:在Altera公司的StratixEP1S10器件中设计了以Prewitt图像边缘检测为基础的图像处理和显示系统,包括二维滤波器模块、图像VGA显示控制器、ROM存储器、FIFO缓冲器及相应的读写控制器。整个系统集成在一个芯片上,实验证明此设计方法工作效率高,处理速度快,性能稳定,可移植性好。关键词:FPGAPrewitt算子VGAQuartusII在嵌入式图形系统处理领域,图像的边缘图作为图像的一种基本特征,经常被应用到较高层次的特征描述。如图像识别、图像分割、图像增强以及图像压缩等图像处理和分析的技术中,从而可以对图像作进一步的分析和理解[1]。但是图像处理的速度问题一直是很难突破的设计瓶颈。一般情况下,控制领域及数据处理领域几乎是单片机和数字信号处理器的天下,但是在数据处理量大、实时性要求更为苛刻的场合,传统的MCU无法适应。而DSP虽然具备指令流水线和很高的处理速度,但是由于其本质仍然是依靠串行执行指令来完成相应的图像处理算法,所以其处理速度依然很受限制。因而基于速度、系统集成和产品升级等角度考虑,采用现代电子设计的最新EDA技术,使用高速可编程逻辑器件CPLD/FPGA自行开发有关处理芯片成了一种全新的解决方案[2]。利用EDA技术自顶向下的思想设计SoC(片上系统)电路,能在一块FPGA芯片中完成图像存储器、时钟管理、图像处理模块、VGA显示控制器以及地址发生器等多个电路模块。使用Altera公司的StratixEP1S10FPGA芯片和Matlab软件、QuartusII软件等完成电路设计。其电路结构如图1所示。其中,ROM模块用来存储图像,地址发生器将ROM中的数据传递给边缘检测处理模块,FIFO为处理后数据的缓冲存储模块,VGA控制器用来产生外部VGA显示器的控制时序及输出图像信号。1边缘检测模块的设计1.1Prewitt边缘检测算法[3]图像边缘具有方向和幅度两个特性,通常沿边缘走向像素的灰度变化平缓,垂直于边缘走向的像素灰度变换剧烈。对于连续图像f(x,y),其方向导数在边缘(法线)方向上有局部最大值,因此,边缘检测就是求f(x,y)梯度的局部最大值和方向。对于离散图像来说,就是利用边缘检测算子来逼近梯度算子求得局部最大值,即:▽f=(f(x,y)-f(x-1,y),f(x,y)-f(x,y-1)(1)因此,检测数字图像边缘最简单的方法就是对每个像素计算▽f,然后求绝对值,最后进行阈值操作就可以实现。Prewitt算子:以上两个矩阵分别代表图像的水平梯度和垂直梯度。如果用Prewitt算子检测图像M的边缘,一般先用水平算子和垂直算子对图像进行卷积,得到两个矩阵M1和M2。在不考虑边界因素的时候,它们与原图像有相同的大小,分别表示图像M中相同位置对于X和Y的偏导数。然后求M1和M2对应位置的两个数的绝对值之和,得到一个新矩阵G,G是M中像素灰度梯度的近似值,然后经过阈值操作得到边缘。即:在硬件实现过程中,由于Prewitt算子具有对称性并且滤波系数只有0和±1,所以卷积只用加法器和减法器就可以实现,不需要乘法器,这会大大减少FPGA资源消耗并降低二维卷积操作的复杂度。1.2DSPBuilder建模Altera公司提供了DSPBuilder建模工具,可以利用它实现算法的建模和系统仿真工作;再利用QuartusII软件进行分析和综合,最后下载到FPGA器件中完成模块的构建。现以处理256×256像素的256灰度图像为例说明边缘检测模块的实现过程,如图2所示,像素运算方法如式(4)和式(5)。1.3图像处理模块的Matlab仿真DSPBuilder运行在Matlab环境下,可以利用Simulink对设计结果进行仿真。处理前后的对比阈值为50,仿真结束时间为65536个时钟周期。图3为Matlab仿真图。由图3可以看出,图像在经过边缘检测处理后较真实地反映了实物的边缘轮廓。说明设计方法正确。2VGA控制器的设计对于普通的VGA显示器其引出线共含有5个信号:R、G、B三基色信号;HS行同步信号;VS场同步信号。VGA工业标准要求的时钟频率为25.175MHz(像素输出频率),行频31.496Hz,场频59.94Hz(每秒图像刷新频率)。HS、VS时序输出图和电路原理图如图4所示。其中T1包含96个时钟周期,T2包含704个时钟周期,T3包含2个行周期,T4包含523个行周期。时序驱动严格遵循VGA工作标准,即640×480×60Hz模式[4][5]。HS设计VHDL进程:process(clk)beginif(rising_edge(clk))thenif((hcnt=640+8+8)and(hcnt640+8+8+96))thenhs=′0′;elsehs=′1′;endif;endif;endprocess;VS设计VHDL进程:process(vcnt)beginif((vcnt=480+8+2)and(vcnt480+8+2+2))thenvs=′0′;elsevs=′1′;endif;endprocess;3存储器和地址发生器的设计Stratix器件内带有TriMatrix存储器,这些存储器由三种类型的RAM模块组成,其中有512bit的M512模块94个,4Kbit的M4K模块60个,512Kbit的M-RAM模块1个,共有920448bit的存储容量。每一种都能配制成不同存储类型的存储器,例如可以利用M512配置成FIFO功能存储器;M4K模块配制成中规模的存储器,就像ROM和ATM(同步传输模式)单元处理;M-RAM模块适合于大容量的缓冲存储器设计,例如网络协议包缓冲和系统缓存等,大大增强了可编程逻辑器件的存储能力[6]。本设计利用M4K模块设计存储图像信息的ROM单元,共需要64KB和32个M4K单元。通过QuartusII中的Megawizardplug-inmanager进行配置,图像初始化由*.mif完成。利用M512模块设计FIFO单元用来缓存处理完毕的数据,设计方法同ROM。控制单元主要完成地址生成时序和复位信号产生,其过程比较简单,这里不再详述。4顶层模块的设计与仿真将前面设计的各个模块例化成整个系统的各个组成部分,并设为顶层功能电路,进行分析、综合,然后进行电路的功能仿真,仿真结果如图5所示。图5中clk5是输入的25MHz时钟信号;HS是行扫描信号,高电平表示可以输出像素,低电平表示行消隐;VS是场扫描信号,高电平表示场扫描过程,由于周期比较长及仿真参数的限制没有显示出低电平的消隐过程。r、g、b表示输出的像素电平,因为试验平台的限制,输出信号没有经过模拟转换而是直接从FPGA管脚输出,这对于输出是二值化信号的处理结果并没有影响,可以看出在行扫描期间有处理完的像素数据输出。整个电路设计遵循EDA自顶向下的设计思想,针对各功能电路分别设计,最后组成完整系统。整个系统共用FPGA逻辑单元320个、存储器资源65Kbit、管脚7个、DLL资源1个。完全由硬件电路实现DSP算法是FPGA的优势所在,所实现的系统性能稳定、噪声小、易于移植、灵活性高、处理速度快、易于实时处理。本设计可以作为更高层图像处理技术的前期处理部分,也可以在视频处理技术中得到应用。

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功