基于FPGA 的实时图像边缘提取系统研究

2023-08-22 10:30刘志方
无线互联科技 2023年11期
关键词:像素点算子灰度

刘志方

(广州南洋理工职业学院,广州 从化 510900)

1 FPGA 介绍

现场可编程门阵列(Field Programmable Gate Array,FPGA)。 系统中每一单元模块都会由相连接的布线通道实现互通,可以在编程现场依照用户实际需求灵活配置。 FPGA 在实时图像边缘提取系统设计中的应用能够提高数据提取的质量,并且还具有实时性特点,资源的占有率与传统的提取系统相比可以得到有效缩减[1]。

2 基于FPGA 的实时图像边缘提取系统架构设计

2.1 整体系统架构介绍

基于FPGA 的内部阵列特点,设计时选用模块化的方式进行整体架构的设计最为合理,这样不仅能够降低系统结构布设的复杂性,还可以在后期系统运营出现问题时通过分布调试与维修的方式,保证系统的运行质量,减少不安全因素,便于维修人员的作业,同时也能够根据使用需求的变更进行子模块功能的改变。 在进行功能构思时,研究人员充分坚持了实用主义的原则,让系统不仅具备了图像边缘提取功能,还可以对实时图像的边缘进行检测与显示,主要通过三大板块对前端的按键、摄像头、显示器进行控制。 首先,当按键输入指令以后,系统会进行按键信息的检测,并完成摄像头配置模块的转换,利用SCCB 总线对摄像头中的寄存器进行控制,将报文格式转化成可以支撑后续模块处理的标准。 其次,图像采集以及输入模块会对相应的数据进行采集以及预处理,通过RGB 灰度转化、高斯滤波、二值化等模块的操作,经过Sobel 检测,输出数据。 最后,利用锁相环分频对FPGA 的时钟进行分频操作,通过VGA 配置与驱动模块,将所有的提取与处理完毕的信息,完整地展现在显示器之中。 上述架构的设定可以进一步提高摄像头时钟频率的稳定性,减少在识别以及提取过程中所出现的干扰。

2.2 系统模块设计分析

2.2.1 RGB 灰度转化模块

在设计1RGB 灰度转化模块时,应首先明确灰度化原理。 灰度化指转化彩色图像为灰度化图像。 事实上,彩色图像取决于3 个像素通道,即R,G 和B,而普通图像的组成方式则以8 bit 数据为主,所以可从每一分量中提取256 个值,这意味着每个像素点具备256×256×256 种不同的组合颜色。 而针对灰度化图像而言,每个像素通道像素点处于256 种变化范围内,这会使计算量大幅减少。 因此,利用灰度化图像可使边缘检测的速度加快。 而目前有两种常用的灰度化,其一是在求解像素点三分量RGB 平均值的基础上对其予以赋值;其二是结合YUV 色彩空间实行灰度化,主要在于以YCbCr 的格式转化RGB 图像,其中,Y,Cb,Cr 分别表示亮度、蓝像素分量以及红像素分量,只要在提取Y 的基础上,便可使图像转换为相应的灰度化图像。

传统的实时图像边缘提取系统所要处理的数据信息量较大,因此受干扰的因素也较多,而通过将RGB 值转化成灰度值的方式,能够使得算法变得更加简单,将系统所有的处理重心都放在实时图像的边缘信号中,在运行时需要将2 个字节像素点压缩成1个字节灰度像素,即可得到相应的灰度值,完成由彩色系统图像向灰色图像的转换,其计算公式可以参考如下内容:

公式中Gray 代表了灰度值;R 为彩色图像中的红色值;G 为彩色图像中的绿色值;B 为彩色通道中的蓝色值[2]。 在系统运行的过程中必须保证所有数据通道的位宽相等才能够进行加减操作,而在设计时将传入的数据已设定为了RGB565,因此在转换格式时,需要将其变为伪RGB888 格式,这样每一个通道的高位都会被保留下来,通道中的低位会取得原数据以后再进行填充,此处也可以使用全零进行填充,所使用的代码可参考如下内容:

assign red= {din[15:11],din[13:11]}

assign green= {din[10:5],din[6:5]}

assign blue= {din[4:0],din[2:0]}

考虑到在计算的过程中系统模块会涉及多个小数的运算,较为复杂烦琐,因此对其进行了简化处理,基于FPGA 使用逻辑综合运算和除法器会更加消耗资源的特点,在运算时则将小数部分全部乘以256,得出相应的整值后再除以256 即可完成转换,有效地节约了系统资源。

2.2.2 高斯滤波模块

在采集和传输图像时,噪声会影响图片质量,而基于滤波模块可对这一现象予以有效解决。 滤波在于应用平滑方式计算图像信息中心冗余的信息,使其修正至平滑状态。 例如,中值滤波主要在排序矩阵像素框的基础上提取中间值,以此作为最终像素值,进行滤波的方式。 这一方法通过排序滤波,获得相对平滑的图像,实现降噪处理。 中值滤波原理简单,较易实现,但其关键在于明确排序方法,排序方法的选择会对滤波计算速度造成影响。 以往使用的排序方法包括冒泡、选择、插入等方式,其中,冒泡排序是在比对两数大小后将大数放在前方,以此类推向前进行比较。 比如,系统中具有9 个像素点,在对比中需要实施9+8+7+6+…+1 共25 次;选择排序是先在序列中找出数值最大的数,将其放在后方,找出数值最小的数,将其放在前方,待完成上述两步后,继续以此操作处理剩余的数,其同样需要进行25 次对比;插入排序则是在选择序列中的一个数,将其放在其他两数中间,并保证一侧数大于其自身,另一侧数小于其自身,以此继续排列,这种排序方法相较于前两种较为复杂,所以并不适用。 因此,在设计高斯滤波模块时,应首先明确其原理。

(1)模块运作原理。

图像信息的提取主要是通过摄像头,其视频中会产生相应的噪点信号,噪点信号会导致区域像素与周围像素之间显示效果出现落差,从而影响到最终的边缘数据提取质量。 为能够解决这一问题,则要利用高斯滤波,将其滤除,在实际运作时图像可以利用平面直角坐标系进行分解,通过横纵坐标以及行、列来表示噪点信号的具体位置。 例如:选取图像中3×3 的矩阵,那么高斯滤波的处理公式则为:

公式中B 表示处理完毕后的矩阵;A 表示在处理之前的图像3×3 矩阵,将A 代入其中即可获得处理结果B(2,2)= 111。

(2)模块具体实现。

在系统运行时为能够得到B 结果,需要将每一个像素点周围都设定8 个像素点并将其围绕才可实现,为避免出现边界像素点不足的情况,可以通过移位寄存器级联的方式来解决。 以3×3 的矩阵大小为例,其移位寄存器的级联数目同样也是3,当前一个寄存器输出信号以后,下一个移位寄存器便会接收输入,当数据1 传输至第3 个寄存器的边界时,那么数据4 和7 也会将数据传输到之前两个移位寄存器的边界处,同样2,5,8 数据也会在下一个时钟周期到达边界处。在设计的过程中还需要注意,根据所要运算的列元素,进行移位寄存器的输出延时缓存,例如:所运算的是3 个列元素,则要做两次的延时缓存。

2.2.3 二值化处理模块

设置二值化处理模块的目的便在于需要对系统中所生成的阈值进行处理,通过对阈值的调整可以保证系统在不同的光源之下,也可以达成自适应的目标。在运作时首先要输入模块像素信号,其要大于阈值,则设置为1,如果比阈值小则要设置为0,同时需要将灰度信号8 bit 转化成黑白信号1 bit,这样可以最大限度地减少在边缘数据计算过程中所占用的资源。

2.2.4 Sobel 边缘检测模块

(1)Sobel 算子介绍。

进入21 世纪,信息技术得到了快速发展,在图像边缘检测领域已经延伸和发展出了多种梯度算子,针对不同的系统应选择相应的算子,从而提高其适应性。 Roberts 算子在最早提出的时候矩阵结构较为简单,主要由2×2 矩阵结构构成,但也存在一些问题,主要是由于噪声对其影响较大。 而后又发展出一种更高级的一阶边缘检测算子,像当前在边缘检测中常见的Prewitt,Kirsch,Sobel 算子等,其中Prewitt 和Sobel算子均采用了3×3 的矩阵形式,但二者不同的是Sobel 算子在系数之中又加入了权值,这样可以减少噪声对其的干扰性。 而在这之后所提出的Canny 算子,虽然在图像边缘处理的精准度方面更高,但是由于算法较为复杂,因此对资源的消耗量较大。 经综合考虑,最终将边缘检测模块选定为Sobel 算子。

(2)Sobel 原理实现。

边缘提取主要处理、呈现图像的边缘信息,而亮度变化较大是其关键特点。 所以,针对图像边缘像素点通常以梯度大小予以衡量。 Sobel 算子为梯度加权计算并对比阈值所得,其主要在计算图像亮度函数中应用,作为计算中的梯度值。 Sobel 算子基于卷积因子提取图像边缘,但这一卷积因子通常包括两个卷积方向,一为Y 轴,二为X 轴,算子在这两个卷积方向上具有较好的水平、竖直边缘特性。 不过在科技快速发展的背景下,现已提出四方向卷积因子,甚至八方向卷积因子,而愈发精确的卷积因子,其计算量也会显著加大。

在图像检测时,Sobel 算子可以列为一阶差分算子,其主要由两个3×3 的结构组成,在这里可以分别将其表示为Gx和Gy,方便后期像素点梯度幅值的表示,以坐标系的横纵方向所提取的像素点,可以将检测表达公式总结为如下内容:

公式中,A 表示在上一个模块中所输出的矩阵,在整理之后,最终的公式可以表示为:

然后,将G 现矩阵值与给定阈值之间进行比较,从而判定出所检测的像素点是否在边缘处。 在系统实际运行的过程中,由于Sobel 检测模块也需要处理矩阵数据,因此可以沿用高斯滤波模块中的运作原理,通过3 个移位寄存器进行矩阵列的操作,同时进行一帧图像的边界值处置。

2.2.5 VGA 配置模块

VGA 系统在对接显示器时,需要通过接口将信号转换成显示器可以识别显示的数据。 而系统所衔接的摄像头在经过相关数据的收集与处理之后,无法直接输出以VGA 时序为标准的数据信息,因此本文则提出了利用双RAM 来解决这一问题,通过存储和缓冲可以保证存储时模块输入与VGA 输出之间的读写速率相匹配,并且不会出现使用一个RAM 所出现的读空与溢出等风险,通过两个双RAM 乒乓操作,可以充分满足系统运作需求。

在运行时,如果RAM1 没有将信息数据读取完毕,但RAM0 已经写完,那么新的数据信息则可以舍弃不写,直到RAM1 读完,将两个RAM 进行读写的对调,再写入一幅新的数据信息。 通过该种设计思路,即便是系统在提取的过程中出现丢帧的情况,可以通过另一RAM 的处理,从而在显示器中完整显示出相关图像信息。

但在实际处理的过程中,即便系统处置的是一幅图像信息,在通过二值化压缩以后,也需要占用307.2 Kb 的空间,而显然设计系统时所选用的MP802 板RAM 资源无法满足实际的运作需求,因此需要通过对图像信息的实时处理来解决这一问题。如果是在外接没有格外存储设备的情况之下,由于系统所收集的信号即为视频信号,因此可以对其中的图像进行实时处理,并利用移动摄像头的方式,从而达到所检测提取图像输出的目的。

3 基于FPGA 的实时图像边缘提取系统硬件选择

硬件的选择不仅要满足软件的实际作业需求,还要充分考虑其经济性,和投入运营之后是否便于相关人员的故障检测以及维修。 因此,通过综合性的考量,最终将系统的图像处理开发板选择为MP802 型号,板载为XC7K70T-2FBG676C,与同一系列的其他产品相比具有较强的实用性,可以满足FPGA 实时图像边缘提取硬件的实际运行需求。 摄像头则选择了OV 公司所生产的7670 型号,其不仅具备体积较小便于安装的特点,还能够减少工作电压,符合经济性的要求[3]。

4 基于FPGA 的实时图像边缘提取系统应用测试

4.1 边缘检测能力测试

在对系统进行测试时,重点测试内容有两点:一是,针对系统在不同图像中所呈现的边缘提取信息质量进行检测,这样可以保证即便是摄像头采集到了不同的图像信息边缘数据,也可以经过系统模块的处理,最终满足实际的应用需求。 在测试时可以通过文字、字母、图形、色彩、图案进行综合鉴别,利用肉眼便可观测出不同图像边界的识别效果。 二是,需要确认系统在不同光源环境之中的适应能力,通过阈值的调节来对比系统在加入阈值之后所呈现出的效果,通过手动调整,便可以提高系统的光源适应性。 因此可以断定此种系统设计方法具有较强的可行性,能够精准识别出图像边缘的信息数据,并进行提取显示。

4.2 系统资源使用情况

将系统应用到实际的作业过程之中,通过对各类重要测试内容的鉴别,发现基于FPGA 的实时图像边缘提取系统,仅利用少数的系统资源,就可以完成对图像的实时检测,其资源的利用率为0.67% ~23.70%,可以将其应用到后期的大型EPGA 图像处理工程中,是相关作业不同类型图像和不同光源环境的理想应用程序。

5 结语

综上所述,该系统的设计能够有效提升实时图像边缘数据的提取质量,相比传统的实时图像边缘系统,利用FPGA 技术,可以通过移位寄存器级联,从而实现对矩阵边缘的填充,在相关模块之中所使用的灰度图像二值化处理技术,能够在导入可调整阈值的同时,降低像素点数据的位宽,因此也可以有效缩减FPGA 资源,并且通过双RAM 乒乓的输出也提升了读写速率的匹配效率。

猜你喜欢
像素点算子灰度
采用改进导重法的拓扑结构灰度单元过滤技术
拟微分算子在Hp(ω)上的有界性
基于灰度拉伸的图像水位识别方法研究
各向异性次Laplace算子和拟p-次Laplace算子的Picone恒等式及其应用
一类Markov模算子半群与相应的算子值Dirichlet型刻画
基于5×5邻域像素点相关性的划痕修复算法
基于最大加权投影求解的彩色图像灰度化对比度保留算法
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割
Roper-Suffridge延拓算子与Loewner链
基于灰度线性建模的亚像素图像抖动量计算