一种高通量鱼苗在线计数装置和方法
技术领域
本发明涉及渔业养殖装备技术,具体涉及一种高通量鱼苗在线计数装置及方法。
背景技术
作为科学投饵、鱼苗存活率评估、养殖密度控制、鱼苗销购等课题的重要环节,准确估计鱼苗数量逐渐成为鱼类养殖规范化、科学化管理的基础保障。随着现代渔业的发展,我国鱼类养殖业的机械化、智能化水平不断提升,鱼类养殖对高通量自动化计数器的需求越来越大,但目前我国鱼类养殖依然采用传统计数方法如推算法、碗量法、开间法等,不仅费时费力,而且容易对鱼苗造成生存压力。国内外渔业以及计量专业相关人员早已鱼苗计数方法展开了研究,国内外也已经出现的一些鱼苗计数器,如光电鱼苗计数器、多通道鱼苗计数器等,但装置复杂,成本高,而且大部分针对的是成年鱼类。
中国发明申请公布号CN110973036A公开了一种基于机器视觉的鱼苗计数装置及方法,通过旋转门对鱼苗进行分批计数,但每批次的鱼苗数量不易控制,鱼苗在计数区域存在粘连、堆积等问题,影响计数准确率,而且计数不连续,降低了鱼苗计数效率。
中国发明申请公布号CN109937947A公开了一种鱼苗计数器,通过在壳体内设置分流板,将进入壳体的鱼苗分流,通过改变管道的长度就可以改变管道出口的大小来适应不同大小的鱼苗,但在分流过程对鱼苗可能存在不同程度的撞击,而且该方式主要适用于体型较大的鱼苗。
中国发明申请公布号CN110766123A公开了一种鱼苗计数系统及鱼苗计数方法,通过在待测鱼苗水箱底处设置有输出口供多个鱼苗进入单向水道,并在单向水道内图像采集和计数,但在实际操作过程中,鱼苗游动是随机的、喜逆流的,并不一定会及时进入单向水道,影响计数效率,而且单向水道的尺寸固定,适应的鱼苗尺寸有限。
发明内容
本发明要解决的技术问题是,克服现有技术中的不足,提供一种高通量鱼苗在线计数装置和方法。
为解决技术问题,本发明的解决方案是:
提供一种高通量鱼苗在线跟踪计数装置,包括鱼苗观察通道和摄像设备;该装置还包括支撑框架,在其顶部设有鱼苗缓存轨道;在鱼苗缓存轨道起始端的侧板或底板上,设有循环水的出水口;鱼苗观察通道倾斜固定在支撑框架中部,且通过弯曲轨道与鱼苗缓存轨道连接;鱼苗观察通道的末端连接至鱼苗出口段,后者位于支撑框架的下部;鱼苗缓存轨道的顶部呈敞口状,弯曲轨道、鱼苗观察通道和鱼苗出口段的顶部均为封闭状态;
所述鱼苗观察通道的主体为U形槽,其底部为白色透光板材,两侧为不透光板材,顶部以遮光罩封闭;在U形槽的下方装有补光模块,包括用于提供照明的面板灯;所述摄像设备安装在遮光罩上,且镜头通过遮光罩上的透明板对准鱼苗观察通道内部。
本发明中,所述遮光罩上设有透明板,摄像设备装于安装盒中,后者以紧固螺栓固定在透明板的外侧。
本发明中,所述循环水的出水口是指设于侧板或底板上的多个出水法兰,并通过软管和连接管件接至水泵出口;水泵的入口接至位于鱼苗出口段下方的水箱中,从而构成循环水系统;在鱼苗缓存轨道的端部安装折弯挡板,折弯挡板能覆盖出水法兰但不会封堵其出水。
本发明中,所述弯曲轨道的上下面板均为光滑圆弧面,其一端通过U型连接件与鱼苗缓存轨道连接,另一端嵌套入鱼苗观察通道中并以螺栓连接;所述鱼苗出口段为变径结构,其较大开口端嵌套在鱼苗观察通道的外侧,并通过螺栓连接,连接处采用密封胶密封。
本发明中,所述面板灯的两侧设安装条,并通过螺栓固定在鱼苗观察通道的底部。
本发明中,所述摄像设备通过缆线与计算单元连接,计算单元分别与移动式存储单元和显示单元相连。
本发明中,所述支撑框架是由多根方形连接杆组成,底部设置多个胶轮。
本发明进一步提供了一种高通量鱼苗在线跟踪计数方法,包括如下步骤:
(1)接通补光模块和计算单元的电源,计算单元初始化检测目标和目标鱼苗状态、显示屏数量清零;
(2)开启水泵,待鱼苗缓存轨道中的水流稳定后倒入鱼苗,鱼苗随着水流进入鱼苗观察通道,最终通过鱼苗出口进入水箱;在此过程中,摄像设备持续获取鱼苗观察通道内部全部可视区域的图像信号,并向计算单元传输数据;
(3)计算单元对接收到的图像数据进行预处理,包括裁剪、矫正、滤波、形态学操作和孔洞填充;在所有图像中设置虚拟的计数线;
(4)从当前第i帧经过预处理的图像中获取所有连通区域的中心点位置面积信息;将面积大于阈值T的连通区域标记为检测目标,并将其位置信息存储至检测目标状态集合Detections中;
在视觉上看来,彼此连通的像素点形成了一个区域,而不连通的像素点形成了不同的区域。本发明中,将由彼此连通的像素点构成的集合,称之为一个连通区域。
(5)将当前第i帧中的检测目标与未被计数的目标鱼苗进行关联;
(6)采用卡尔曼滤波算法对目标鱼苗位置信息进行更新和预测;
(7)根据目标鱼苗是否穿越虚拟计数线和是否已计数,判断是否对鱼苗进行计数;
(8)将检测目标状态初始化,即
(9)将鱼苗计数所得的数字显示在电子显示屏上;
(10)重复步骤(3)-(9),得到的鱼苗总数NoF。
本发明中,所述步骤(1)中,
所述检测目标状态的表示方法为: 1≤j≤c,初始化后
所述目标鱼苗状态的表示方法为:Targets={o1,o2,...,ol,...,od}(ol=[bl,xl,yl,countedl]),初始化后
其中,Detections为检测目标状态集合;c为第i帧图像中的连通区域的数量,为第i帧图像中第j个检测目标在图像中的位置信息,为横坐标,为纵坐标;Targets为目标鱼苗状态集合;ol表示第l个目标鱼苗,bl表示目标鱼苗ol的连续未被关联次数;countedl表示目标鱼苗ol是否被计数,countedl=0表示未被计数,countedl=1表示已计数;(xl,yl)表示目标鱼苗ol的在图像中的位置信息,其中xl为横坐标,yl为纵坐标。
本发明中,所述步骤(3)具体包括:
(3.1)对图像进行裁剪,去除观察通道以外的图像;
(3.2)对裁剪后的图像进行矫正,减少由于摄像设备安装误差和鱼苗观察通道边缘对后续计数的影响;
(3.3)对矫正后的图像进行均值滤波;
(3.4)将滤波后的图像转换为二值图,获得二值图像;
(3.5)在二值图像中,于鱼苗观察通道出口的D个像素前设置虚拟计数线;应当保证新出现的鱼苗不能在被检测到的第二帧图像中穿过虚拟的计数线。
本发明中,所述步骤(5)中的关联包括:
(5.1)采用最佳近邻算法对检测目标与未被计数的目标鱼苗进行关联,分别获得集合UMOID、MOID、UMOIT、MOIT;
其中,UMOID(unmatched objects in Detections)表示检测目标中未被关联的目标集合;MOID(matched objects in Detections)表示检测目标中被关联的目标集合;UMOIT(unmatched objects in Targets)表示目标鱼苗中未被关联的目标集合;MOIT(matched objects in Targets)表示目标鱼苗中被关联的目标集合;
(5.2)使用MOID中的位置信息更新对应MOIT中的位置信息,并将MOIT中的连续未被关联次数标志数b置为0;
(5.3)将UMOID添加至Targets集合中,并将连续未被关联次数标志数b置为0,计数标志数counted置为0;
(5.4)采用在第i-1帧(上一帧)中由上一轮计算获得的目标鱼苗状态量预测值中的位置信息,去更新UMOIT中对应目标鱼苗的位置信息,并将对应目标鱼苗的连续未被关联次数标志数b+=1;当b>s时,表示该目标鱼苗为误检测,并将其从Targets集合中删除,此步骤允许鱼苗连续s帧未被检测。
本发明中,所述步骤(6)包括:
(6.1)创建线性卡尔曼滤波器,并假设处于摄像设备视野内的鱼苗均为二维平面内的匀速运动;
(6.2)结合当前第i帧中目标鱼苗的量测值和前一帧第i-1帧的状态预测值获得目标鱼苗的最优估计状态量,并更新Target中目标鱼苗的位置信息;
(6.3)预测目标鱼苗在下一帧图像中的状态量,即目标鱼苗在下一帧第i+1帧中的状态量预测值;
(6.4)更新目标鱼苗状态量的协方差矩阵。
本发明中,所述步骤(7)包括:
若某未被计数的目标鱼苗(counted=0)穿过虚拟计数线时,则NoF+=1,并将该目标鱼苗标为已计数(counted=1)。NOF不断迭代,始终表示鱼苗数量。
与现有技术相比,本发明具有以下有益效果及优点:
(1)本发明的装置采用光滑的弯曲轨道和斜面通道进行鱼苗分离,相较于采用通道尺寸限制和分流板间隔的方法,不仅提高了鱼苗通过速度,能够将单位时间内的鱼苗通量提高几倍,而且降低了对鱼苗的剐蹭损伤;
(2)本发明的装置不需要通过调整通道大小、分流板间隔等途径即可适用于不同尺寸的鱼苗计数,且可以对混合尺寸的鱼苗进行计数;
(3)本发明的装置能够实现大批量鱼苗实时在线连续计数,提高了鱼苗计数效率;
(4)本发明提供的在线计数方法,通过连续多帧的跟踪预测策略,有效降低了误检测和漏检测对计数准确率的影响。
附图说明
图1是本发明鱼苗计数装置的轴视图;
图2是鱼苗计数装置中的鱼苗缓存模块与弯曲轨道的爆炸图;
图3是鱼苗计数装置中的鱼苗观察通道、补光模块和摄像头安装罩的爆炸图;
图4是鱼苗计数装置中的鱼苗观察通道示意图;
图5是鱼苗计数装置中的软管和水泵连接示意图;
图6是鱼苗计数装置的缆线连接示意图;
图7是鱼苗计数方法的流程图;
图8是鱼苗计数方法摄像设备视野示意图。
附图标记说明:
1-鱼苗缓存轨道,2-弯曲轨道,3-遮光罩,4-鱼苗出口,5-支撑框架,6-胶轮,7-U型连接件,8-平面挡板,9-折弯挡板,10-出水法兰,11-四通管,12-安装盒,13-摄像设备,14-透明板,15-鱼苗观察通道,16-安装条,17-安装条,18-面板灯,19-软管,20-水泵,21-计算单元,22-显示屏,23-变压器,24-缆线,25-移动存储单元,26-鱼苗,27-电源。
具体实施方式
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。
如图所示,高通量鱼苗在线跟踪计数装置,包括用于采集和处理图像的摄像设备13和计算单元21,以及鱼苗缓存轨道1、弯曲轨道2、鱼苗观察通道15和鱼苗出口段4;计算单元21可以是计算机主机,也可以是单片机等小型计算模块。
支撑框架5是由多根方形连接杆组成,底部设置多个胶轮6。鱼苗缓存轨道1设于支撑框架5的顶部;在鱼苗缓存轨道1起始端设有3个循环水的出水口,具体是指3个出水法兰10。鱼苗观察通道15倾斜固定在支撑框架中部,且通过弯曲轨道3与鱼苗缓存轨道1连接;鱼苗观察通道15的末端连接至鱼苗出口段4,后者位于支撑框架5的下部;鱼苗缓存轨道1的顶部呈敞口状,弯曲轨道2、鱼苗观察通道15和鱼苗出口段4的顶部均为封闭状态.
3个出水法兰10设于远离弯曲轨道2一端的底面上,折弯挡板9通过折弯凹槽嵌套在鱼苗缓存轨道1的侧壁上;折弯挡板9能覆盖出水法兰但不会封堵其出水,用于使出水法兰的出水均分,避免水流过于集中。平面挡板8开有两条细长凹槽,并通过凹槽嵌套在鱼苗缓存轨道1与弯曲轨道2的连接处。出水法兰10通过软管19与四通管11中的三端连接,四通管11的另一端通过软管19与水泵20连接。水泵20的入口接至位于鱼苗出口段4下方的水箱中,从而构成循环水系统。
弯曲轨道2上下面均为光滑圆弧面,利用鱼苗运动过程中在不同圆弧段的加速度差异实现鱼苗在运动方向的分离;弯曲轨道2的一端通过U型连接件7与鱼苗缓存轨道1连接,另一端嵌套入鱼苗观察通道15,并采用螺栓连接,在连接处涂上密封胶用于密封。鱼苗出口段4为变径结构,其稍大的开口端嵌套在鱼苗观察通道15的外侧,并通过螺栓连接,衔接处采用密封胶密封。
鱼苗观察通道15的主体为U形槽,其底部为白色透光板材,两侧为不透光板材,顶部以遮光罩3封闭;遮光罩3上的开口处设有透明板14,摄像设备13装于安装盒12中,后者以紧固螺栓固定在透明板14的外侧。摄像设备13的镜头对准鱼苗观察通道15的内部。在U形槽的下方装有补光模块,包括用于提供照明的面板灯18;面板灯18两侧设置安装条16和安装条17,并通过螺栓与鱼苗观察通道15连接,对面板灯18进行限位;面板灯18可通过鱼苗观察通道15的白色透明底面对处于观察通道15内的鱼苗进行补光,并隔绝了外界光源对计数的影响,面板灯18通过变压器23连接220v的电源27。
摄像设备13通过缆线24与计算单元21连接;计算单元12连接显示单元22和移动式的存储单元25,存储单元25用于存储摄像设备13采集和处理后的图像和视频,显示单元22用于显示计算所得的鱼苗数量;计算单元12和显示单元22可通螺栓安装在装置上。
通过对上述鱼苗计数装置的运用,本发明所述基于机器视觉检测跟踪的鱼苗计数方法,包括如下步骤:
a、打开补光模块和计算单元21的电源,等待计算单元21初始化检测目标和目标鱼苗状态、显示屏22数量清零(NoF=0);
所述检测目标的状态表示方法为: 初始化后
所述目标鱼苗的状态表示方法为:Targets={o1,o2,...,ol,...,od}(ol=[bl,xl,yl,countedl]),初始化后
式中各符号含义是:Detections为检测目标状态集合,c为第i帧图像中的连通域数量,分别为第i帧图像中第j个检测目标在图像中的位置信息,其中为横坐标,为纵坐标;Targets为目标鱼苗状态集合;ol表示第l个目标鱼苗;bl目标鱼苗ol的连续未被关联次数;countedl表示目标鱼苗ol是否被计数,countedl=0表示未被计数,countedl=1表示已计数;(xl,yl)表示目标鱼苗ol的在图像中的位置信息,其中xl为横坐标,yl为纵坐标。
b、打开水泵开关,待水流稳定后,向鱼苗缓存轨道1倒入鱼苗,使鱼苗从鱼苗缓存轨道1随着水流依次进入曲线轨道2和鱼苗观察通道15,最终通过鱼苗出口段4流出装置;在此过程中,摄像设备13持续获取鱼苗观察通道15内部全部可视区域的图像信号,并向计算单元22传输数据;
c、计算单元22对接收到的图像数据进行预处理,包括裁剪、矫正、滤波和形态学操作;并在鱼苗观察通道15的出口位置前设置虚拟的计数线。该步骤具体包括以下内容:
c1、对图像进行裁剪,去除鱼苗观察通道15以外的图像,获得裁剪后的图像;
c2、步骤c1后,计算单元22对裁剪后的图像进行矫正,减少由于摄像设备13安装误差和鱼苗观察通道15边缘对后续计数的影响,获得矫正后的图像;
c3、步骤c2后,计算单元22对矫正后的图像进行均值滤波,获得滤波后的图像;
c4、步骤c3后,计算单元22将滤波后的图像转换为二值图,获得二值图像;
c5、步骤c4后,计算单元22在二值图像中,于鱼苗观察通道出口的D个像素前设置虚拟计数线,应当保证新出现的鱼苗不能在被检测到的第二帧图像中穿过虚拟的计数线。
d、从当前第i帧经过预处理的图像中获取所有连通区域的中心点位置和面积信息;将面积大于阈值T的连通区域标记为检测目标,并将其位置信息存储至检测目标状态集合Detections中;
e、将当前第i帧中的检测目标与未被计数的目标鱼苗进行关联;其中关联包括以下步骤:
e1、采用最佳近邻算法对检测目标与未被计数的目标鱼苗进行关联,分别获得UMOID、MOID、UMOIT、MOIT。具体地,采用欧式距离当作最佳近邻算法中的距离值;
其中,UMOID(unmatched objects in Detections):表示检测目标中未被关联的目标集合;MOID(matched objects in Detections):表示检测目标中被关联的目标集合;UMOIT(unmatched objects in Targets):表示目标鱼苗中未被关联的目标集合;MOIT(matched objects in Targets):表示目标鱼苗中被关联的目标集合;
e2、使用MOID中的位置信息更新对应MOIT中的位置信息,并将MOIT中的连续未被关联次数标志数b置为0;
e3、将UMOID添加至Targets集合中,并将连续未被关联次数标志数b置为0,计数标志数counted置为0;
e4、采用在上一帧(第i-1帧)中由上一轮计算获得的目标鱼苗状态量预测值中的位置信息,去更新UMOIT中对应目标鱼苗的位置信息,并将对应目标鱼苗的连续未被关联次数标志数b+=1;当b>s时,表示该目标鱼苗为误检测,并将其从Targets集合中删除;此步骤允许鱼苗连续s帧未被检测,可解决鱼苗由于短暂粘连而被漏检测的问题。
f、采用卡尔曼滤波算法对目标鱼苗位置信息进行更新和预测;包括以下步骤:
f1、创建线性卡尔曼滤波器,假设处于摄像设备视野内的鱼苗均为二维平面内的匀速运动。具体地,对于某条目标鱼苗在二维平面内的匀速运动,用四维坐标[x,y,vx,vy]来表示目标鱼苗的状态量,其中[x,y]表示对应目标鱼苗的运动位置,而[vx,vy]则表示目标鱼苗运动的x和y方向的分速度,初始状态为[0,0,0,0]。目标鱼苗的量测值为Targets中的坐标信息以及通过相邻两帧(当前第i帧与前一帧第i-1帧)计算得出的x和y方向的速度。
f2、结合当前第i帧中目标鱼苗的量测值和前一帧(第i-1帧)的状态预测值获得目标鱼苗的最优估计状态量,并更新Target中目标鱼苗的位置信息;
f3、预测目标鱼苗在下一帧图像中的状态量,即目标鱼苗在下一帧第i+1帧中的状态量预测值;
f4、更新目标鱼苗状态量的协方差矩阵。
g、根据目标鱼苗是否穿越虚拟计数线和是否已计数判断是否对鱼苗进行计数;
若某未被计数的目标鱼苗(counted=0)穿过虚拟计数线时,则NoF+=1,并将该目标鱼苗标为已计数(counted=1)。具体地,当某条鱼苗的中心位置的x坐标数值(xi)大于D(即xi>D)时,则视为穿过虚拟计数线。
h、将检测目标状态初始化,即
i、将数字NoF显示在电子显示屏上;
j、重复步骤(c-i),待完成计数,鱼苗总数即为NoF。
鱼苗计数装置计数方法的具体应用示例:
经过步骤a、b、c、d后,若则在经过所有步骤之后,所有数值均不发生变化,NOF=0。假设图像大小为(1280,720)
经过步骤c、d后,假设当前第i帧中连通区域面积大于T的数量为3,中心位置分别为将此3个连通区域标记为检测目标,则此时Detections={(112,141),(512,274),(103,617)};若此时Targets={o1},o1=[b1=1,x1=486,y1=263,counted1=0],
步骤e、将当前第i帧中的检测目标与未被计数的目标鱼苗进行关联;其中关联包括以下步骤:
e1、采用最佳近邻算法对检测目标与未被计数的目标鱼苗进行关联。易得与o1关联,分别获得UMOID、MOID、UMOIT、MOIT;
MOIT={o1}
e2、使用MOID中的位置信息更新对应MOIT中的位置信息,并将MOIT中的连续未被关联次数标志数b置为0;此时,o1=[b1=0,x1=512,y1=274,counted1=0]。
e3、将UMOID添加至Targets集合中,并将连续未被关联次数标志数b置为0,计数标志数counted置为0;
此时,Targets={o1,o2,o3},
o1=[b1=0,x1=512,y1=274,counted1=0],
o2=[b2=0,x2=112,y2=141,counted2=0],
o3=[b3=0,x3=103,y3=617,counted3=0]
e4、采用在上一帧(第i-1帧)中由步骤(6.3)计算的状态预测值更新UMOIT中对应目标鱼苗的位置信息,并将对应目标鱼苗的连续未被关联次数标志数b+=1;当b>s时,表示该目标鱼苗为误检测,并将其从Targets集合中删除;此步骤允许鱼苗连续s帧未被检测,可解决鱼苗由于短暂粘连而被漏检测的问题。由于此步骤执行后所有数值未改变。
f、采用卡尔曼滤波算法对目标鱼苗位置信息进行更新和预测;包括以下步骤:
f1、创建卡尔曼滤波器,假设处于摄像设备视野内的鱼苗均为二维平面内的匀速运动。具体地,对于某条目标鱼苗在二维平面内的匀速运动,用四维坐标[x,y,vx,vy]来表示鱼苗状态,其中[x,y]表示对应目标鱼苗的位置信息,而[vx,vy]则表示目标鱼苗运动的x和y方向的分速度,初始状态为[0,0,0,0]。目标鱼苗的量测值为Targets中的坐标信息以及通过相邻两帧(当前第i帧与前一帧第i-1帧)计算得出的x和y方向的速度。
在本示例中,目标鱼苗o1,o2,o3在当前第i帧中的量测状态量分别为:取时间差为单位时间
[512,274,512-486,274-263],[112,141,112-0,141-0],[103,617,103-0,617-0]
f2、结合当前第i帧中目标鱼苗的量测值和前一帧第i-1帧的状态预测值获得目标鱼苗的最优估计状态量,并更新Target中目标鱼苗的位置信息;由于o2,o3在第i帧之前未出现,因此o2,o3的预测值均为初始状态[0,0,0,0]。
假设获得的最优估计值为
[520,276,25,21],[89,120,89,120],[79,600,79,600]
此时,Targets={o1,o2,o3},
o1=[b1=0,x1=520,y1=276,counted1=0],
o2=[b2=0,x2=89,y2=120,counted2=0],
o3=[b3=0,x3=79,y3=600,counted3=0]
f3、预测目标鱼苗在下一帧(第i+1帧)图像中的状态量,即为目标鱼苗在下一帧第i+1帧中的状态预测值;假设获得o1,o2,o3的下一帧(第i+1帧)图像中的状态量预测值为:鱼苗位置数值大小不能超过图像大小
[547,288,23,19],[160,200,75,85],[136,720,69,500]
f4、更新目标鱼苗状态量的协方差矩阵。
g、根据目标鱼苗是否穿越虚拟计数线和是否已计数判断是否对鱼苗进行计数;
若某未被计数的目标鱼苗(counted=0)穿过虚拟计数线时,则NoF+=1,并将该目标鱼苗标为已计数(counted=1)。具体地,当某条鱼苗的中心位置的x坐标数值(xi)大于D(即xi>D)时,则视为穿过虚拟计数线。为了方便说明NOF的数值变化,假设D为500,由于Targets中o1的横坐标x1>500,因此NOF+=1,counted1=1。此时NOF=1,o1=[b1=0,x1=520,y1=276,counted1=1]。
h、将检测目标标志清空,即
i、将数字NoF=1显示在电子显示屏上;
j、重复步骤(c-i),待完成计数,鱼苗总数即为NoF。
说明:以上数据仅为说明计数方法在应用过程中各项数值的变化,并非真实数据;且计数方法在应用时,鱼苗在通过虚拟计数线之前已经连续多帧被跟踪预测。
以上实施例是供理解发明之用,并非对本发明的限制,有关领域的普通技术人员,在权利要求技术方案的基础上,还可以做出多种变化或变型,这些变化或变型应当理解为仍属于本发明的保护范围。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种面向未知环境的多放射源在线探寻方法