水果分类的多模板匹配算法及其FPGA实现

2023-04-21 13:10周井泉程家文谷文成
计算机技术与发展 2023年4期
关键词:特征向量识别率像素点

陈 钧,周井泉,程家文,谷文成

(南京邮电大学 电子与光学工程学院、柔性电子学院,江苏 南京 210023)

0 引 言

近几年,水果的销量在不断地增加,在现场分拣时随着数量和种类的增加,其工作量自然而然也在加重。例如,水果超市经常会看到由工作人员现场称重、贴标签而排起了很长的队伍,这不仅浪费了人力资源,还浪费了消费者的时间;而且随着大数据——智能时代的发展,以后会越来越趋向于机器智能的时代。大型超市里自助结算的机器,用机器视觉来代替人工分拣,效率会更高[1]。目前有许多的国内外学者利用机器视觉对水果的识别、采摘、分拣、交易等环节进行了研究[2]。文献[3]提出了一种基于多源图像融合的绿色葡萄识别方法,首先通过中值滤波和小波变换对图像进行去噪,再利用改进的加速稳健特征方法提取特征点,根据特征偏移的一致性和图像间的仿射关系完成匹配。该算法对绿葡萄的平均识别率达到92.1%。文献[4]提出了一种红绿蓝深度相机来对荔枝进行识别。主要利用了颜色和纹理特征,设计了一种基于多尺度检测和极大值抑制算法的方法。经过实验测试,该算法对绿荔枝和红荔枝的识别率分别为89.92%和94.50%。文献[5]使用了深度学习的卷积神经网络(convolutio-nal neural networks,CNN)对水果进行识别,还采用了基于视觉几何组(visual geometry group,VGG)神经网络模型的迁移学习方法进行微调,来减少训练的时间,最后平均识别率可达到94.16 %。该类算法主要是基于计算机的中央处理器(central processing unit,CPU)或图形处理器(graphic processing unit,GPU)对图像进行处理,为了提高识别率,需要搭建深层次的网络结构。文献[6]使用了你只看一次版本3(you only look once version-3,YOLOV3)对苹果识别定位的方法,其平均精度为87.71%。一幅图像在GPU下检测时间为16.69 ms,在CPU下为105.21 ms。文献[7]采用了区域卷积神经网络(region convolutional neural networks,RCNN)中的Faster RCNN目标检测算法,其网络结构比较复杂,对绿色柑橘检测的平均精度为85.49 %,一幅图像的检测时间为0.4 s。

将机器视觉应用于实际中,就需要很高的实时性,还要考虑成本,利用计算机的软件来对图像进行处理过程耗时过长,而利用现场可编程逻辑门阵列(field programmable gate array,FPGA)来实现图像识别时,由于FPGA的流水线以及并行操作可以极大地加快运算速度,使得其在实时图像处理中应用广泛[8-10]。形状是一种直观的表现,它不随周围环境(亮度、温度等)的变化而变化,是一种比较稳定的特征信息[11]。

在一个系统中为了能够同时实现对多种水果的类型识别,就需要构建一个水果模板匹配的数据库,识别水果的种类越多,该数据库也就越大。并且在识别的时候会与数据库里的模板进行匹配,得到一个最为接近的水果种类。为了能够达到实时、高效,同时又能对多种水果进行识别,该文设计了一种多模板匹配的算法,并用FPGA硬件的方式实现了该算法。该算法的关键在于对图像形状特征的提取、模板数据库的构建以及类型匹配与识别。

1 多模板数据库

1.1 特征提取

物体的形状特征是根据物体的边缘来体现的,对边缘像素点进行提取与处理时,在一定程度上反映了物体的形状。这里需要先对图像进行灰度、滤波、边缘化等预处理,采用边缘梯度方向直方图[12]的方法进行特征提取,对每个边缘点的梯度方向按照划分的区间进行统计,就会得到一组反映物体形状的特征向量。

根据要识别物体形状的不同,特征提取的情况有两种,对于那些“圆润”的物体可以采用第一种方法,而对于那些“棱角”分明的物体可以采用第二种方法。具体的流程如图1所示。从图1可以看出,第二种方法是在第一种方法的边缘检测前对图像进行了二值化、腐蚀、膨胀的操作[13]。两种方法各有各的优点,适用于不同物体的检测。第一种方法对图像像素点的处理较少,后面得到的形状特征的数据还保留了一定的图像灰度特征,识别形状大致相同但颜色不同的物体时更加具有区分度;而第二种方法增加的一些操作目的是为了得到更加纯粹的边缘形状特征,由于一些物体存在纹理特征[14],经过Sobel边缘化得到的图像会有纹理处像素点的掺杂,这不仅对Sobel边缘化要求高,而且这是很难避免的。而增加腐蚀、膨胀操作后能有效地消除这一影响。

图1 形状特征提取流程

大部分水果的边缘形状都偏向于圆润,不像正方形、三角形、星形那样棱角分明,测量多种水果的模板数据时就很难有区分度,物体稍微旋转就会影响识别的准确率,所以采用了第一种方法对水果进行识别。而第二种方法更适合那些人为的控制生长形状,具有棱角的水果识别。

1.1.1 灰度化

采集到的是彩色图像,需要对其进行灰度化,将其转化为YCbCr类型,然后提取Y分量即可得到像素点的灰度值,转化关系如式(1)。

Y=0.183R+0.614G+0.062B+16

(1)

式中,R代表的是图像的红色分量,G代表的是图像的绿色分量,B代表的是图像的蓝色分量,Y为灰度值。

1.1.2 均值滤波

图像在采集的过程中会产生许多噪声,对后面的图像处理会产生影响,这就需要滤波来消除噪声。均值滤波法是一种线性低通滤波的方法,原理是通过求某一块邻域内像素的平均值来削弱噪声。设计采用的是3×3的模板,求取3×3邻域内像素点的平均值。

1.1.3 Sobel边缘化

图像的边缘定义是通过灰度值的变化程度来寻找边缘。这种灰度的变化程度是通过函数的导数来反映的,从数学上来看一阶导数的极大值和二阶导数过零点的就是亮度值变化最大的地方,这些导数就是图像的边缘,然后再设置适当的阈值,将这些点集合起来构成边缘[15]。Sobel算子有两组3×3的矩阵,如式(2),A表示水平方向,B表示垂直方向。

(2)

边缘检测的方法是将图像中每个点都用Sobel算子做卷积,如式(3),卷积其实是进行加权求和的过程。用式(4)、式(5)计算x和y的亮度差分近似值,其中f(x,y)是图像在(x,y)点的灰度值[16]。

(3)

Gx=f(x+1,y-1)+2f(x+1,y)+

f(x+1,y+1)-f(x-1,y-1)-

2f(x-1,y)-f(x-1,y+1)

(4)

Gy=f(x-1,y-1)+2f(x,y-1)+

f(x+1,y-1)-f(x-1,y+1)-

2f(x,y+1)-f(x+1,y+1)

(5)

将得到的Gx和Gy先求平方和再开方,如式(6),得到一个G,给G设一个阈值,大于这个阈值的点即为边缘点。同时也得到了边缘点的梯度方向θ,如式(7)。由于arctan函数是一个递增的函数,在硬件里很难实现。对其进行改进,根据映射的一一对应性,可直接用Gy/Gx来代替θ,后面对梯度方向的统计其实也就是对Gy/Gx的值进行统计。

(6)

θ=arctan(Gy/Gx)

(7)

1.1.4 梯度统计

根据上述得到的边缘梯度方向θ的范围是在0°~90°(Gx和Gy为正),对其进行划分,统计每一个方向区间内边缘像素点的个数即可构成边缘梯度方向直方图,利用寄存器累加来实现,如式(8)所示。其中i表示划分的某一区间,T[i]表示该区间边缘点的个数。这样就构成了一组特征向量。区间划分的越细,得到的特征向量也就越明显,但对图像的旋转也会有影响。

T[i]=T[i]+1

(8)

1.1.5 归一化

各个区间经统计得到的边缘点个数不易受物体平移的影响,但会受到图像放大、缩小的影响,这就需要进行归一化处理。

1.2 数据库的构建

通过归一化处理后,得到了最终的特征向量。提取出所需识别水果种类的所有特征向量,然后将所有的特征向量构成了一个多模板的数据库。考虑到物体的旋转问题,由于圆形的水果(橘子、苹果)对最终得到的特征向量影响不大,而像香蕉、火龙果等这种不规则的物体可以多生成几个方向的特征向量,在这几个方向上轻微的旋转对特征向量的影响很小。

2 多模板匹配算法及其实现

2.1 算法框图

模板数据库将用于多模板匹配算法的分类与识别过程,算法模块的框图如图2所示。

图2 多模板匹配的算法框图

对要识别的水果进行特征提取,得到特征向量,然后与数据库里的模板数据进行匹配,通过求差再平方的方法得到一个距离。如式(9)中,ai为待测的某个分量,bi为模板对应的分量,n为特征向量的维数。距离越小,与该模板越接近,则说明待测水果与距离最小的模板最为匹配,从而归类为相应的种类。

(9)

2.2 算法的仿真实现

算法实现的原理如图3所示。主控芯片PGL22G从OV5640摄像头采集到的图像经过处理,使输入图像的格式为RGB彩色图像;输入时钟是从晶振频率为50 MHz通过分频器来产生65 MHz的CLK;还有一些输入的复位信号(rst)和控制信号,如行同步信号(hs)、场同步信号(vs)等,来实现复位功能以及同步控制逻辑。灰度化时存在小数部分,而verilog硬件描述语言不能表示小数,需要先对其进行放大的操作,后面再对结果进行缩小。按照固定的倍数进行放缩时,为了节省资源可用移位操作来代替乘除操作。

图3 算法实现原理

由于采用的是流水线结构,滤波时3×3的矩阵实现就需要先缓存两行图像像素点的灰度值,设计行缓存的模块。Sobel边缘化的实现主要包括3×3的矩阵模块以及卷积求和的模块,而3×3的矩阵模块在均值滤波模块中已经实现过,可以直接调用。而卷积求和时平方和过后也不需要进行开方处理,直接将边界阈值设为平方时的阈值。

梯度统计模块的实现主要包括除法器模块以及统计模块设计,从θ的范围可以倒推出Gy/Gx的值会存在小数部分,此时就需要将Gy的值进行移位放大;根据统计提取出一组特征向量,整个过程是流水线操作,统计时可以用寄存器来暂存统计值,通过时序来控制寄存器的输出和清零。实时图像在每一帧的时候给寄存器输出一次,然后清零,统计下一帧的数据。

归一化的实现主要通过调用之前的除法器,需要统计出边缘像素点的总数以及每个区间像素点的总数作为除法器的输入,考虑到流水线结构以及节省资源,这里设计时通过时序来控制。利用寄存器的延时将所需的数据送入同一个除法器里,这样做大大节省了资源。

匹配与分类的过程主要是将特征向量与模板数据库的模板进行求差再平方,寻找一个最小距离,根据距离来识别分类。高清晰度多媒体接口(high definition multimedia interface,HDMI)的使用还需要设计解码器的模板,最后就可以将识别的结果通过HDMI显示出来。

3 硬件测试结果与分析

3.1 硬件系统架构

实验所使用的硬件开发平台为紫光的PGL22G-6MBG324的FPGA开发板。将待测物体放在黑色背景布上,通过OV5640摄像头将采集到的图像数据经过处理传入双倍数据流的同步动态随机存取器(double data rate synchronous dynamic random-access memory,DDR SDRAM)中,然后再从DDR SDRAM里读数据,将缓冲的数据传入多模板算法进行处理,最后将处理好的数据输出至HDMI,用来显示处理后的图像以及识别的结果。

整个系统的框架如图4所示,系统的资源使用情况如表1所示。

图4 硬件测试的系统架构

表1 系统资源的占用

3.2 性能测试与分析

测试的样本数据集是采用实际的水果模型,每种所需识别的水果模型各20个,选取每种水果的其中一个来构建模板数据库,其余的水果模型都用于测试过程。搭建好实际的测试平台,根据不同的条件来进行测试。

3.2.1 实时性

该系统中,梯度方向统计模块采用了一帧统计数据清零的方式,图像输出分辨率为1 024×768,而时钟的频率为65 MHz,且一个时钟周期处理一个像素点,经计算约为12.10 ms完成对一种水果的识别。并且还可以加快时钟的频率来进一步提高速度,比利用软件平台的方式进行识别的速度大大提升。

3.2.2 识别率

在室内的环境下,一个系统里同时测试了如表1所示的几种水果的识别率,考虑了实际应用情景,每种水果摆放在平台的不同位置,所以实现对目标进行了平移,且对每种水果和每种条件都进行了400次的测试。模板数据库的组成是由每种水果的水平和垂直方向的特征向量搭建的,这里的任意位置是指基于这两个大致的方向随意摆放的位置。从表2中可以看出,这些水果按照固定位置摆放时,识别准确率可达到98%以上。考虑平移、放缩、微旋的情况下会有所下降,而且还与水果的种类有关。香蕉因其形状独特,旋转的影响会比较大。

表2 室内条件下水果的识别率 %

3.2.3 性能对比

对以上四种水果在任意位置的识别率取平均准确率并与文献[17]中提供的多种方法对水果检测的性能进行比较,如表3所示。SSD、YOLO系列是对目标检测与分类是同时进行的算法。CenterNet是一种中心网络算法。

表3 不同方法的性能

从表3中可以看出,利用FPGA实现的多模板匹配算法相比于其他方法具有很高的实时性,在任意位置时的平均准确率也能达到91%以上。

3.2.4 稳定性

对该算法的稳定性测试,主要是分析光照、水果大小、位置的平移以及微旋对识别率的影响。改变光照的强度,这里用光通量来表示。在阴暗环境下,增加了色温为6 500 K,光通量为100 lm、150 lm以及210 lm的光源。为了更好地测试光照的影响,模板数据库的建立采用了150 lm的光照条件,然后通过增加和减少光通量的条件测试了下列几种水果的识别准确率,如表4所示。

表4 不同光照下水果的识别率 %

从表4可以看出,减少光通量要比增加光通量的识别率更加稳定。这是因为增加光通量,物体的边缘像素点的数量会大大增加,从而与模板的特征向量差距会拉大,而且还与水果本身的颜色有关。黄色的香蕉自身亮度比较大,当光照增强时,对其影响较小;而这里对于青苹果,对其表面增加光照,会使其表面变得很亮,差距就会变大,而选用红苹果时影响会变小。

识别率随同种水果的大小或距离摄像头的远近位置的变化如表5所示,这里采用了光通量为150 lm,距离为50 cm的条件。改变摄像头与物体的距离也能模拟水果大小的变化情况。可以看出识别率受物体的放缩影响较小。

表5 不同距离下水果的识别率 %

改变水果的微旋转角度,光照条件还是采用光通量为150 lm的条件,测试了下列几种水果的识别准确率,如表6所示。

表6 微旋下水果的识别率 %

从表6中可以看出,微旋对识别率的影响比较小,而且主要是和水果种类相关,像苹果这种圆形不用考虑旋转的影响,而像芒果和香蕉这种形状旋转会直接影响其识别率,这就需要在模板数据库里多增加这些水果不同方向的特征向量。

4 结束语

该文提出了一种对多种水果进行种类识别的多模板匹配算法。用Gy/Gx来代替θ对边缘梯度方向进行统计,从而提取出其形状特征。构建了一个多模板的数据库,再根据最小距离来匹配,完成了对多种水果的识别与分类。通过FPGA实现了这一算法,与一些神经网络算法相比具有更高的实时性,并且还可以改变时钟频率来进一步提升速度。对四种水果进行了测试,能够在固定位置的识别率达到98 %以上,并且受光照、平移、缩放、微旋的影响较小。

猜你喜欢
特征向量识别率像素点
二年制职教本科线性代数课程的几何化教学设计——以特征值和特征向量为例
克罗内克积的特征向量
基于局部相似性的特征匹配筛选算法
基于类图像处理与向量化的大数据脚本攻击智能检测
基于真耳分析的助听器配戴者言语可懂度指数与言语识别率的关系
基于5×5邻域像素点相关性的划痕修复算法
提升高速公路MTC二次抓拍车牌识别率方案研究
一类特殊矩阵特征向量的求法
基于canvas的前端数据加密
EXCEL表格计算判断矩阵近似特征向量在AHP法检验上的应用