基于MATLAB的鱼苗自动计数方法与实现

2020-08-18 12:16王紫聪多功昊
农业技术与装备 2020年7期
关键词:鱼苗灰度计数

王紫聪,多功昊,张 航

(天津农学院计算机与信息工程学院,天津 300384)

在鱼苗养殖的过程中,饲养、运输、销售等环节都需要对鱼苗进行定量计数。目前我国普遍采用人工统计的方法来计数,费时费力,准确度也无法保证,还会对鱼苗造成损伤,因此目前无论鱼苗的生产者、销售者还是购买者,都迫切需要一种简便、快捷、准确而便宜的鱼苗计数系统来进行鱼苗计数[1]。

1 传统鱼苗计数方法介绍

传统的鱼苗计数方法主要的方法有3种,分别是:

1.1 打杯法

这种计数方法主要应用于水花、乌子等鱼苗计数。首先用一个细密的网兜将鱼苗去水,搅拌使其均匀分布,然后用量杯打上一杯,再将其分为若干份,随机抽取一份记录鱼苗数量,再乘以总的份数就可以得出一杯鱼苗的总数量,再看看一共打了多少杯,然后进行计算,最后得出鱼苗的总数量。

1.2 打筛法

此法用于朝苗(寸苗)比较多。先用鱼筛将鱼苗大、小区分,然后采用一个可以漏水的筛子,打上一筛,将其分为若干份进行清点计数,以此类推,得出鱼苗的总数量。

1.3 称质量法

这种方法主要应用于经济价值高的品种,或者较大的鱼苗及二龄鱼种的计数。对于经济价值高的品种,首先称出1 g鱼苗,然后再计算出每1 g多少尾,再按容器称取相应的质量;对于较大的鱼苗或者二龄鱼种,则先称出0.5 kg的鱼苗,记录其尾数,再计算出总质量,乘以单位质量尾数,得出鱼苗总数量。

这些传统的鱼苗计数方法往往费时费力,且准确率不高,所以找到一种可以快速准确且不伤鱼苗的自动计数方法是非常有必要的。

2 鱼苗计数研究现状

目前对于鱼苗计数的研究并不广泛,并且大部分是采用硬件的方法对鱼苗进行计数。

2.1 滚筒配合光敏传感器计数

在日本,矢田真美和陈泸利用喷水滚筒配合光敏传感器进行鱼苗计数,这个方法主要分为两个步骤:①滚筒式进行分选,使鱼苗几乎等大的进入提前准备好的隔成若干格的盛鱼盘的每个格子中;②滚筒式鱼体分离计数:鱼体在滚筒上均匀移动进入隔板间隙,在隔板上方安装光敏传感器,鱼逐条经过传感器达到计数的目的,这种方法效率太低且成本较高。

2.2 光电比色计和分光光度计数

厦门大学张康德提出利用光电比色计和分光光度计发测量鱼苗数目,这个方法原理是:当平行光线找的测试的液体时,根据光线在液体的不同部位透光强度不同来衡量测试液体中鱼苗的数目,这种方法只能测量静态特定容器中的鱼苗,应用前景不乐观。

2.3 发光二极管测量

现在还有一些采用发光二极管测量鱼苗数量的方法,这种方法要求鱼苗个体差异不能太大,测量速度也比较慢。综上所诉,鱼苗的自动计数课题研究还在起步阶段,发展空间还很大。

3 鱼苗图像处理

3.1 图像灰度化

灰度化处理就是将一幅色彩图像转化为灰度图像的过程。彩色图像分为R、G、B 3个分量,分别显示出红绿蓝等各种颜色,灰度化就是使彩色的R、G、B分量相等的过程。直接处理彩色图像会大大地降低系统的执行速度,所以通常将输入的彩色图像转换为灰度图像[4]。可以直接在MATLAB内调用imshow(GrayImage)函数来实现图像灰度化。灰度化后的图像如图1所示。

3.2 图像分割

对鱼苗图像进行灰度化处理后,下一步需要将灰度化后的鱼苗图片进行图像分割,将图像中的鱼苗从背景中分离出来,即使目标与背景分离。图像分割指的是根据灰度、颜色、空间、纹理、几何形状等特征,将图像划分为若干个互不相交的区域,使得这些特征在同一区域内表现出一致性或相似性,在不同的区域内表现出明显的不同[5]。本文采用的分割方法是阈值分割,进行阈值分割时,需要先找到一个阈值T,灰度值大于T的像素点赋值为1,为目标物体;小于T的像素点赋值为0,为背景[2]。这样目标和背景就可以很好的划分开来。阈值分割分为两种方式:①全局阈值是选用一个固定的阈值适用于整个图像;②局部阈值是在一个图像上须知不是一个固定的常数。由于在鱼苗图像中背景灰度恒定,鱼苗和背景的对比度几乎不变,因此采用全局阈值方法。在MATLAB中调用工具箱中的graythresh函数计算全局灰度阈值。对鱼苗图片进行阈值分割后得到的图像如图2所示。

3.3 图像滤波

完成阈值分割后,还需要对处理过图像进行滤波去噪处理。常用的滤波方法有高斯滤波、二值滤波、平滑滤波等,本文所采用的滤波方式是基于形态学的闭运算进行图像滤波处理。闭运算是一个先膨胀后腐蚀的过程:腐蚀是一种消除边界点,使边界向内部收缩的过程,可以用来消除小且无意义的物体;膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程,可以用来填补物体中的空洞。图像的闭运算常常用来对目标图像分开的区域进行连接及对图像中细小缝隙进行填补,通过适当地选择结构元素,图像的闭运算可以令图像的填补结果具有一点的几何特征,适当地对图像进行闭运算有时可以使图像变得更加清晰连贯,同时可以避免原图像中线条加粗,所以使用闭运算对鱼苗图像进行滤波处理,可以提高图片的质量。在MATLAB中可以调用bwmorph函数进行闭运算,对鱼苗图片进行形态学闭运算后,结果如图3所示。

4 鱼苗计数

完成图像分割、滤波之后,可以利用MATLAB自带的bwlabel函数对二值图像进行连通域计数[3]。鱼苗的自动计数系统计数结果如下图4所示。

5 结论

本文采用计算机图像处理的方法,利用MATLAB处理采集到的鱼苗图像进行自动计数。本系统通过对鱼苗图像进行二值化、形态学操作等预处理,在此基础上将图像用阈值分割等一系列操作后完成自动计数。系统的计数结果表明基于MATLAB的鱼苗自动计数系统具有较高的准确性,并且此系统还具有自动化、高效率、不伤害鱼苗等特点,为自动计数提供了一种有效的实施途径。

猜你喜欢
鱼苗灰度计数
采用改进导重法的拓扑结构灰度单元过滤技术
天津港智慧工作平台灰度发布系统和流程设计
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
古代的计数方法
Arduino小车巡线程序的灰度阈值优化方案
古代的人们是如何计数的?
控流优选鱼苗检疫器
高原地区青海湖裸鲤鱼苗运输注意事项
黑鱼苗价格将继续高位运行