1.系统硬件组成
农产品品质参数的高光谱成像检测系统,主要检测单元的硬件构成如图1所示,检测部分的硬件装置主要由CCD相机、成像光谱仪、聚焦镜头、数据采集卡、卤钨灯光源、传感器、移动载物平台、计算机、显示器等组成。这些硬件装置用来获取样品光谱图像信息,然后再利用图像数据的处理方法来得到样品的信息,预测样品的一些品质参数,实现对样品的无损检测。整个实用化在线检测硬件如图2所示,硬件装置除了检测单元包含的硬件装置外,还包括了检测样品的上料装置,样品分选装置,3个部分的整合实现了在线检测。样品上料单元主要包含样品的定位装置和输送装置,分选单元包含了样品的剔除装置和收纳装置,这两个单元的硬件装置设计,对于不同的样品或不同的检测参数有所不同。光谱仪的波段范围、CCD的分辨率、光源的功率以及光源照射到样品表面的角度,对于不同的样品也不相同,应用中需要根据实际的研究情况而确定最佳的设置参数。
2.软件功能模块设计
系统以PC机为硬件平台,开发环境为WindowsXP系统。开发环境为VS2010语言开发平台,通过采用与Matlab两者的混合编程方式实现。VisualC++开发的系统具有界面友好、代码效率高、执行速度快等一系列优点,但是存在数据处理和结果显示方面的不足[14~15];Matlab强大的数据处理工具箱,可以为高光谱的图像处理、数据分析提供一个很好的平台,但是Matlab存在可视化和数据采集方面的不足。软件系统设计采用VisualC++调用Matlab封装好的函数库可以直接对复杂的大数据进行分析,有效解决了这两方面的问题。相比用VC++而言,数据处理简单,方便,代替了C++冗长的代码。因此采用C++调用Matlab数据分析方法生成的动态链接库,可以使程序脱离Matlab减少文件外部存储空间的占有量,实现了对数据分析的高效操作。但是Matlab都是以矩阵为基本的操作单元,因此利用Matlab来分析高光谱的图像,实质就是利用其每个图像点对应的像素灰度值数据来进行处理。系统软件设计采用开放式、模块化、集成化的思路,根据软件功能需求分析设计了如图3所示的软件结构模式。检测系统主程序完成仪器参数设置、控制模块、数据采集与分析3个模块,各个功能模块又根据执行功能的不同分为若干个子功能模块。用VS2010语言完成软件界面、图像的采集和显示、信号检测与控制及数据管理等模块,通过VS2010调用Matlab数据处理模块的动态链接库完成较为复杂的光谱数据预处理、数学模型运算及参数预测等数据运算模块。2.1仪器参数设置模块设计系统在开始工作之前,首先需要对软件系统进行初始化,同时设置相关硬件设备的工作参数。针对不同的检测样品,硬件系统的工作参数存在一定的差异,因此需要对仪器的工作参数进行设置。本系统的仪器参数设置模块主要包含相机参数设置、最佳运动参数计算及设置两个部分。对相机的各个参数进行设置,以满足数据采集要求,主要参数包括相机曝光时间、延迟时间、感兴区域设置、图像采集方式设置等;运动参数计算:主要通过光谱仪的狭缝宽度、光学镜头视场角以及样品的尺寸,计算出曝光时间、镜头与样品的距离、输送装置的平动速度等主要工作参数,根据这些参数对运动控制器进行设置。由于受硬件系统存在的误差的影响,参数计算所得到的高光谱成像装置的扫描线宽度与实际工作中所拍摄到的扫描线宽度尺寸之间存在一定的误差,连续扫描过程中误差会产生积累从而光谱图像信息采集的精度造成影响。因此,需要对各主要参数进行反复调试,对计算出的镜头与样品之间的高度,输送带运行速度进行微小的校正,使系统的运行达到一个较优的状态。2.2控制模块设计对于在线实用化的高光谱成像检测系统,控制模块分别由3个子模块来实现:上料单元模块、检测线控制模块、分选单元模块,如图4所示。系统上料单元输送装置的速度与样品检测的速度相关,通过传感器检测信号,确保上料单元的输送速度是否调整到与检测速度一致。对于不同的检测样品应当选择合适的定位装置,以确保样品在检测的过程中不发生相对运动,这样能够保证采集到清晰的样品图像。为了避免样品之间互相影响,必须控制样品之间的间距。由于不同样品到在线检测单元镜头的最佳检测距离不同,因此需要对样品到镜头的高度进行调整和校正。计算机通过传感器检测到实际的高度后,与仪器参数模块中设置高度比较后进行调整。高度调整过程如下:首先由运动控制器发送指令打开高度传感器,计算机读取高度值并将该值与设定值进行比较得出需要调整的高度值以及调整方向;然后计算机将结果发送给运动控制器,由运动控制器对样品的高度进行调整;高度调整完成后需要关闭高度传感器,以免传感器发出的激光光线对光谱图像数据产生影响。高度调整到位的样品在经过检测区域时,位置传感器会触发高光谱成像装置采集样品的光谱图像信息,计算机获取光谱图像数据后会给出用户所选指标参数的预测值及分级结果。分选单元主要是根据在线检测单元得出的分级结果,将合格样品与不合格样品进行归类处理。剔除装置可对不合格样品进行剔除,合格产品则直接进入到收纳装置当中等待包装。2.3数据采集与分析模块设计2.3.1图像数据合成高光谱采集的样品图像,实际上是一个由样品的平面空间和光谱维度共同构成的数据立方体。高光谱图像数据采集方式有3种:点扫描、线扫描及面扫描[16]。本系统采用推扫式的高光谱数据采集方式,借助于样品输送装置的移动实现样品表面扫描线图像的逐个获取,然后将这些扫描线图像进行合成,得到完整的样品高光谱图像。线扫描的采集及合成过程如图5所示,其中x代表样品移动的方向,y代表扫描线的空间位置,λ表示波长。线扫描图像合成如图5a所示,高光谱成像系统是利用一个入射狭缝,在垂直于狭缝方向使得样品与狭缝实现一维相对运动,可以获取样品表面一条线的图像信息,在x方向选择向右或是向左移动,对物体表面逐行扫描,扫描N次后(N根据样品的大小决定),在每一个波段处,如图5bλ1处每一条扫描线的数据经过合成后变为了一个长方体块,对应到光谱仪的波段数,如图5c所示,所有这条扫描线的所有波段处的长方体块合成为一个二维平面。因此N条扫描线的图像数据合成后将是一个三维立方体数据块,即“hypercube”图像。对应到CCD探测器的靶面上,一个坐标轴代表扫描线图像的空间轴,另一个坐标轴代表光谱轴。图像上任意点(x,y)的灰度,代表该点在对应扫描线x点上,在波长y处的反射强度。2.3.2图像数据校正基于高光谱成像技术搭建的检测系统,选择的CCD相机分辨率动态范围比较大,才能满足高光谱成像要求,因此相机的位数多为12位或是16位,即4096(212)或是65536(216)黑白灰度水平,然而显示器显示一般总是限制在8位,即28灰度水平。因此,为了在系统界面上实时显示采集的图像,必须转换为8位灰度图像显示。CCD相机采集的图像的实际大小为分辨率像素大小,然而软件系统界面显示的8位图像控件大小有限,当图像太大,而显示窗口太小,窗口在发生重绘更改大小时,图像的像素值被压缩,图像产生失真,出现如图6a中的黑色光晕。因此,在软件界面的开发中,需要对显示在界面的8位图像进行平滑修正,删除所有消除的像素行,不保留其信息。图像的校正后的效果如图6b所示,窗口中图像的轮廓也不会发生大的变化,保持与原始轮廓相同。2.3.3ROI选取与图像平均软件数据处理模块中,为了消除随机噪声对信号采集的影响,常常采用多次采集一条扫描线的图像信息进行平均所得到的数据作为样品表面上该扫描线的实际图像,进行图像保存或数据分析。为了在高光谱图像数据的采集中,减少数据量、提高系统运行速度,可以在样品表面上选取感兴区域(Regionofinterest,ROI)从而可以大幅减小所采集的图像区域面积,提高光谱图像数据的处理效率。以上两个功能的添加,优化了光谱图像的信息,提高了系统的可用性,降低光谱数据的容量,提升了数据处理的速度。2.3.4数据处理分析对于采集的样品反射图像,需要根据检测样品的参数指标来选择合适的分析方法,利用统计学和化学计量学的方法来分析样品的反射光谱信息,或是利用图像处理的方法来获取样品图像信息。软件设计开发中,考虑到噪声对图像信号的影响,在高光谱图像采集的之前必须进行高度校正和光谱校正[17~18]。如果利用样品的光谱信息来检测指标参数,需要采集暗电流图像和白板的图像,在数据分析中得到样品的相对反射光谱信息。如果是利用样品的图像的信息,来对样品进行检测分析,采集暗电流图像,对采集的每一条扫描线图像消除系统本身的噪声。式中R——校正后的漫反射光谱图像,Rs——样品的原始漫反射光谱图像,Rd——暗电流图像,Rw——白板的漫反射图像。高光谱系统采集数据的完整分析,除了使用平均光谱外,还可以通过合成检测样品的伪彩图像,根据伪彩图像中不同颜色使数据分析的结果可视化,直观地显示在样品的图像中。软件开发中利用VC++语言调用Matlab的动态链接库来实现复杂的光谱数据预处理或建模,通过Matlab语言将整个模型的建立过程生成动态链接库,加载到VC++主程序的目录下,则通过VC++语言直接调用链接库封装好的函数[19~20]。
3.软件主程序与主界面设计
利用模块化设计实现系统的各个子功能控制之后,需要对所有的模块化程序进行集成,并对其相应的控制代码进行优化,提高检测速度。如果几次检测的样品类型相同,就不需要每次重复设置相应的仪器参数,第一次设置后,设置程序通过自锁保存初始设置结果。因此如果没有重新设置这些仪器参数,仪器设备就保持原有的设置结果不变。软件程序开启运行后,主程序会自动先清除缓存区内之前保留的图像。暗电流与白参考的图像采集需要在检测样品之前,用来消除系统的噪声和校正光谱的信息。主界面的设计中,包含了2个部分,一是对采集图像的显示,即图像合成的显示过程,样品线扫描的过程即图像逐步合成的过程。二是结果的显示,显示模型的预测结果和分级的结果。因此系统软件的设计采用多线程编程,分为工作者线程和用户界面线程,以提高程序执行的效率[21]。工作者线程主要用来对图像的采集、处理和分级操作;用户界面线程主要用来将采集的图像、预测的结果和分级结果等信息显示在用户界面上。多线程可以实现并行处理,避免了某项任务长时间占用CPU。主程序的设计如图7所示,采用一键式设计思路,将整个信号检测、运动控制、图像采集、数据处理的过程进行封装,在实际的使用中,只需要点击检测按钮,就可以获得需要的结果。对于实用化过程中,检测系统的软件操作简单、方便,降低了操作的难度,因此使用更加广泛,符合实际生产的需要,不需要培训专门操作人员。以畜肉品质检测为例开发的软件界面如图8所示。农产品品质参数实时快速检测过程中,开始检测前,开启CCD相机、光源系统硬件设备,然后开启检测与分析软件,查看相机是否连接正确。连接正确后,设定仪器的相关参数,点击按钮即可实现对样品的检测,就能在相应的结果显示框得到检测的结果,并在末端的执行机构完成对样品的分选。
4结束语
基于高光谱成像的一体化控制分析软件的开发,配合相应硬件,实现了对农产品多指标参数的实时、快速无损检测,充分利用了高光谱成像技术的优势,提高了检测精度,推进了高光谱成像技术的实用化。在以后的研究中,需要通过提高模型精度、优化建模算法来提高软件检测的精度和速度,用不同产地的农产品来扩充检测样本的数据库,增强检测系统的适应性;另一方面有必要在该系统的硬件设计中添加无线传输功能,实现对不同地点、不同时段所采集数据的云端存储,便于数据的保存和共享。
作者:赵娟 彭彦昆 郭辉 陶斐斐 张雷蕾 单位:中国农业大学国家农产品加工技术装备研发分中心 新疆农业大大学机械交通学院