一种基于自适应鱼体弯曲模型的金枪鱼识别方法技术

技术编号:20026465 阅读:20 留言:0更新日期:2019-01-06 05:14
本发明专利技术提出了一种基于自适应鱼体弯曲模型的金枪鱼识别方法,通过搭建视频图像采集平台;并对获取的自然条件下的水下的视频进行采样,是由于相邻帧之间的采集时间较短,需要通过采样来减小数据冗余;然后将采样后的各帧进行图像处理,标记为不同斑块用于后续判断是否为单条完整的好鱼;接着去除不满足要求的斑块,然后计算剩余候选斑块的特征,获得自适应鱼体弯曲的初始模型M;再计算候选斑块的边界点和与其对应的初始模型M的标记点的匹配情况,如果找到至少35个边界点和标记点相匹配,并且拟合误差指数FEI≤2.23,则判定候选斑块为单条完整的好鱼,否则判定为坏鱼。本发明专利技术能够自动识别复杂环境图像中的金枪鱼个体,无需人工干预,成功率高,有助于自动计算金枪鱼的生物量。

【技术实现步骤摘要】
一种基于自适应鱼体弯曲模型的金枪鱼识别方法
本专利技术属于金枪鱼检测
,特别是涉及一种基于自适应鱼体弯曲模型的金枪鱼识别方法。
技术介绍
近年来,基于机器视觉和图像处理技术的水下应用都取得了很大进展。然而,现有的研究大多需要在研究过程中进行人工干预,这对于取得有效的结果至关重要,这些需要人为干预的应用和技术只能称之为半自动。但在渔业管理和水生生物多样性的实际研究中需要开展自动化的水下视频图像处理,以方便快捷的提取有用的信息。在水生生物多样性研究中,一个具有挑战性的课题是自动识别水下图像中的完整的鱼体,确保所识别的物体是单条完整的鱼(以下称为“好鱼”);而不是鱼体的一部分,或两条或更多条重叠的鱼(以下简称“坏鱼”)。好鱼的识别和提取是水下图像处理中的难点,高质量的识别好鱼可为鱼类检测、物种鉴定、生物测定、养殖笼中的生物量估计和鱼群的计数等奠定基础。有研究人员在环境可控的条件下获得水下鱼群的图像,鱼群游动通过狭窄通道时,在使用背景照明的条件下获得鱼群图像,然后进行鱼的分类,但在图像处理中需要人工确定鱼的位置。水产养殖中广泛使用的生物量估计系统,需要人工判定不同的鱼的完整轮廓,然后人工标记鱼头和鱼尾,之后通过设备自动计算鱼体的长度和宽度。为了减少鱼在水中游动对长度测量的影响,只进行鱼体伸直或是接近伸直状态的测量,该生物量估计系统属于半自动化。如果使用立体视觉系统,则需要在图像对中的相应点进行标记处理。这些系统基于简单的长度和宽度测量来确定尺寸,从而估计养殖笼中的鱼群的数量,推断生物量。目前,通过计算捕获金枪鱼的数量和重量对金枪鱼的捕捞配额进行监测。将拖网捕获的金枪鱼转移到笼子,并对捕获的数量进行计数。金枪鱼的转运通常是通过连接网,将金枪鱼从一个笼子转移到另一个笼子,而有经验的潜水员配备摄像机来监视金枪鱼的转移过程。随后,对视频图像进行人工判读,实现对金枪鱼数量的人工计数。通常通过转移的已知数量的鱼的重量之和来估计单条金枪鱼的平均重量。人工计数获得的总数量乘以平均重量,得到总的生物量。
技术实现思路
水下图像中的金枪鱼的自动识别是一个复杂的问题。必须克服不同鱼的重叠、水体混浊、光照不均导致的过分割等难题。采集到的视频中的不同金枪鱼具有不同的形状、大小和游动方向,因此,需要不受以上变化影响的鲁棒性强的金枪鱼检测方法。针对现有金枪鱼计数困难的技术问题,提供一种基于自适应鱼体弯曲模型的金枪鱼识别方法。为解决上述技术问题,本专利技术所采用的技术方案如下:一种基于自适应鱼体弯曲模型的金枪鱼识别方法,步骤如下:S1,采集实际条件下金枪鱼的水下图像并预处理。S1.1,使用安装在金枪鱼转移连接网接口处的摄像机获取视频信息。所述摄像机包括摄像机A和摄像机B,摄像机A和摄像机B均安装在一个圆形平台上,圆形平台位于养殖笼底部并由浮标提供浮力;且摄像机A和摄像机B的镜头均朝向水面;摄像机A以20f/s获取视频AR20,摄像机B以30f/s获取视频BR30。S1.2,对视频信息进行采样获得若干视频帧图像Ft。S1.2.1,对摄像机A以20f/s获取的视频AR20通过10选1进行采样得到视频采样图像AR20’。S1.2.2,对摄像机B以30f/s获取的视频BR30通过10选1进行采样得到视频采样图像BR30’。S1.2.3,从视频采样帧图像AR20’和视频采样图像BR30’中获得若干个视频帧图像Ft,并将视频帧图像Ft变为RGB图像Ft’。S1.3,对各视频帧图像分别进行图像处理,将各视频帧图像分别分割为不同的候选斑块;所述图像处理包括图像灰度化和图像二值化。S1.3.1,图像灰度化。采用平均值法,将彩色图像Ft’转换为灰度图像Grayt,转换公式为:Grayt(x,y)=(RFt(x,y)+GFt(x,y)+BFt(x,y))/3;其中,x、y分别表示图像的行坐标值和列坐标值;RFt(x,y)、GFt(x,y)、BFt(x,y)分别表示RGB图像Ft’的(x,y)处的R、G、B通道的值;Grayt(x,y)表示灰度图像Grayt在(x,y)处的灰度值。S1.3.2,图像二值化;S1.3.2.1,采用局部阈值法将灰度图像Grayt的所有灰度值Grayt(x,y)二值化得到二值化图像Bint。S1.3.2.1.1,计算灰度图像Grayt的像素点(x,y)处的局部领域的灰度值的均值Mt,xy,计算公式为:其中,E×F是局部邻域的大小;i、j分别表示灰度图像Grayt的行坐标值和列坐标值;对于边界像素点的邻域问题,图像边界之外的像素值通过镜像获得。S1.3.2.1.2,得到二值化图像Bint;将均值Mt,xy作为阈值用于判断灰度图像Grayt的像素点(x,y)为前景或背景;如果像素点Grayt(x,y)的灰度值小于均值Mt,xy,那么将像素点设定为前景,取值为0,否则设定为背景,取值为1,从而得到二值化图像Bint,公式为:S1.3.2.2,对二值化图像Bint取反得到二值化图像Binrt;在二值化图像Bint中斑块区域的值为0,呈现黑色;背景区域的值为1,呈现白色;对二值化图像Bint取反,将像素值为0的改为1,像素值为1的改为0,得到二值化图像Binrt;S1.3.2.3,对二值化图像Binrt进行填充得到二值化图像Binrft;采用Matlab中的imfill函数对二值化图像Binrt进行填充,得到填充后的二值化图像Binrft,填充公式为:Binrft=imfill(Binrt,'holes');S1.3.2.4,平滑二值化图像Binrt,得到二值化图像Binrfct;采用Matlab中的imclose函数将对二值化图像Binrft进行形态学处理中的闭运算操作,平滑二值化图像Binrft中的各个斑块的轮廓并且将紧邻的斑块合并得到闭运算后的二值化图像Binrfct,具体的操作为:Binrfct=imclose(Binrft,se);其中,se表示半径为D的圆形结构元素,创建函数为:se=strel('disk',D);含义为创建一个半径为D的圆形结构元素,disk表示圆形形状。S2,删除二值化图像Binrfct中包含图像边界的连通区域,得到图像Bcbt。采用matlab中的函数imclearborder对二值化图像Binrfct进行边界对象抑制,删除包含图像边界的连通区域后得到图像Bcbt。S3,标记图像Bcbt中的连通区域。采用Matlab中连通区域标记函数bwlabel对图像Bcbt进行连通区域的标记:[JLt,NUMt]=bwlabel(Bcbt,conn);其中,NUMt表示图像Bcbt中连通区域的数量,即斑块的数量;JLt表示和图像Bcbt大小相同的矩阵,JLt矩阵包含了标记了图像Bcbt中每个连通区域的类别标签,标签的值为1,2,…,NUMt;conn表示是按conn邻域寻找连通区域。S4,去除图像Bcbt中无用的连通区域,得到图形Bcbt’。S4.1,得到图像Bcbt中各连通区域的像素总数。采用Matlab中regionprops函数获得图像Bcbt中各连通区域的像素总数;statust=regionprops(JLt,'Area');设定scxy的取值范围为1~NUMt,则statust(scxy,1)表示第sc本文档来自技高网
...

【技术保护点】
1.一种基于自适应鱼体弯曲模型的金枪鱼识别方法,其特征在于,步骤如下:S1,采集实际条件下金枪鱼的水下图像并预处理得到二值化图像Binrfct;S2,删除二值化图像Binrfct中包含图像边界的连通区域,得到图像Bcbt;S3,标记图像Bcbt中的连通区域;S4,去除图像Bcbt中无用的连通区域,得到图像Bcbt’;S5,提取Bcbt’中各连通区域得到鱼体的候选斑块;S6,提取各候选斑块的骨架;S7,提取骨架的端点数并再次筛选候选斑块;S8,比较候选斑块的端点数与设定值大小,若候选斑块的端点数量等于4时进行步骤S9‑S12,若候选斑块的端点数量等于5时进行步骤S13‑S15;S9,确定候选斑块的头部端点和尾部端点,得到鱼体头部坐标(Sx,Sy);S10,获得金枪鱼脊柱的长度l;S11,计算倾斜角度α;S12,计算弯曲角度θ;S13,确定候选斑块的头部端点,得到鱼体头部坐标(Sx,Sy),并获得鱼体脊柱的长度l;S14,计算倾斜角度α;S15,计算弯曲角度θ;S16,根据步骤S9‑S12或S13‑S15构造候选斑块的初始模型M;M=(Sx、S y、l、α、θ);S17,获取各候选斑块的轮廓上的边界点坐标;S18,计算初始模型M中的参考点和标记点的坐标,并计算当前候选斑块和与其对应的初始模型M之间的拟合误差指数FEI;S19,根据候选斑块的边界点和M的标记点相匹配的数量以及拟合误差指数FEI,判断当前候选斑块是否为一条完整的金枪鱼;拟合误差指数FEI为0,则表示候选斑块和对应的初始模型M之间的完美契合;如果找到至少35个候选斑块的边界点与M的标记点相匹配,并且拟合误差指数FEI≤2.23,则判定候选斑块是一条完整的金枪鱼。...

【技术特征摘要】
1.一种基于自适应鱼体弯曲模型的金枪鱼识别方法,其特征在于,步骤如下:S1,采集实际条件下金枪鱼的水下图像并预处理得到二值化图像Binrfct;S2,删除二值化图像Binrfct中包含图像边界的连通区域,得到图像Bcbt;S3,标记图像Bcbt中的连通区域;S4,去除图像Bcbt中无用的连通区域,得到图像Bcbt’;S5,提取Bcbt’中各连通区域得到鱼体的候选斑块;S6,提取各候选斑块的骨架;S7,提取骨架的端点数并再次筛选候选斑块;S8,比较候选斑块的端点数与设定值大小,若候选斑块的端点数量等于4时进行步骤S9-S12,若候选斑块的端点数量等于5时进行步骤S13-S15;S9,确定候选斑块的头部端点和尾部端点,得到鱼体头部坐标(Sx,Sy);S10,获得金枪鱼脊柱的长度l;S11,计算倾斜角度α;S12,计算弯曲角度θ;S13,确定候选斑块的头部端点,得到鱼体头部坐标(Sx,Sy),并获得鱼体脊柱的长度l;S14,计算倾斜角度α;S15,计算弯曲角度θ;S16,根据步骤S9-S12或S13-S15构造候选斑块的初始模型M;M=(Sx、Sy、l、α、θ);S17,获取各候选斑块的轮廓上的边界点坐标;S18,计算初始模型M中的参考点和标记点的坐标,并计算当前候选斑块和与其对应的初始模型M之间的拟合误差指数FEI;S19,根据候选斑块的边界点和M的标记点相匹配的数量以及拟合误差指数FEI,判断当前候选斑块是否为一条完整的金枪鱼;拟合误差指数FEI为0,则表示候选斑块和对应的初始模型M之间的完美契合;如果找到至少35个候选斑块的边界点与M的标记点相匹配,并且拟合误差指数FEI≤2.23,则判定候选斑块是一条完整的金枪鱼。2.根据权利要求1所述的基于自适应鱼体弯曲模型的金枪鱼识别方法,其特征在于,在步骤S1中,具体步骤如下:S1.1,使用安装在金枪鱼转移连接网接口处的摄像机获取视频信息;所述摄像机包括摄像机A和摄像机B,摄像机A和摄像机B均安装在一个圆形平台上,圆形平台位于养殖笼底部并由浮标提供浮力;且摄像机A和摄像机B的镜头均朝向水面;摄像机A以20f/s获取视频AR20,摄像机B以30f/s获取视频BR30;S1.2,对视频信息进行采样获得若干视频帧图像Ft;S1.2.1,对摄像机A以20f/s获取的视频AR20通过10选1进行采样得到视频采样图像AR20’;S1.2.2,对摄像机B以30f/s获取的视频BR30通过10选1进行采样得到视频采样图像BR30’;S1.2.3,从视频采样帧图像AR20’和视频采样图像BR30’中获得若干个视频帧图像Ft,并将视频帧图像Ft变为RGB图像Ft’;S1.3,对各视频帧图像分别进行图像处理,将各视频帧图像分别分割为不同的候选斑块;所述图像处理包括图像灰度化和图像二值化;S1.3.1,图像灰度化;采用平均值法,将彩色图像Ft’转换为灰度图像Grayt,转换公式为:Grayt(x,y)=(RFt(x,y)+GFt(x,y)+BFt(x,y))/3;其中,x、y分别表示图像的行坐标值和列坐标值;RFt(x,y)、GFt(x,y)、BFt(x,y)分别表示RGB图像Ft’的(x,y)处的R、G、B通道的值;Grayt(x,y)表示灰度图像Grayt在(x,y)处的灰度值;S1.3.2,图像二值化;S1.3.2.1,采用局部阈值法将灰度图像Grayt的所有灰度值Grayt(x,y)二值化得到图像Bint;S1.3.2.1.1,计算灰度图像Grayt的像素点(x,y)处的局部临域的灰度值的均值Mt,xy,计算公式为:其中,E×F是局部邻域的大小;i、j分别表示灰度图像Grayt的行坐标值和列坐标值;S1.3.2.1.2,得到二值化图像Bint;将均值Mt,xy作为阈值用于判断灰度图像Grayt的像素点(x,y)为前景或背景;如果像素点Grayt(x,y)的灰度值小于均值Mt,xy,那么将像素点设定为前景,取值为0,否则设定为背景,取值为1,从而得到二值化图像Bint,公式为:S1.3.2.2,对二值化图像Bint取反得到二值化图像Binrt;在二值化图像Bint中斑块区域的值为0,呈现黑色;背景区域的值为1,呈现白色;对二值化图像Bint取反,将像素值为0的改为1,像素值为1的改为0,得到二值化图像Binrt;S1.3.2.3,对二值化图像Binrt进行填充得到二值化图像Binrft;采用Matlab中的imfill函数对二值化图像Binrt进行填充,得到填充后的二值化图像Binrft,填充公式为:Binrft=imfill(Binrt,'holes');S1.3.2.4,平滑二值化图像Binrt,得到二值化图像Binrfct;采用Matlab中的imclose函数将对二值化图像Binrft进行形态学处理中的闭运算操作,平滑二值化图像Binrft中的各个斑块的轮廓并且将紧邻的斑块合并得到闭运算后的二值化图像Binrfct,具体的操作为:Binrfct=imclose(Binrft,se);其中,se表示半径为D的圆形结构元素,创建函数为:se=strel('disk',D);含义为创建一个半径为D的圆形结构元素,disk表示圆形形状。3.根据权利要求1所述的基于自适应鱼体弯曲模型的金枪鱼识别方法,其特征在于,在步骤S4中,具体步骤如下:S4.1,得到图像Bcbt中各连通区域的像素总数;采用Matlab中regionprops函数获得图像Bcbt中各连通区域的像素总数;statust=regionprops(JLt,'Area');设定scxy的取值范围为1~NUMt,则statust(scxy,1)表示第scxy个连通区域的面积;S4.2,将各连通区域的面积与设定值比较,若小于设定值则该连通区域去除,得到图形Bcbt’;如果第scxy个连通区域的像素数小于设定值,则将与矩阵JLt中值为scxy的元素的位置相同的Bcbt处的像素值置0,从而去除了图像Bcbt中的面积小于设定值的斑块;在步骤S6中,具体步骤如下:S6.1,对各个候选斑块进行骨架提取;采用Matlab中的bwmorph函数对各个候选斑块进行形态学操作,其中的'skel'属性是进行骨架提取,同时保持骨架不发生断裂;应用形态学操作xn次,直到各连通区域的骨架不再发生变化为止;gujiat,lti=bwmorph(SJLFt,lti,'skel',xn);S6.2,去除各骨架的毛刺;采用Matlab中的bwmorph函数中包含'spur'属性,去除小的分支;gujiaqucit,lti=bwmorph(gujiat,lti,'spur',xn);在步骤S7中,具体步骤如下:S7.1,获得骨架的端点;采用Matlab中的bwmorph函数中包含'endpoints'属性,用于查找骨架的端点;所述端点包含金枪鱼的头部端点、尾部端点以及胸鳍两侧的端点;duandiant,lti=bwmorph(gujiaqucit,lti,'endpoints');S7.2,根据步骤S7.2中获得的端点数筛选候选斑块;如果候选斑块的端点数量小于4或者大于5,则将该候选斑块排除,并判定为坏鱼。4.根据权利要求1所述的基于自适应鱼体弯曲模型的金枪鱼识别方法,其特征在于,在步骤S9中,具体步骤如下:S9.1,计算两两端点之间的距离;S9.2,确定头部端点和尾部端点;相互比较各距离,并选择距离最大的两个端点作为头部端点或尾部端点;并在剩余两个端点中择一作为胸鳍端点,并比较该胸鳍端点距离头部端点或尾部端点的距离,并选择距离大的端点作为尾部端点,另一端点为头部端点,则鱼体头部坐标(Sx,Sy)就是头部端点的坐标。5.根据权利要求1所述的基于自适应鱼体弯曲模型的金枪鱼识别方法,其特征在于,在步骤S10中,具体步骤如下:S10.1,剔除金枪鱼骨架中表示胸鳍的两个支径,得到骨架gujiaqucitizhit,lti;S10.1.1,以胸鳍端点为中心点Pcenter;S10.1.2,搜索中心点Pcenter的H邻域;S10.1.3,若H邻域内仅有1个像素点Pnext的像素为1,则进行步骤S10.1.4;若H邻域内至少有2个像素点Pnext的像素为1,则进行步骤S10.1.5;S10.1.4,将当前中心点Pcenter的像素值置为0,并将像素点Pnext作为新的中心点Pcenter,并重复步骤S10.1.2-S10.1.3;S10.1.5,将中心点Pcenter删除,实现胸鳍端点支径的剔除;S10.1.6,重复步骤S10.1.1-S10.1.5,直至两个胸鳍端点支径都被剔除,得到骨架gujiaqucitizhit,lti;S10.2,计算金枪鱼脊柱的长度l;S10.2.1,获得骨架gujiaqucitizhit,lti主径的周长为LOBt,lti;采用Matlab中regionprops函数,得到金枪鱼的骨架的主径的周长为LOBt,lti:LOBt,lti=regionprops(gu...

【专利技术属性】
技术研发人员:张卫正李萌张伟伟金保华张秋闻刘岩陈启强徐晋赵进超邹东尧
申请(专利权)人:郑州轻工业学院
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1