基于DSP系统的芒果品质检测平台构建
2017-04-06潘俊洋PANJunyang项辉宇
潘俊洋PAN Jun-yang 项辉宇 - 薛 真
(北京工商大学材料与机械工程学院,北京 100048)
芒果的品质主要由其大小、成熟度、腐坏程度决定,而且成熟的芒果更易腐烂,并极易造成周围芒果的共同腐烂。近年来,随着人工智能的不断发展,视觉检测技术使芒果的无损检测得以实现。刘静等[1]通过面积获取,利用线性回归分析确定测量值和真实值之间的相关性,以此进行芒果表面缺陷的分级。李甦等[2]通过大量统计水果表面颜色的分布规律提出了“数量—程度”“大小—评价测光值”2种空间模型来实现缺陷检测和分级。康志亮等[3]利用微处理器结合可见光/近红外漫反射原理进行数据的处理和分析,以此来对苹果是否受损进行识别和分类。赵杰文等[4]利用高光谱图像技术,提取547 nm波长下的图像,并通过不均匀二次差分和图像处理技术检测苹果表面损伤,正确率达到88.57%。但上述方法对试验环境和设备要求较高,速度不够高,不利于实际生产流水线上的检测。党宏社等[5]提出了运用ARM嵌入式技术对芒果进行检测和分级,但仍未能脱离对现有QT/ Embedded软件平台的依赖,并且只能做到对尺寸的检测分级。本试验基于DSP开发板构建检测平台,对芒果品质进行视觉的检测,同时将味觉传感器与视觉检测相结合,为芒果及类似的水果检测提供一种较好的方法。
1 检测平台基本架构
1.1 主要硬件构成
1.1.1 DSP6437开发板 与PC产品相比,DSP系统集成度更高,速度更快,功耗更小。其强大的数学运算能力使得实时图像处理得以更好实现。基于达芬奇三代的架构的DM6437,专门适用于对数字视频、图像采样处理、视觉分析等应用进行剪裁和优化。并且美国TI公司的DSP支持汇编语言、ANSI的标准C语言,应用范围更广。
1.1.2 传送带 将芒果放在传送带上进行运输,模拟生产输送中的流水线作业。为了触发CCD相机进行一帧图像的获取,选用M12激光传感器,当芒果传送到传感器处,触发程序进行图像捕捉、处理。
1.1.3 气味检测传感器 本试验选择的QS-01传感器是一种新型的二氧化锡半导体气体传感器,不仅响应时间短,而且对腐烂所产生的硫化氢等异味气体有着很高的灵敏度。传感器采用塑料作为外壳,可以在极低的功耗下获得极好的感应特性,和51单片机的ADC模块结合使用,检测准确。
1. DSP6437开发板 2. 传送带 3. 显示屏 4. M12激光传感器 5. CCD 6. 51单片机 7. QS-01气味传感器
图1 试验检测平台
Figure 1 Experimental platform
1.2 检测方法及流程
本试验搭建的检测平台,将OpenCV图像处理算法移植于DSP中,并与DSP快速的数据处理速度相结合。通过CCD采集图像信号,经过解码器TVP5150转换成格式为YUV422的8-bit数字信号,调用VLIB库函数将其转换为常用的RGB格式,存储在片外存储空间DDR2中。筛选获取包含芒果的矩形连通区域,将感兴趣区域灰度化,以其均值判断成熟度。为了极大保护图像细节优化后续处理,采用超限领域平均法进行平滑滤波。运用二值化进行图像分割,二阶微分拉普拉斯算法计算芒果边缘,通过直方图统计腐烂区域大小,并将气味传感器综合检测判断腐烂与否,相较于单一的视觉检测更为准确。试验流程见图2。
2 关键技术及实现
基于DSP6437搭建芒果品质检测平台,关键技术包括EMCV移植、视频图像处理及平台算法优化。
2.1 EMCV移植
DM6437目前只支持美国TI公司提供的VLIB和IMGLIB视频图像处理算法库,但这2个库仅提供了很少量的基本图像算法,远不能支持一个完整全面的应用算法开发,并且在使用过程中有很多的限制。OpenCV拥有丰富的图像处理算法,由一系列的C和C++编写而成,并提供了多种其它语言形式(Python、Ruby)的函数接口,包含了机器视觉和视频图像处理领域的许多通用和高级算法。其移植性较强,目前已有很多移植到ARM和DSP平台的成功先例[6],选用OpenCV视觉库进行DSP环境移植方便可行。OpenCV总共有五大模块,有些是不需要进行移植的(例如Highgui图像界面模块),本次试验主要对OpenCV1进行了DSP的移植,移植了CV(核心算法)和Cxcore(数据结构支持)2个模块(见图3),在DSP中以EMCV的形式呈现。
2.2 视频采集及成熟程度判定
由于YUV与RGB视频信号相比,在传输过程中只需要占用极少的频宽,所以多用于优化的彩色视频信号的传输。DSP中通过CCD捕捉到的图像通常都通过YUV信号进行传输,通过VPFE对CCD的各项参数进行设定,调用vpfe_init获取一帧图像数据的首地址,调用VLIB_convertUYVYint_to_RGBp1(Uint8*)进行YUV与RGB的转换[7],便于图像运用算法进行处理。
2.2.1 图像灰度化 图像灰度化就是将原彩色图像上的三原色R、G、B的亮度值按式(1)进行运算,依次将算出的灰度值赋给新图像相对应的像素位置处[8]。灰度图像矩阵元素的取值范围通常为[0,255]。通过多次对比发现:熟透芒果的灰度值高于未成熟的。为了保证计算的实时性,通过VLIB中的VLIB_create Connected Componentslist函数进行连通区域查找,通过VLIB_getCCFeatures遍历每个连通区域,并获取每个连通区域的长、宽、高等属性,以此对连通区域进行筛选,除去极小的干扰区域,得出包含芒果的矩形区域的位置,利用循环语句遍历区域图像灰度值,求出灰度均值,以此来判断其成熟程度。
(1)
式中:
H——遍历点灰度值,像素;
R——遍历点红色像素值,像素;
G——遍历点绿色像素值,像素;
B——遍历点蓝色像素值,像素。
2.2.2 超限邻域平均法平滑除噪 由于试验环境及硬件设备的影响,采集到的图像不可避免地会有噪声的存在,噪声会将一个简单阈值处理的问题变得难以解决。所以为了避免干扰,一般会在图像预处理时对图像进行平滑滤波。
本试验采取了超限领域平均法[9]对图像进行了滤波操作,其原理是:当某个像素点处的灰度值减去其领域灰度均值大于某个设定的阈值时,才会执行均值滤波操作。相比于最常用的均值滤波方法,该算法不仅能有效地消除图像噪声,而且保护了较小灰度差下的图像细节(见图3)。超限邻域平均法的表达见式(2)。
(2)
式中:
f(i,j)——原图像中的灰度值,像素;
fa(i,j)——原图像中邻域的灰度平均值,像素;
T——分割阈值,像素;
g(i,j)——变换后的图像灰度值,像素。
2.2.3 二值化及拉普拉斯算法计算大小分级 二值化是图像处理的基本算法,常用于图像分割,将目标物体与背景区分开来[10]。对于受外界干扰较小的图像,根据直方图寻找波谷,以波谷值作为阈值对图像进行二值化分割。
拉普拉斯求边缘是一种二阶微分算法,具有旋转不变性,较之常用的一阶边缘算法(梯度算法、sobel算法等)更为准确[11-12]。二维函数f(x,y)的拉普拉斯运算可以定义为:
(3)
式中:
Δ2f——该点处灰度函数二阶微分值;
f(x,y)——x,y像素坐标处的灰度值函数,像素。
定义2个数组,将检测到的边缘点放入2个数组中。以图像中心作为旋转中心,旋转的角度为α,设置α[0,90]变化的循环,通过比较得出包含芒果的最小矩形的面积,以此判别芒果的大小,进行分级。
2.2.4 灰度直方图统计检测腐烂区域 灰度直方图是关于灰度值的函数,是图像检测处理中最常用的方法之一[13]。在一个连续的灰度图像中,通常将灰度值为D的所有轮廓线所包含的面积记为A(D),则灰度直方图可以定义为:
(4)
式中:
H(D)——灰度值为D的像素点个数;
D——灰度值,像素;
A(D)——灰度值为D的所有轮廓线包含的面积,像素。
对于离散函数ΔD=1,则上式可以简化为H(D)=A(D)-A(D+1) ,所以,对于任意数字图像,面积函数A(D)就是大于或等于D的像素点的个数。
根据多次检测试验,统计分析灰度直方图中3个波峰分别代表的含义(背景、腐烂区域和未腐烂区域),根据统计结果,区分背景、腐烂区域和未腐烂区域,分别计算出3个范围内的像素点的数目,以此判断出芒果是否已经腐烂及腐烂区域的面积大小。
2.3 平台优化
2.3.1 C代码优化 由于DSP6437的内部寄存器是32位的,通过内核8个执行单元进行数据处理时,DSP编译规则规定了long型数据为40位,使用long型数据会更多地占用执行单元,延长程序运算时间。DSP处理short*short类型的数据运算时只需要一个指令周期,而执行int*int运算时需要5个指令周期。因此,进行定义数据时尽量使用short类型,可以极大地减少内存消耗和程序运行时间。
在进行边缘检测后,对图片进行旋转时,根据实际需求,只需对拉布拉斯求边缘后的边缘点的坐标进行旋转,这样极大地减少了程序循环计算次数及运行时间。以100×100的目标物为例,旋转图片一次的计算量为10 000,而只对边缘坐标进行旋转的计算量仅为400,极大地改善了程序的运行。
2.3.2 存储空间优化 存储空间的优化主要通过.tcf文件中的存储器管理模块来实现[14]。因为C编译器中堆的大小默认值为1 KB,而通常获取一帧图像进行算法运算时所需要的动态内存>>1 KB,并且DM6437的片内存储资源有限,因此需要从DM6437的片外存储空间SRAM和 DDR2中分配出一部分空间作为堆,进行图像数据的存储和运算,而将一些全局性的结果变量及数值存储到片内存储中拥有80 KB空间的L1D中。通过手动划分内存可以极大地节省代码运行时间。动态内存使用malloc()进行空间分配,使用完后立刻调用free()进行释放,置空指针,防止内存溢出。
2.3.3 并行处理 DM6437采用了美国TI公司第三代超长指令集结构(VelociTI3),内置TMS320C64x+DSP内核,能够同时进行8个8位或4个16位的并行MAC运算,而且能实时处理8路CIF或3路D1格式的编码算法。CCS是DSP的集成开发环境,能够实现实时、多任务的开发。合理地将程序进行分模块的编写,并且分配好优先等级,通过.tcf文件合理的配置分配任务管理器,将可并行处理[15]的程序模块链接入管理器中,极大调用了DSP的高速内核运算功能,节省了程序运行时间。
2.3.4 图像处理库的使用 在DSP开发中,为了节省开发时间和难度,TI将一些成熟的算法封装为模块,供开发者使用。如果能充分利用这些算法支持库,对于加快DSP开发进程与提高代码质量、稳定性有非常大的帮助。在图像处理领域,TI公司给用户提供了VLIB、IMGLIB、IQMATH等图像处理库[16],本检测平台主要运用到的是VLIB和IMGLIB。本试验将VLIB库添加到了工程文件并多次调用其算法,包括YUV转RGB、灰度化、连通区域的查找筛选等,并使用了IMGLIB库的图像格式转换、图像滤波以及编码解码压缩等函数功能,极大缩短了程序运行的时间。
2.3.5 程序固化烧制 算法的DSP实现、DSP程序的移植、优化和程序测试工作完成之后,需要将可执行代码固化[17]到DSP设备中,使程序能够在脱离PC机的情况下通电自行启动。DM6437 提供3种引导模式:ROM 引导、仿真引导和主机引导,最常用的是ROM 引导方式,即通过片上 BootLoader 引导程序启动。而SEED公司的DM6437开发板程序的烧写,只需要将程序.out文件通过相应的项目程序复制写入到FLASH首地址的内存即可,每次启动时程序通过二级引导程序就可烧写至执行程序首地址内存段。
2.4 检测试验
搭建好试验平台,将芒果放在传送带上,开启传送带和采集视频图像。采集到的原始图像经连通区域筛选后的图像见图4。
2.4.1 芒果图像灰度化 经过灰度化处理,见图5。
2.4.2 超限邻域平均法平滑去噪 超限邻域平均法平滑去噪后的图像见图6。
2.4.3 芒果大小分级 根据图像二值化及拉普拉斯算法的计算结果,设置α[0,90]变化的循环,通过比较得出包含芒果的最小矩形的面积,以此判别芒果的大小,进行分级。芒果面积及分级结果见表1。
2.4.4 判断芒果是否腐烂 通过多次检测发现,芒果腐烂部位的灰度值与未腐烂区域有明显的差异。由图7可知:灰度直方图有3个波峰,依次为背景、腐烂区域和未腐烂区域。通过直方图可以计算出这一范围内(灰度值为40~65)的像素点的数目,以此判断出芒果是否已经腐烂,并可得出腐烂区域的面积大小。
2.4.5 气味觉传感器的综合判定 本试验在视觉检测的基础上,结合空气质量传感器QS-01对芒果腐烂与否进行了综合的判断。该传感器能将特殊气体(腐烂气体、农药残留气体)的含量转变为电阻大小的变化,将输出的电压变化通过51单片机的A/D转换模块转换并显示在数码管上。通过多次试验,检测到腐烂的芒果经过传感器时输出的电压值都高于90 mV。该方法比单方面的视觉检测的判断更为准确。
3 结论
基于DSP6437开发板构建了芒果品质检测平台,将视觉检测和味觉传感器结合起来判断芒果的品质,包括用输出LED灯亮、暗模拟实际生产线运作,对芒果的大小、成熟程度以及是否腐烂进行分级分类。相较传统的单方面的视觉检测准确度更高。DSP视觉检测的运用,极大提高了检测速度,可满足实际生产需求,并且体积小,运行稳定,更适应实际检测环境。由于试验条件的影响未能对芒果进行全面的图像采集,腐烂区域可能出现于检测背面,造成误检。在实
际的生产中需要对滚动的芒果进行实时连续的图像采集,保证实现全方位的检测,提高检测准确率。针对此不足之处,下一步的研究需要针对芒果全部区域进行检测,由综合试验结果判断芒果品质。
[1] 刘静, 黄勇平, 章程辉. 视觉系统开发模块在芒果果面缺陷检测中的应用[J]. 食品与机械, 2009, 25(2): 82-85.
[2] 李甦, 谭永龙, 杨美英. 芒果分级与表面缺陷检测研究[J]. 计算机工程与设计, 2008(15): 3 954-3 957.
[3] 康志亮, 陈韵羽, 王思, 等. 便携式受损芒果检测装置的设计[J]. 农机化研究, 2010(12): 52-56.
[4] 赵杰文, 刘剑华, 陈全胜, 等. 利用高光谱图像技术检测水果轻微损伤[J]. 农业机械学报, 2008(1): 106-109.
[5] 党宏社, 宋晋国, 郭琴. 基于ARM的嵌入式芒果大小检测与分级系统的实现[J]. 四川农业大学学报, 2011(1): 89-93.
[6] 朱明, 陆小锋, 陆亨立, 等. AdaBoost人脸检测算法在DSP上的移植与优化[J]. 计算机工程与应用, 2014(20): 197-201, 232.
[7] 吕颖. DSP图像数据的可视化[J]. 福建电脑, 2011(3): 153-155.
[8] 肖剑雄峰. 局部对比度增强的彩色图像灰度化参数化算法研究[D]. 温州: 温州大学, 2016: 9-16.
[9] 姜小磊, 姚鸿勋, 赵思成. 一种极值约束的边缘保持图像平滑算法[J]. 计算机科学, 2014(10): 101-105, 127.
[10] 张琪. 结合边缘检测的图像二值化算法[D]. 长春: 吉林大学, 2011: 24-30.
[11] 张建光, 李永霞. 基于拉普拉斯边缘检测算子的图像分割[J]. 福建电脑, 2011(7): 99, 101.
[12] 周林妹. 数字图像边缘检测算法及其在农产品加工中的应用[J]. 食品与机械, 2009, 25(3): 139-142, 153.
[13] 赵源萌, 王岭雪, 金伟其, 等. 基于区域直方图统计的灰度图像色彩传递方法[J]. 北京理工大学学报, 2012(3): 322-326.
[14] 范晔. 基于DM6437的车牌识别系统的设计与实现[D]. 西安: 西安电子科技大学, 2012: 61-62.
[15] 杨方. 基于TMS320C6678的多核DSP并行处理应用技术研究[D]. 北京: 北京理工大学, 2014: 47-50.
[16] 刘德方, 邓明, 陈海燕, 等. 基于DM6437和VLIB的Canny边缘检测[J]. 安徽建筑工业学院学报: 自然科学版, 2013(2): 72-75.
[17] 黄震, 刘亚斌. TMS320C6000系列DSP程序固化的研究[J]. 电子设计工程, 2016(12): 26-28, 32.