时间:2025-04-20 来源:FPGA_UCY 关于我们 0
摘要: 在公司的 器件中设计了以图像边缘检测为基础的图像处理和显示系统,包括二维滤波器模块、图像VGA显示控制器、ROM存储器、FIFO缓冲器及相应的读写控制器。整个系统集成在一个芯片上,实验证明此设计方法工作效率高,处理速度快,性能稳定,可移植性好。
关键词: FPGA" title="FPGA">FPGA 算子" title="算子">算子 VGA
在嵌入式图形系统处理领域,图像的边缘图作为图像的一种基本特征,经常被应用到较高层次的特征描述。如图像识别、图像分割、图像增强以及图像压缩等图像处理和分析的技术中,从而可以对图像作进一步的分析和理解[1]。但是图像处理的速度问题一直是很难突破的设计瓶颈。一般情况下,控制领域及数据处理领域几乎是单片机和数字信号处理器的天下,但是在数据处理量大、实时性要求更为苛刻的场合,传统的MCU无法适应。而DSP虽然具备指令流水线和很高的处理速度,但是由于其本质仍然是依靠串行执行指令来完成相应的图像处理算法,所以其处理速度依然很受限制。因而基于速度、系统集成和产品升级等角度考虑,采用现代电子设计的最新EDA技术,使用高速可编程逻辑器件CPLD/FPGA自行开发有关处理芯片成了一种全新的解决方案[2]。
利用EDA技术自顶向下的思想设计SoC(片上系统)电路,能在一块FPGA芯片中完成图像存储器、时钟管理、图像处理模块、VGA显示控制器以及地址发生器等多个电路模块。使用公司的 FPGA芯片和软件、软件等完成电路设计。其电路结构如图1所示。
其中,ROM模块用来存储图像,地址发生器将ROM中的数据传递给边缘检测处理模块,FIFO为处理后数据的缓冲存储模块,VGA控制器用来产生外部VGA显示器的控制时序及输出图像信号。
1 边缘检测模块的设计
1.1 边缘检测算法[3]
图像边缘具有方向和幅度两个特性,通常沿边缘走向像素的灰度变化平缓,垂直于边缘走向的像素灰度变换剧烈。对于连续图像f(x,y),其方向导数在边缘(法线)方向上有局部最大值,因此,边缘检测就是求f(x,y)梯度的局部最大值和方向。对于离散图像来说,就是利用边缘检测算子来逼近梯度算子求得局部最大值,即:
f=(f(x,y)-f(x-1,y),f(x,y)-f(x,y-1)(1)
因此,检测数字图像边缘最简单的方法就是对每个像素计算f,然后求绝对值,最后进行阈值操作就可以实现。
算子:
以上两个矩阵分别代表图像的水平梯度和垂直梯度。如果用算子检测图像M的边缘,一般先用水平算子和垂直算子对图像进行卷积,得到两个矩阵M1和M2。在不考虑边界因素的时候,它们与原图像有相同的大小,分别表示图像M中相同位置对于X和Y的偏导数。然后求M1和M2对应位置的两个数的绝对值之和,得到一个新矩阵G,G是M中像素灰度梯度的近似值,然后经过阈值操作得到边缘。即:
在硬件实现过程中,由于算子具有对称性并且滤波系数只有0和±1,所以卷积只用加法器和减法器就可以实现,不需要乘法器,这会大大减少FPGA资源消耗并降低二维卷积操作的复杂度。
1.2 建模
公司提供了建模工具,可以利用它实现算法的建模和系统仿真工作;再利用软件进行分析和综合,最后下载到FPGA器件中完成模块的构建。现以处理256×256像素的256灰度图像为例说明边缘检测模块的实现过程,如图2所示,像素运算方法如式(4)和式(5)。
1.3 图像处理模块的仿真
运行在环境下,可以利用对设计结果进行仿真。处理前后的对比阈值为50,仿真结束时间为65536个时钟周期。图3为仿真图。
由图3可以看出,图像在经过边缘检测处理后较真实地反映了实物的边缘轮廓。说明设计方法正确。
2 VGA控制器的设计
对于普通的VGA显示器其引出线共含有5个信号:R、G、B三基色信号;HS行同步信号;VS场同步信号。VGA工业标准要求的时钟频率为25.(像素输出频率),行频31.496Hz,场频59.94Hz(每秒图像刷新频率)。HS、VS时序输出图和电路原理图如图4所示。其中T1包含96个时钟周期,T2包含704个时钟周期,T3包含2个行周期,T4包含523个行周期。时序驱动严格遵循VGA工作标准,即640×480×60Hz模式[4][5]。
HS设计VHDL进程:
(clk) begin
if ((clk)) then
if((hcnt>= 640+8+8) and (