贾新宇,江朝晖*,李娟,高健
(1. 安徽农业大学信息与计算机学院,合肥 230036;2. 国际竹藤中心,北京 100102)
竹子是森林资源的重要组成部分,具有较大的经济价值、生态价值和文化价值[1]。在竹类资源中,毛竹(Phyllostachysedulis)则是分布最广和经济价值最高的竹种。一般来说,毛竹从出笋阶段到生长至最后成竹只需2~3个月,在成竹之后其形态则基本保持不变。因此,在毛竹笋的生长发育期间,进行高生长监测研究具有重要的意义。传统的毛竹笋高生长监测方法主要依靠卷尺、标杆等工具进行人工接触式测量,这种方法效率低下,劳动强度较大且无法实时准确地对毛竹笋高进行高生长监测,因此迫切需要提出一种高效的毛竹笋高生长监测方法。
借助于超声波传感技术,Barmeier等[2]开发了超声波移动式植物高度测量系统,将传感器安装在特定的车辆上,可实时测量植株的生长高度。Sun、苏伟等[3-4]利用激光雷达分别获取棉花和玉米的点云数据,并构建植株三维模型,进而计算棉花与玉米的高度数据。Bendig等[5]在无人机平台上,通过DSM对大麦株高进行测量分析并建立了基于大麦株高的生物量估算模型,该方法获得的大麦株高的决定系数为0.92。张宏鸣等[6]通过无人机获取玉米4个生长阶段的高清数码正射影像(DOM)和数字表面模型(DSM),并利用两者相结合的骨架算法提取植株骨架,获取玉米高度信息。以上方法在高度检测方面都存在或多或少的不足之处。
近年来,计算机视觉技术得到了广泛应用,在获取目标图像后,利用图像分析方法可以较好地实现农作物长势信息的获取[7]。Constantino等[8]利用数码相机拍摄水稻图像,对图像进行处理后,将标记条的高度与初始标记条的高度相比,实现水稻高度的测量。郭新年等[9]对现有的三角测量原理进行改进,高度值的实际测量相对误差最大值仅为2.17%。以上方法中,目标分割效果的好坏直接决定着后续高生长监测的精度。目前基因表达式[10]、人工蜂群等智能仿生算法用于解决图像问题则是一种较新的思想。利用正弦余弦算法(SCA)对人工蜂群算法进行改进,能够搜索空间中的不同区域,避免过早陷入局部最优,拥有较好的全局收敛性,再结合邻域空间信息后,能够具有较好的分割效果。
综上,本研究以图像技术为基础,通过架设林间太阳能监控摄像头实现毛竹笋非接触式监测,在解决图像分割问题的前提下,利用图像像素与几何角度对应的线性映射关系,以获得较为准确客观的毛竹笋实时高生长数据。
基于图像的毛竹笋高生长监测系统,主要由图像采集、图像传输与存储和毛竹笋高生长监测算法等三部分组成,完整的体系结构图如图1所示。
图1 系统总体体系结构图
实验地选择为安徽宣城市泾县毛竹实验林,实验所用毛竹笋图像采集设备为Pony公司生产的球型监控摄像机(IPC-SD7090S-30X),该球机具有防水防尘等功能,具备300万高清像素和30倍数码变焦。供电方式采用太阳能光伏电池板与蓄电池相结合的方式,太阳能电池板长度和宽度均为660 mm,蓄电池输出电压为12 V。安装高度为5 m,拍摄时间为2019年4月13日至4月25日,拍摄时间间隔设定为1 h。毛竹笋高生长监测系统野外实物图如图2所示。
图2 太阳能球型监控摄像机实物图
该系统首先通过太阳能4G监控网络摄像机采集真实林间环境下的毛竹笋图像,然后将采集的实时图像上传至阿里云的FTP服务器中(IP地址为:47.107.184.25,端口号为:21)。当计算机从服务器中下载毛竹笋图像后,对图像进行图像分割处理,实现复杂环境下的毛竹笋目标提取。统计出图像中提取的毛竹笋的像素数后,结合网络摄像机几何角度与像素之间的关系,计算毛竹笋的实际高度,实现毛竹笋高的生长监测。
基本人工蜂群算法是一种基于蜜蜂群体智能的优化算法[11],其通过模拟蜂群分工合作寻找最优食物源的行为来求解函数优化问题。算法的实现主要分为以下4个步骤:
步骤1:初始化蜂群。在D维空间下,随机生成N个可行解(x1,x2,…,xN),具体公式为:
xi,j=Lmin,j+rand(0,1)(Umax,j-Lmin,j)
(1)
其中:i=1,2,3…N;j=1,2,3…D;Umax,j和Lmin,j分别表示第j维的上限和下限。可行解即食物源的适应度函数值Fi由式(2)得出,其中fi为可行解的目标函数值。
(2)
步骤2:引领蜂阶段。在蜜源附近进行邻域搜索,搜索公式如下所示:
Vij=xij+φij(xij-xkj)
(3)
其中:φij为[-1,1]之间的随机数;i,k∈1,2,3…N且i≠k,j。
步骤3:跟随蜂阶段。跟随蜂基于轮盘赌原则,根据式(4)选择其将要跟随的引领蜂。
(4)
步骤4:侦查蜂阶段。在所有的引领蜂和跟随蜂完成搜索后,舍弃长期未更新的食物源,与之对应的跟随蜂也将转变为侦查蜂,并按照式(5)随机搜索新的食物源。
xi=bl+rand(1,d)×(bu-bl)
(5)
其中:bu和bl分别为解的上限和下限;rand(1,d)表示产生一个1行d列的矩阵,d∈(1,2,3…D)。
传统的人工蜂群算法在搜索过程中会产生无价值和无规则的搜索,会大大地降低最优解的收敛速度。因此,本研究在这里提出结合正弦余弦优化的人工蜂群和模糊局部C均值聚类分割。从基本人工蜂群算法的搜索方式以及适应度函数两个方面进行改进。
引入正弦余弦算法[12],并用其改进传统人工蜂群算法中的引领蜂阶段,能够更加合理地探索和利用搜索空间,具有更高的搜索效率和全局优化能力。改进后的引领蜂搜索方式如式(6)所示:
(6)
适应度函数直接影响着图像分割的优劣。本研究在模糊C均值的目标函数的基础上,引入相似度测量因子Gij[13],其中测量因子Gij具体表达公式如式(7):
(7)
其中:djk表示邻域像素xk与中心像素xj的空间欧氏距离;n表示图像的像素个数;m为聚类时的模糊指数;uik是像素点xk到聚类中心i的隶属度;‖xk-vi‖代表像素点xk与聚类中心vi之间的欧氏距离。
改进后的人工蜂群目标函数如式(8)所示,并以此改进人工蜂群的适应度函数。
(8)
首先设置预试验,获取图像中单位像素对应的实际角度,进而实现后续毛竹笋实际高生长监测。已知太阳能监控球形摄像机的安装高度为H,待监测的毛竹笋距离摄像机的水平距离为L,参照物高度为h;设参照物顶端距离摄像机光轴水平位置的距离为h1,摄像机从光轴水平位置到参照物顶端的夹角为α,摄像机从参照物底端与水平地面的夹角为γ,摄像机从参照物顶端到底端的夹角为β,参照物的像素坐标为(x1,y1)和(x2,y2),具体示意图如图3所示。
图3 预试验测量原理
参照物所对应的图像像素m:
(9)
图像中单位像素对应的实际角度t为:
t=β/m
(10)
其中,β=γ-α,γ和α可由三角关系得出。
毛竹笋的实际高生长监测原理如图4所示,其中毛竹笋的像素坐标为(x3,y3)和(x4,y4)。
图4 毛竹笋高生长监测原理
毛竹笋对应的图像像素n和实际角度β1如式(11)和式(12)所示:
(11)
β1=t×n
(12)
毛竹笋高度hm如下式所示,其中摄像机光轴与毛竹笋顶端的夹角α1=γ1-β1。
hm=H-L×tanα1
(13)
若毛竹笋高度高于摄像机安装高度,毛竹笋高度hm为:
hm=H+L×tanα1
(14)
其中,摄像机光轴与毛竹笋顶端的夹角为α1=β1-γ1。
为了验证正弦余弦优化的人工蜂群算法(SCA-ABC)的有效性,选择国际通用的连续基准函数进行测试,并与飞蛾火焰算法(MFO)[14]、正弦余弦算法(SCA)、粒子群算法(PSO)[15]等3种群体智能优化算法进行了比较。实验环境为:PC机,Windows 7操作系统,Intel i5-4590处理器,主频3.30 GHz,8.00GB内存,开发软件为MATLAB R 2016b。
选取国际上通用的13个连续的基准函数作为本研究的测试函数[12],限于篇幅限制,这里仅列出F3、F4、F5等3种测试函数的适应度值的迭代收敛曲线,具体如图5所示。从图5可以看出,正弦余弦优化的人工蜂群算法在求解精度和收敛速度等方面都领先于3种对比算法。
图5 3种测试函数4种算法的收敛曲线
本试验以毛竹实验林中随机生长的8株毛竹笋为试验对象,在拍摄期间内不间断地监测其高生长参数指标,试验采集的部分图片如图6所示。
图6 试验采集图片
在林间环境下,通过摄像头采集毛竹笋图像,由于摄像头视场等原因,拍摄到的图像含有较多干扰物,后续的毛竹笋分割较为困难。因此,为减弱周边环境中复杂干扰物的影响,从原始采集图像中选取部分区域作为感兴趣区域,同时为减小光照因素影响,对感兴趣区域进行图像增强,如图7所示。
图7 试验图像感兴趣区域
本研究分割算法主要参数经实验后设置为:聚类分割目标数为4,种群大小N为20,个体维数D为4,最大开采次数Limit为100,最大循环次数MCN=50,下限bl和上限bu分别为1和256,测量因子Gij的邻域窗半径r=3。图8为本研究算法与模糊C均值聚类分割(FCM)以及基于人工蜂群优化的模糊C均值(ABC-FCM)分割的比对结果。
由图8可以看出,本研究算法在结合图像中的局部空间信息与灰度信息后,能够较好地抑制其他干扰物的干扰。结合数学形态学处理后,能够完整地将毛竹笋从图像中分割出来。
图8 算法分割结果对比
为客观评价本研究算法对图像中毛竹笋目标分割的有效性,选用错分率(ME)作为评价函数[16]。具体计算公式如式(15):
(15)
其中:Bt和Ft分别为测试图像分割后的背景与目标区域的面积;Bo和Fo则分别为参考图像分割后的背景与目标区域的面积,面积大小以区域内像素的总数表示,参考图像的背景与目标区域由人工手动分割获取。
ME的值越小表示错分率越低,算法分割效果越好。对于毛竹笋图像,FCM、ABC-FCM和本研究算法的ME值分别为15.2%、4.13%和0.5%。可以看出,本研究算法相比其他两种对比算法在分割精度上具有较大优势。
在监测期间,为验证毛竹笋高生长监测方法的有效性,每天对实验选取的8株毛竹笋进行数次人工测量高度。在人工测量时,采用精度为1 mm的卷尺进行测量,同时为尽可能减小误差,取多次测量的平均值作为毛竹笋高度的实测值。然后将利用图像监测方法计算得到的结果与人工测量的毛竹笋高度值进行对比。表1列出了其中4株人工测量与图像测量在部分时间段的毛竹笋高度数据以及两组数据之间的误差。
表1 林间毛竹笋高度计算值
由表1可以看出,笔者试验提出的毛竹笋高生长监测方法在测量毛竹笋高度时,由于受拍摄角度等环境因素的影响和图像分割算法的局限性,其计算值与实际测量值之间存有一定的偏差,平均测量误差为4.17%,符合高度监测误差标准,能够有效地实现林间环境下毛竹笋的高生长监测。
在毛竹笋的生长阶段,部分竹笋会出现竹子退笋现象,即自然生长的竹笋或未出土的竹笋在中途停止生长或者死亡。在监测期间,通过获取到的毛竹笋高度数据亦可实现毛竹笋的退笋监测,设置时间阈值为2 d,若在1 d内毛竹笋高度的增量小于2%,则假定毛竹笋处于退笋状态,在第2天,毛竹笋高度相对增量仍小于2%,则判断该毛竹笋已退笋。
针对通过人工方式获取毛竹的生长信息难度较大且工作量较多的问题,提出了一种基于图像的毛竹笋高生长监测方法。通过在林间架设太阳能4G监控球形摄像机实时获取毛竹笋的生长图像,然后提取毛竹笋图像,最后通过几何角度原理计算图像中目标的像素数与摄像机旋转角度对应的线性映射关系,实现毛竹笋实际高度的获取。其中为解决在林间环境下毛竹笋分割较为困难的问题,首先在模糊聚类的基础上引入了局部空间信息,然后利用正弦余弦算法优化的人工蜂群对初始聚类中心进行寻优,在获得聚类中心后对图像进行二次分割,实现了林间毛竹笋的分割。正弦余弦算法优化后的人工蜂群相比于PSO、ABC、MFO等算法,具有更加优异的寻优性能。相比于FCM和ABC-FCM,本研究分割方法也具有更强的抗噪性能和更高的分割精度。今后工作的研究重点将是如何实现夜间的毛竹笋高生长监测。