发明内容
本发明要克服现有技术上述缺点,提供一种基于鱼类活性分析的水质毒性检测方法。
水质中若存在较大的毒性,比如引起水中鱼类大量死亡,则意味着水质可能存在异常,据此应自动产生预警信号。然而,判断鱼死亡不能简单的根据某一个参数,而需要综合多个行为参数才能较为准确的对其是否死亡进行判断。为此,本发明提出一种基于朴素贝叶斯检测水样中的鱼群是否存在死亡的个体的方法,从而实现对水质可能存在的毒性作出实时预警。
本发明解决其技术问题采用的技术方案是:
一种基于鱼类活性分析的水质毒性检测方法,包括以下步骤:
1)以鲫鱼作为生物监测对象对其进行实时监测,综合鲫鱼的运动速度和运动时轮廓的变化,以此判断水样中的鱼是否死亡,从而实现对水质是否存在毒性进行实时反馈。为了还原真实环境,采用的试验装置如(图1),监测鱼置于水箱中,水箱上的摄像头用于采集水箱中鱼的行为视频。该水箱可实时更新水源,使水流平缓流动,从而降低因水流冲击对鱼类行为的异常的影响;
2)采集和提取鲫鱼的运动特征:通过红R、绿G、蓝B到色调H、饱和度S、亮度V颜色空间域的转换来提取鱼目标轮廓(图2),实时监测跟踪水样中鲫鱼,得到鲫鱼的跟踪视频序列,该跟踪模型描述如下:
通过对监控视频图像的分割、识别、跟踪标定鲫鱼目标的实时运动位置,并以固定时间间隔作为统计周期,获取该周期内鱼群中每个个体的轮廓和运动速度等特征参数;
3)鲫鱼的特征参数分析,包括以下过程:定义死鱼特征数据集和活鱼特征数据集,通过学习,形成一个成熟的分类器结构模型。具体过程如下:
3.1)收集水箱中每一条鲫鱼的运动速度v、轮廓面积outline_Area与所有鲫鱼等面积均值average_Area之差这两个特征数据,将这两个参数作为检测水箱中鱼是否存活的指标。
其中,鱼的运动速度是研究鱼类行为的一个重要的参数,它反应单位时间内的位移、加速度等运动特征。
3.1.1)速度的特征数据
考虑到前一帧和后一帧每条鱼的运动轨迹变化小,因此采用后一帧与前一帧鱼的重心最短距离计算这条鱼在一帧时间内的移动距离Si。然后,取一秒钟的帧数(通常设为15帧),把这些距离相加再除以时间就是鱼每秒的运动速度。但是,由于水箱中鱼在游动时常常存在叠加,导致定位每一条鱼的身份存在困难。如果不能精准的对每一条鱼进行跟踪,那么计算每一鱼的身份就会产生误差。由于帧间鱼游动距离很小,因此可根据前后帧距离关系求得每一条鱼的游动距离。也就是取目标鱼后一帧到当前帧移动距离最小值,作为当前帧该目标鱼的游动距离。
假设水箱中有n条鱼,第j帧第i条鲫鱼轮廓的重心坐标为第j+1帧第k条鲫鱼轮廓的重心坐标为可以得到第j帧第i条鲫鱼到第j+1帧第k条鲫鱼的距离为:
根据以上方法,可求出第j帧第i条鲫鱼到第j+1帧鱼缸中各条鱼的距离为S1,…Sk…Sn。由此,得到当前鱼i在帧间游动距离为:
Si=min{S1,S2,…Sk…Sn} (2)
此时得到的最短距离Si即为第j帧第i条鲫鱼到下一帧游动的距离。在一秒内取15帧,则目标在1秒内的运动速度可以通过以下公式计算得到:
水箱中鱼的运动速度的大小,能反映鱼类游动的激烈程度,是衡量鱼类目标在被检测水质中活性的一个重要指标参数。然而,当鱼的游动速度为0,并不意味着此时该鱼一定处于死亡状态,而是有可能鱼处于静息状态。此外,由于水流速度或者其他鱼的撞击,死亡的鱼其速度也并不总是为0(图3)。
3.1.2)轮廓的特征数据
背景差分后利用opencv里的contourArea函数可求得目标轮廓面积,其中opencv是一个基于(开源)发行的跨平台计算机视觉库,该函数是统计目标轮廓内的每个像素点的累加和,即为面积。与上述求速度的方法类似,求得每一时刻鱼的位置,由此计算水箱中鱼在每一时刻的面积{A1,A2,…An}。当鱼处于死亡状态时,其身体自由的飘浮在水中,鱼体的面积大于其处于非死亡状态时的面积。其中,水缸中鱼体平均面积可由下式计算:
根据观察,鲫鱼在活性状态下,其背部朝上。而一旦处于死亡状态,则其腹部朝上,其轮廓面积相比于死亡状态增加了75%左右(图4)。在图4中,是死鱼和活鱼一定时间内轮廓面积的统计,从图中可以看到活鱼面积基本维持在700到900像素,而死鱼的面积基本在1200到1600像素之间。因此,轮廓面积的变化是判断目标鱼存活性的重要特征之一。然而,由于水箱中灯光等环境常常处于变化状态,导致根据背景差分获得的轮廓也会存在误差。因此,仅仅根据目标鱼轮廓面积判断其是否处于存活状态依然存在较大误差。
为此,提出利用朴素贝叶斯方法,综合多个特征,判断鱼是否处于存活状态的方法。该方法首先构建模型,其次根据数据得到模型的参数,从而得到成熟的分类模型(图5)。该模型能判断出水箱中是否有鱼处于死亡状态,从而对水样可能存在的毒性做出预警。
3.2)基于朴素贝叶斯算法对数据进行训练产生成熟的分类器结构模型,算法过程如下:
a)设x={a1,a2,……am}为一个待分类项,而每个a为x的特征项。目标鱼的速度a1和轮廓面积差a2即为特征项,因此可得x={a1,a2},x表示目标鱼;
b)输出类别集合C={c1,c2,……cn},每个c是输出集合C的一种结果。本发明是检测判断鱼是否死亡,因此类别集合C={c1=0,c2=1},并用C=0表示鱼处于活着状态;
c)当利用游动速度和面积差这两个特征来判断鱼类是否死亡时,可将这一过程表示成联合条件概率P(C|a1,a2)。该式表示在a1,a2同时发生情况下目标鱼处于死亡状态的概率。由贝叶斯公式,可得,
上式中的P(a1,a2)不依赖于类别C,也就是它的值对分类结果不产生影响,因此计算过程该项将被忽略。由全概率公式和条件概率的链式法则,上式的分子项可展开为:
P(C)P(a1,a2|C)=P(a1,a2,C)
=P(a1|a2,C)P(a2|C)P(C)
假设给定类别C,特征之间相互条件独立。也就是,P(a1|a2,C)=P(a1|C),上式可化为:
P(C)P(a1,a2|C)=P(a1|C)P(a2|C)P(C)
d)收集所有鱼处于存活/死亡状态下的游动速度和轮廓面积数据,构造训练样本集,用于计算概率P(a1|C)、P(a2|C)值。本发明假设P(a1|C)、P(a2|C)均符合高斯分布,这样可以从训练集中求得鱼处于死亡状态时速度均值μ1,方差σ1。鱼处于死亡状态时轮廓面积均值μ2,方差σ2。
3.3)使用新的特征数据来检测判断该检测模型是否成熟。也就是,给定目标鱼的两个特征判断该目标鱼处于死亡或者存活状态。
本发明假设鱼是否死亡的先验概率相等,即P(C=0)=P(C=1)=0.5。此外,
同理,可以分别求得P(a2|C=0)、P(a1|C=1)和P(a2|C=1)的值。当(5)中比值大于1,则判断目标鱼处于存活状态,否则处于死亡状态。
3.4)通过成熟的检测模型对鱼缸中鱼的存活与否作出判断。当鱼缸中目标鱼死亡条数超过总数的一半,则给出水质存在毒性的预警信号。
本发明的技术优势主要是可以克服复杂环境中的鱼目标个体提取,尤其是可以准确的对目标鱼群存活状态作出判断,从而对水质可能存在的毒性作出预警。
本发明的技术构思为:所述基于鱼类是否死亡检测水质异常的方法,包括以下步骤:
1)以鲫鱼作为生物检测对象对其进行实时检测;
2)对目标轮廓的正确提取,实时检测跟踪鲫鱼;
3)基于朴素贝叶斯算法对数据进行训练产生成熟的检测结构模型,采用新的特征数据对生成的检测结构模型进行检测判断,利用成熟的检测模型对目标生物的存活状态作出判断,从而实时对待监测水质可能存在的毒性作出预警。
步骤1)中,鲫鱼作为一种重要的指标生物已被广泛地应用于环境检测,是国际标准化组织认可的鱼类实验动物,是理想的水质检测指标生物。本发明选取鲫鱼作为指示生物并对其进行实时监测。指示生物指标数据的有效获取是生物监测的重要内容。由于鲫鱼生理特征变化能比较直观、实时的反应水质的变化,因此这些特征在水质安全研究中既是关键的监测指标也是重要的检测指标。故对这些行为特征快速准确地获取与检测就成为水质异常检测的重要内容。
步骤2)中,对于饮用水源的安全健康,最为重要的内容之一便是水源是否具有致命的毒性物质。通过监控水环境中指示生物的存活状态,实现自动监控水源毒性的功能。判断指示生物存活状态需要综合多个特征参数,为此提出基于朴素贝叶斯算法,得到判断指示生物存活状态的分类模型。尤其是,本发明并不需要精准跟踪每一个指示生物,就能准确判断其存活状态。由此,在保证准确性的前提下提高的数据处理的效率,从而为及时预警提供了一种可行的实现。
步骤3)中,将步骤2)得到鲫鱼运动行为特征的水质指标进行分析检测。
本发明利用生物检测、朴素贝叶斯分类以及视觉感知技术,提出一种基于生物监测水质毒性的算法。该算法主要分为三步:首先,将鲫鱼作为生物检测对象对其行为参数进行监测;其次,采用HSV空间域转化计算视觉的算法提取每一个对象的行为参数;然后,利用朴素贝叶斯分类算法产生成熟收敛的检测器模型,对目标鱼的存活状态进行监测。最后,根据待监测水中目标鱼的存活状态变化,对水质可能存在的毒性进行预警。
本发明的优点是:能够实现在线实时检测,提高水质检测的敏感性和连续性,降低检测成本,可对大量未知水质毒性状况进行实时有效地检测。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1~图6,一种基于鱼类活性分析的水质毒性检测方法,包括以下步骤:
1)以鲫鱼作为生物监测对象对其进行实时监测,基于其运动踪迹实现对水质的在线检测。为了还原真实环境,本发明所使用的试验装置如图1所示。该图中1、2是进水口,3、4是出水口,5是鱼体目标,6是分辨率为640*480像素的摄像头。采集数据所用的CMOS摄像头放置在实验鱼缸正上方一定高度,保证摄像头可以拍摄到鱼的全部活动范围。该装置可以实时更新水源,使水流平缓流动,从而降低水流冲击对鱼类行为的异常影响;
2)采集和提取鲫鱼的运动特征:通过RGB到HSV颜色空间域的转换来提取鱼目标轮廓(图2),实时监测跟踪鲫鱼,得到鲫鱼的跟踪视频序列。HSV有效避免了亮光、投影、噪声等的干扰,相对于背景差建模法等方法可以更方便有效的应用到实际水质中,该跟踪模型描述如下:
通过对监控视频图像的分割、识别、跟踪标定鲫鱼目标的实时运动位置,并以固定时间间隔作为统计周期,获取该周期鱼群的轮廓、速度特征参数作为步骤三的数据依据;
3)鲫鱼的运动数据分析检测,包括以下过程:基于步骤2)中所获取的运动参数,构建死鱼特征数据集和活鱼特征数据集,设定各个运动参数的预警指标。通过训练和学习,得到分类器生成结构模型,形成各个预警信息的成熟检测器。具体过程如下:
3.1)收集鱼类的运动速度、轮廓面积与面积均值之差这两个主要特征数据,将其作为检测水质是否异常的指标;
3.2)基于朴素贝叶斯算法对数据进行训练产生分类成熟的检测结构模型;
3.3)使用新的特征数据来检测判断该检测模型是否成熟;
3.4)利用成熟的检测模型对实时水质进行在线检测,最终实现水质的异常检测。
本实施例中,鱼体数据指标提取过程:视频序列的目标跟踪问题可以看成是一个动态系统的状态和观测值,根据当前帧和下一时刻下的状态和观测值,来获取下一时刻的运动位置。所以单目标跟踪方法如下所示:
首先,由于前一帧和后一帧每条鱼的运动轨迹变化小,通过后一帧与前一帧某条鱼重心的最短距离计算这条鱼在一帧的时间内移动的距离,然后取一秒钟的帧数,把这些距离相加再除以时间就是鱼每秒的运动速度。该方法的好处是,不需要精准跟踪每一个目标鱼,仍然可以较为准确的计算出每一目标鱼的游动速度;
其次,获取目标鱼的轮廓面积,与求取速度的方法类似,近似获得每一目标鱼在下一时刻的位置,由此得到此鱼在下一时刻的面积{A1,A2,…An};
根据观察,鲫鱼在活性状态下,其背部朝上。而一旦处于死亡状态,则其腹部朝上,其轮廓面积相比于死亡状态增加了75%左右(图4)。在图4中,是死鱼和活鱼一定时间内轮廓面积的统计,从图中可以看到活鱼面积基本维持在700到900像素,而死鱼的面积基本在1200到1600像素之间。因此,轮廓面积的变化是判断目标鱼存活性的重要特征之一。然而,由于水箱中灯光等环境常常处于变化状态,导致根据背景差分获得的轮廓也会存在误差。因此,仅仅根据目标鱼轮廓面积判断其是否处于存活状态依然存在较大误差。
为此,基于朴素贝叶斯算法对数据进行训练产生成熟的分类器结构模型,算法过程如下:
a)设x={a1,a2,……am}为一个待分类项,而每个a为x的特征项。目标鱼的速度a1和轮廓面积差a2即为特征项,因此可得x={a1,a2},x表示目标鱼;
b)输出类别集合C={c1,c2,……cn},每个c是输出集合C的一种结果。本发明是检测判断鱼是否死亡,因此类别集合C={c1=0,c2=1},并用C=0表示鱼处于活着状态;
c)当利用游动速度和面积差这两个特征来判断鱼类是否死亡时,可将这一过程表示成联合条件概率P(C|a1,a2)。该式表示在a1,a2同时发生情况下目标鱼处于死亡状态的概率。由贝叶斯公式,可得,
上式中的P(a1,a2)不依赖于类别C,也就是它的值对分类结果不产生影响,因此计算过程该项将被忽略。由全概率公式和条件概率的链式法则,上式的分子项可展开为:
P(C)P(a1,a2|C)=P(a1,a2,C)
=P(a1|a2,C)P(a2|C)P(C)
假设给定类别C,特征之间相互条件独立。也就是,P(a1|a2,C)=P(a1|C),上式可化为:
P(C)P(a1,a2|C)=P(a1|C)P(a2|C)P(C)
d)收集所有鱼处于存活/死亡状态下的游动速度和轮廓面积数据,构造训练样本集,用于计算概率P(a1|C)、P(a2|C)值。本发明假设P(a1|C)、P(a2|C)均符合高斯分布,这样可以从训练集中求得鱼处于死亡状态时速度均值μ1,方差σ1。鱼处于死亡状态时轮廓面积均值μ2,方差σ2。
然后,计算目标鱼处于死亡或者存活状态下速度等于a1,以及面积等于a2的概率。也就是,求4个似然概率值P(a1|C=0)、P(a2|C=0)、P(a1|C=1)和P(a2|C=1)。假设目标鱼处于死亡或者存活状态的概率均等于0.5。有了先验概率和似然概率值,便可以根据贝叶斯公式求得给定目标鱼当前速度等于a1、面积等于a2的情况下,该鱼到底处于死亡或者存活状态。
最后,根据得到的成熟的分类模型,判断出水箱中是否有鱼处于死亡状态。当水箱中目标鱼死亡条数超过总数(一般为4条目标鱼)的一半,则给出水质存在毒性的预警信号。