基于图像处理的鱼类计数与测量方法研究
2024-04-03邹立汪雅陈志辉卢月红许威韩枫
邹立 汪雅 陈志辉 卢月红 许威 韩枫
关键词:智能养殖网箱;图像处理;鱼类;计数;测量
0 引言
随着社会生活水平的提高,人们对水产品的需求也越来越大,鱼类的养殖得到了前所未有的发展。我国目前绝大多数水产品采用池塘养殖方式,并且多采用人工捕捞与人工计量的方法监控鱼类的生长状况[1]。随着计算机技术的快速发展,图像处理技术愈发成熟,可以将图像处理技术运用于鱼类的监测中。利用固定在网箱上的摄像头可以对鱼类进行活动状况监测和预测,能够有效分析判断鱼类行为、生长情况、生长环境和健康状况,可以实现鱼群疫病的及早发现与防治。
为解决传统养殖的缺点,国内外学者提出了很多检测观察鱼群的方法。Lantsova等人[2]对自然水域下的鱼类设计了一个自动检测和跟踪系统,首先采用视频前几帧图像构建背景模型,然后运用背景减除法和图像处理算法进行鱼类检测,最后利用卡尔曼滤波算法进行跟踪。Spampinato等人[3]首先运用灰度图像的统计特征对场景纹理和颜色进行分类,然后利用自适应高斯混合模型与移动平均算法相结合实现鱼类的检测,最后运用自适应均值漂移算法对检测到的鱼类进行跟踪。孙龙清等人[4]针对水下背景噪声对目标特征提取的干扰,提出一种基于鱼体的骨架特征和边缘特征相结合的特征匹配检测算法。但由于鱼类所处的环境复杂,并且鱼是非刚性目标,轮廓的形状变化复杂,对鱼类进行计数和测量是困难的。本研究针对鱼类养殖设计了一种简易的养殖网箱,可实现智能投食和智能捕捞,并实现了对网箱中鱼类对计数和测量,有效降低了养殖成本。
1 养殖网箱设计
现有的网箱通常需要人工拉回渔网,费时费力,具有捕捞不便的缺陷,且不具备自动投食的功能。本研究所设计的养殖网箱可全自动化控制网箱升降来实现渔网折叠,进而压缩鱼的活动空间,更好地实现鱼类捕捞、喂食、计数和测量。该网箱装置装有悬浮层,具有承受该装置重量的浮力,即便水位升高,网箱结构也会随之升高,使悬浮层浮于水面上。
所设计的养殖网箱结构如图1所示,该网箱底层圈①有预留孔位,孔位上绑着足够长的绳子,绳长略大于涨潮后网箱最底层到海底的距离,绳子另一端绑着重物,重物沉于海底。作用:防止风浪把该装置吹走。网箱中间层③为可移动层,该层包含下移动圈② 和上固定圈④,中间为渔网,柔韧性好,可折叠,渔网固定在两圈之间。下移动圈通过舵机驱动可实现自由升降,从而实现渔网的自由升降。作用:捕鱼时可把下移动圈升高,压缩鱼的活动空间,使鱼聚集到海平面,从而实现智能捕鱼。网箱上层⑤为悬浮层,该层用来放置悬浮物。作用:使装置能稳定漂浮在海平面上。该层往下会放置各类监测用的传感器。网箱顶层⑥设有隔水层,该层上装有智能投饵装置,以及舵机、主控板、摄像头等电子设备。该层做有隔水措施,有效避免下雨天、大风浪等自然因素导致电子设备進水。
2 鱼类计数与测量实验设计
采用装在养殖网箱上的摄像头对鱼类活动状况进行实时采集,根据网箱养殖鱼类图像的特点,计数与测量的实验设计流程如图2所示。由于水下悬浮物的影响,采集到的鱼类图像较为模糊,因此首先对采集到的鱼类图像进行水下图像增强以去除图像噪声;然后采用MATLAB图像处理工具箱对增强后的图像进行阈值分割、形态学处理、边缘检测等处理,获取准确的鱼类图像轮廓;最后利用图像的连通性和最小外接矩形法实现对鱼类的计数与测量。
3 实验过程
3.1 水下图像增强
针对采集的水下鱼类图像由于悬浮物引起的模糊问题,首先基于暗通道先验理论进行整体去模糊,然后将鱼类图像由RGB彩色图像转化为单分量灰度图像[5],最后采用中值滤波进一步去除图像噪声。
暗通道先验是由何凯明等人对大量的自然无雾情况下的图像进行统计和分析后提出的一种基于统计的先验理论。因为水下图像与雾天图像在退化过程都会受到介质中悬浮颗粒的影响而导致光的衰减,因此根据暗通道先验理论,绝大部分水下自然清晰图像的RGB三个颜色通道中,至少存在一个通道的像素点的值非常小或者接近零。因此,暗通道图可以表示为:
其中,Idark (x,y ) 表示原水下图像的暗通道图;Ω(x,y )表示以像素点(x,y )为中心的区域窗口;Ii 表示原水下图像的某个颜色通道。
其中,I (x,y ) 表示实际拍摄到的水下有雾图像;J (x,y ) 表示清晰的无雾图像;Ai 表示无穷远处的背景光强度,由暗通道图Idark (x,y )中提取最亮的前0.1%的像素值并提取对应的位置信息,选取最亮的点作为Ai;t(x,y ) 为场景透射率,表示光在介质中的吸收和反射,可由式(3)计算。
其中,d 为目标与成像点之间距离;pλ 为水下环境吸收系数和散射系数之和,随光的波长λ变化。
在进行暗通道先验去模糊后,分别显示RGB三分量图像并得出最佳的分量图,其结果如图3所示,主要代码如下:
因为在图像的形成过程中会受到各种因素的影响,内外部的噪声都会对鱼类的计数产生不可避免的影响,所以需要通过图像滤波处理去除噪声,常见的滤波方法有中值滤波、高斯滤波、均值滤波等[6],不同的滤波方法有不同的效果和影响,实验选用中值滤波去除图像内外部的噪声。
中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,从而消除孤立的噪声点[7]。MATLAB中使用函数med?filt2实现中值滤波,代码如下:
3.2 鱼类分割
大津法是一种确定图像二值化分割阈值的算法,又叫作最大类间方差法,是一种自适应性阈值分割方法[8]。大津法求得的前景与背景图像的类间方差最大,且计算不受图像亮度和对比度的影响。在MATLAB中可使用函数graythresh计算大津法最佳阈值,并使用函数imbinarize进行阈值分割,结果如图4 所示,主要代码如下:
3.3 形态学处理
图像的形态学处理主要包括:膨胀、腐蚀、开运算、闭运算、边界提取、区域填充等[9-10]。其中开运算是指图像先腐蚀再膨胀的过程,可以很好地去除噪声,并保留原有图像的外轮廓。主要代码如下:
SE=strel‘( disk,5);
bw=imopen(image_seg,SE);
figure(1);imshow(bw);
SE是结构体元素对象或结构元素对象的数组,由strel或者offstrel函数返回。
3.4 鱼类边缘检测
边缘检测一般用于图像特征提取与检测,旨在检测数字图像中有明显变化的边缘或者其他不连续的区域。常用的边缘检测算法有Roberts算法、Prewitt算法、Sobel算法、Laplacian算法、LOG算法、Canny算法等[11],MATLAB提供了函數edge用于寻找边缘,此函数提供了最强大的边缘检测算子Canny,Canny算子使用了2种不同阈值(用以实现强边缘和弱边缘的检测),而且仅当弱边缘连通到强边缘时才在输出中包括弱边缘[12]。因此,此方法受到噪声的影响小,更能检测到真正的弱边缘,实现较好的边缘检测。处理结果如图5所示,其主要代码如下:
4 实验结果
4.1 鱼类计数结果
由于二值化后的图片中只有0和1这2种像素值,而1代表着前景即目标鱼所在的区域,0代表着背景所在的区域,经过一系列处理之后的前景的像素是连续且平滑的,在图像中表现为连通性[13],所以可以利用函数计算连通区域的数目间接计算鱼类的数量,MATLAB提供了函数bwlabel用以返回连通区域的个数即实现计数功能,具体代码如下:
其中,image_canny是输入的二值图像,8规定了连通性。labelpic为图像标记,其维数与image_canny 的维数相同,其元素值为大于等于0的整数,0代表背景区域,1代表第一个目标区域,2代表第二个目标区域,以此类推;num是返回二值图像中目标的数目,如图6所示为对连通区域的计数结果。
4.2 鱼类测量结果
在大多数情况下,鱼的形状都是不规则的,一般的轮廓检测法只能得到孤立的轮廓,难以得到较为完整的轮廓[14],所以实验通过最小外接矩形获取鱼类的轮廓,如图7所示为对鱼类长度的测量结果。
5 结束语
本文针对传统水产养殖需要耗费大量人工进行鱼类喂食、捕捞、计数和测量,设计了一种智能养殖网箱,并基于图像处理技术提出了鱼类计数与测量方法,实验表明,该方法可以自动准确地对鱼类进行计数和测量,研究成果对于提高水产养殖的智能化具有一定的实践意义。