范繼澤,劉 鷹,余心杰,胡 雨,盧煥達(dá)
(1 大連海洋大學(xué)海洋科技與環(huán)境學(xué)院,設(shè)施漁業(yè)教育部重點(diǎn)實(shí)驗(yàn)室,遼寧 大連 116023;2 浙江大學(xué)寧波理工學(xué)院,浙江 寧波 315000)
動(dòng)物行為是基因、神經(jīng)功能和環(huán)境相互作用的統(tǒng)一的生物學(xué)過(guò)程,行為數(shù)據(jù)不僅用于解釋神經(jīng)系統(tǒng)如何工作,還可以系統(tǒng)地將基因和環(huán)境結(jié)合在一起[1],例如躲避捕食、求偶。游泳行為是魚(yú)類(lèi)的基本行為[2],可通過(guò)魚(yú)類(lèi)游泳的特征反演魚(yú)類(lèi)的生理狀態(tài),如Ohlberger等[3]用擺尾頻率和體重反演魚(yú)類(lèi)的活躍代謝率,Steinhausen等[4]過(guò)擺尾頻率反演魚(yú)類(lèi)的游動(dòng)速度和耗氧量。在游泳行為的諸多指標(biāo)中,一分鐘內(nèi)擺尾次數(shù)(即擺尾頻率)是最重要的指標(biāo)之一,不僅被廣泛用于指示魚(yú)類(lèi)壓力[5-6],也是魚(yú)型機(jī)器人和仿真模擬的一個(gè)重要參數(shù)[7-11]。因此,精確測(cè)定魚(yú)類(lèi)游泳行為中的擺尾頻率具有重要的理論和實(shí)踐意義。然而,在實(shí)際生產(chǎn)實(shí)踐中,往往只能通過(guò)人工觀測(cè)并計(jì)數(shù)的方法測(cè)定魚(yú)類(lèi)行為數(shù)據(jù),費(fèi)時(shí)費(fèi)力[12-13]。近幾年,魚(yú)類(lèi)行為的自動(dòng)測(cè)量已成為研究熱點(diǎn)[14-16]。其中,魚(yú)類(lèi)擺尾頻率的自動(dòng)測(cè)量取得了一些進(jìn)展[17]。
魚(yú)類(lèi)擺尾頻率的測(cè)量方法大致可分為3類(lèi):(1)基于加速度的測(cè)量方法。如Kawabe等[18]將加速度測(cè)量器安裝在底棲型魚(yú)類(lèi)的背部,通過(guò)水流加速度的變化分析擺尾頻率,但是背部的裝置會(huì)影響?hù)~(yú)類(lèi)游動(dòng),破壞魚(yú)體周邊的水流流場(chǎng)。(2)基于聲學(xué)的測(cè)量方法。聲學(xué)方法可以適應(yīng)多種水質(zhì)條件,可以在水體透明度不高的情況下使用,如Ross等[19-20]使用成像聲吶分析野外洄游魚(yú)類(lèi)的長(zhǎng)度和擺尾頻,但是成像聲吶在水體很小、水位很低的實(shí)驗(yàn)室環(huán)境內(nèi)使用限制很大,且設(shè)備昂貴。(3) 基于計(jì)算機(jī)視覺(jué)測(cè)量的方法。利用計(jì)算機(jī)視覺(jué)技術(shù)對(duì)魚(yú)類(lèi)行為進(jìn)行分析是一種自動(dòng)、非入侵式、經(jīng)濟(jì)且有效的方法[16],如Terayama等[14]通過(guò)分析魚(yú)類(lèi)尾部特征點(diǎn)偏離身體自然狀態(tài)中線的距離分析擺尾頻率;Marques等[21]提取斑馬魚(yú)稚魚(yú)體脊椎上的特征點(diǎn),通過(guò)計(jì)算脊椎彎曲曲率,統(tǒng)計(jì)擺尾頻率。然而在環(huán)境背景復(fù)雜多變的情況下,檢測(cè)結(jié)果噪音抑制仍然是亟待解決的問(wèn)題[7]。
本文將魚(yú)類(lèi)擺尾根據(jù)魚(yú)體脊椎曲線的曲率劃分為左右半拍,每個(gè)半拍是魚(yú)體由放松至彎曲再回到放松的過(guò)程,通過(guò)檢測(cè)半拍發(fā)生的次數(shù),最后得到擺尾次數(shù)。針對(duì)前景提取中的噪音問(wèn)題,提出一種消除細(xì)化算法結(jié)果中誤差的方法,在特征點(diǎn)提取部分使用harris角點(diǎn)檢測(cè)算法[22]提取二值圖像細(xì)化后魚(yú)體中線的特征點(diǎn),其中兩個(gè)特征點(diǎn)為頭部和尾部標(biāo)識(shí),最后一個(gè)是脊椎曲線的harris角點(diǎn),計(jì)算三個(gè)特征點(diǎn)構(gòu)成的圓的曲率,用以表征魚(yú)類(lèi)擺尾狀態(tài)。
試驗(yàn)使用的大黃魚(yú)(Larimichthyscrocea)由象山縣港灣水產(chǎn)苗種有限公司提供,暫養(yǎng)3 d后進(jìn)行試驗(yàn)。暫養(yǎng)期間水溫控制在(24.0±1.0)℃,每2 d換水30%,每天吸底一次,正式試驗(yàn)前禁食24 h,溶氧保持在6.0 mg/L左右。
試驗(yàn)使用的是直徑120 cm白色半透明水桶和長(zhǎng)寬高為50 cm、22 cm、40 cm藍(lán)色封閉水槽。選擇大黃魚(yú)叉長(zhǎng)為(9.2±0.8)cm。將試驗(yàn)魚(yú)放置于水桶內(nèi)適應(yīng)30 min后進(jìn)行試驗(yàn)。每一次錄制視頻8 h,試驗(yàn)持續(xù)7 d,白天采用自然光,晚上使用紅外光。試驗(yàn)裝置的頂部放置紅外攝像頭記錄試驗(yàn)魚(yú)的游泳行為。攝像頭型號(hào)為??低暩咔鍞z像機(jī)(DS-2CD7A46F-IZS),攝像機(jī)安裝在水桶正上方,距水面1.2 m;其采集圖像為24 bit RGB 1080× 1920真彩圖像,采集速率25幀/s。試驗(yàn)裝置如圖1所示。試驗(yàn)進(jìn)行過(guò)程中用透光率50%遮光布將試驗(yàn)水槽四周?chē)?,禁止在試?yàn)水槽周?chē)顒?dòng),避免聲音的干擾。每條魚(yú)選擇5個(gè)1 min視頻片段,共35個(gè),分別采用人工計(jì)數(shù)、程序計(jì)數(shù)方法采集魚(yú)類(lèi)游泳過(guò)程中的擺尾頻率。
圖1 試驗(yàn)系統(tǒng)
根據(jù)魚(yú)體脊椎曲線的曲率,將魚(yú)類(lèi)擺尾劃分為左右半拍,每個(gè)半拍是魚(yú)體由放松至彎曲再回到放松的過(guò)程(圖2)。
圖2 半拍定義
為了對(duì)魚(yú)類(lèi)的擺尾次數(shù)進(jìn)行人工統(tǒng)計(jì),每秒截取五幀,對(duì)300幅質(zhì)量較好的圖片其進(jìn)行標(biāo)記。算法首先利用均值背景建模生成沒(méi)有魚(yú)類(lèi)的背景圖片,然后通過(guò)背景減法提取出前景目標(biāo)魚(yú)體,再把前景圖形細(xì)化處理,消除細(xì)化算法不完美導(dǎo)致的分叉,提取魚(yú)體首尾和脊椎曲線上的特征點(diǎn),最后計(jì)算曲率,得到擺尾次數(shù)。算法流程如圖3所示。
圖3 擺尾次數(shù)統(tǒng)計(jì)算法流程圖
1.4.1 前景提取
利用數(shù)學(xué)建模的方法建立一幅背景圖像幀與當(dāng)前圖像幀的數(shù)學(xué)關(guān)系,將兩幀圖像對(duì)應(yīng)像素點(diǎn)的灰度值進(jìn)行相減,并取其絕對(duì)值,得到差分圖。
Dn=|fn(x,y)-B(x,y)|
(1)
式中:Dn為前景提取的結(jié)果;fn(x,y)為當(dāng)前圖像幀;B(x,y)為背景圖像幀。
逐個(gè)對(duì)像素點(diǎn)進(jìn)行二值化處理,得到二值化圖像Rn。其中,灰度值255的點(diǎn)即為前景(運(yùn)動(dòng)目標(biāo))點(diǎn),灰度值為0的點(diǎn)即為背景點(diǎn)。
(2)
式中:Rn為二值化圖像;Dn為前景提取的結(jié)果;T為圖像亮度閾值。對(duì)圖像Rn進(jìn)行連通性分析,選取一個(gè)前景像素點(diǎn)作為種子,然后根據(jù)連通區(qū)域的兩個(gè)基本條件(像素值相同、位置相鄰)將與種子相鄰的前景像素合并到同一個(gè)像素集合中,最后得到的該像素集合則為一個(gè)連通區(qū)域。取最大連通域,得到含有完整運(yùn)動(dòng)目標(biāo)的圖像。
1.4.2 圖像細(xì)化
得到前景圖像的掩模,使用二值圖像細(xì)化算法[23],提取魚(yú)體的中線。細(xì)化結(jié)果是原曲線的中心線,本文使用基于索引表的二值圖像細(xì)化算法,根據(jù)邊緣點(diǎn)的八連通域情況查找索引表,以確定該邊緣點(diǎn)是否能夠被刪除。
1.4.3 分叉消除
背景減法得到的圖像是很細(xì)致的,魚(yú)的尾鰭、胸鰭也會(huì)被提取。使用二值圖像細(xì)化的結(jié)果會(huì)因?yàn)樗惴ㄟB通性的要求出現(xiàn)分支,對(duì)后來(lái)的特征點(diǎn)檢測(cè)和曲率計(jì)算造成很大的影響。細(xì)化后圖像使用3×3的值全為1的算子進(jìn)行卷積(圖4),若卷積結(jié)果為2,則在圖中是線的端點(diǎn),若值為3則是點(diǎn)在直線上,若值為4則是分叉的三叉節(jié)點(diǎn),從端點(diǎn)開(kāi)始遍歷細(xì)線上的像素點(diǎn),若小于固定閾值,則刪除相應(yīng)游程,得到無(wú)分叉的魚(yú)體中線。
圖4 細(xì)化后圖像的三種圖像結(jié)構(gòu)
1.4.4 特征點(diǎn)檢測(cè)
算法基本思想是使用一個(gè)固定窗口在圖像上進(jìn)行任意方向上的滑動(dòng),比較滑動(dòng)前、后兩種情況和窗口中像素灰度變化程度,如果存在任意方向上的滑動(dòng),都有著較大灰度變化,則該窗口中存在特征點(diǎn)。當(dāng)窗口向[u,v]方向移動(dòng)時(shí),那么滑動(dòng)前、后對(duì)應(yīng)的窗口中的像素點(diǎn)灰度變化描述如下:
(3)
式中:E(u,v)是灰度變化描述函數(shù);x,y是窗口內(nèi)所對(duì)應(yīng)的像素坐標(biāo)位置;(u,v)分別是窗口的偏移量;w(x,y)是窗口權(quán)重函數(shù)。
將w(x,y)函數(shù)設(shè)定為以窗口中心為原點(diǎn)的二元正態(tài)分布。如果窗口中心點(diǎn)是特征點(diǎn)時(shí),移動(dòng)前、后該點(diǎn)的灰度變化應(yīng)該最為劇烈,所以該點(diǎn)權(quán)重系數(shù)設(shè)定較大,而離窗口中心(特征點(diǎn))較遠(yuǎn)的點(diǎn),這些點(diǎn)的權(quán)重系數(shù)可以設(shè)定較小,以示該點(diǎn)對(duì)灰度變化貢獻(xiàn)較小,則使用二元高斯函數(shù)來(lái)表示窗口函數(shù),最終得到:
(4)
式中:E(u,v)是灰度變化描述函數(shù);w(w,y)為權(quán)重窗口;I(x,y)圖像灰度值;Ix,Iy分別為x,y方向的導(dǎo)數(shù);u,v分別為x,y方向的偏移量。
求出(4)中矩陣特征值記為λx、λy。通過(guò)判斷特征值的情況可以區(qū)分出這三種特征點(diǎn)的類(lèi)型,轉(zhuǎn)角點(diǎn):在水平、豎直兩個(gè)方向上變化均較大的點(diǎn),即λx、λy都較大;直線上的點(diǎn):僅在水平或豎直方向變化較大的點(diǎn),即λx和λy只有其一較大;平滑區(qū)域:在水平、豎直方向的變化量均較小的點(diǎn),即λx、λy都較小。圖5為特征點(diǎn)檢測(cè)算法的結(jié)果。
1.4.5 曲率計(jì)算和半拍統(tǒng)計(jì)
在魚(yú)體中線(圖6圓中不規(guī)則實(shí)線)上提取三個(gè)特征點(diǎn),如圖6中A、B、C三點(diǎn),計(jì)算三點(diǎn)構(gòu)成的圓的曲率,用以表征魚(yú)體的彎曲程度,使用余弦定理求角BAC的角度,化為正弦后帶入下圖公式:
(5)
式中:A為角BAC的角度;a為角BAC的對(duì)邊;R是圓的半徑。
圖5 特征點(diǎn)提取的結(jié)果
圖6 曲率計(jì)算
每當(dāng)魚(yú)體中線由直線變彎曲再變回直線,記為一個(gè)半拍,表現(xiàn)在曲率序列上則是峰的形狀,通過(guò)計(jì)算魚(yú)體曲率變化的序列,使用1×5的均值濾波器時(shí)間序列上平滑原始尾部曲率,濾除由于跟蹤噪聲引起的小波動(dòng)。統(tǒng)計(jì)最大值大于閾值峰的數(shù)量,即可得到魚(yú)類(lèi)擺尾的半拍數(shù)量,圖像的時(shí)間尺度是0.125 s,統(tǒng)計(jì)得到的擺尾數(shù)目與總時(shí)間相除,得到最終的擺尾頻率。
使用絕對(duì)誤差評(píng)估算法的準(zhǔn)確性。絕對(duì)誤差是測(cè)量值和真實(shí)值之間差的絕對(duì)值,手動(dòng)跟蹤魚(yú)類(lèi)并統(tǒng)計(jì)其擺尾次數(shù),并將結(jié)果與本方法估計(jì)的結(jié)果進(jìn)行比較。
系統(tǒng)誤差是與分析過(guò)程中某些固定的原因引起的一類(lèi)誤差,它具有重復(fù)性、單向性、可測(cè)性。即在相同的條件下,重復(fù)測(cè)定時(shí)會(huì)重復(fù)出現(xiàn),使測(cè)定結(jié)果系統(tǒng)偏高或系統(tǒng)偏低,其數(shù)值大小也有一定的規(guī)律。本文提出的算法誤差來(lái)源為前景提取中復(fù)雜的背景導(dǎo)致的魚(yú)體不完整,相鄰幀脊椎曲線上特征點(diǎn)的不匹配。當(dāng)視頻中的魚(yú)類(lèi)身體中線曲率為零時(shí),測(cè)量的魚(yú)類(lèi)身體曲率會(huì)有小幅波動(dòng),所以需要設(shè)定一個(gè)閾值用于過(guò)濾系統(tǒng)誤差。從數(shù)據(jù)集中選取300張曲率接近零的圖片,使用本算法統(tǒng)計(jì)曲率大小,計(jì)算絕對(duì)誤差。選擇不在擺尾狀態(tài)圖片的原因是其身體曲率真實(shí)測(cè)量值是零,測(cè)量值可以直接轉(zhuǎn)化為誤差值,用時(shí)更短。算法計(jì)算曲率的系統(tǒng)誤差在(0.001 4±0.000 62)。
算法使用魚(yú)體脊椎方向中線的曲率周期變化來(lái)計(jì)算擺尾頻率,每一次曲率由零到極大值再變?yōu)榱愕倪^(guò)程記為一次半拍。在統(tǒng)計(jì)過(guò)程中噪聲引起的小波動(dòng)影響算法的正確性,設(shè)定閾值過(guò)濾誤差,即波峰數(shù)值小于閾值時(shí)不納入統(tǒng)計(jì),使用系統(tǒng)誤差統(tǒng)計(jì)的均值加三倍標(biāo)準(zhǔn)差0.003和經(jīng)驗(yàn)數(shù)值0.005分別統(tǒng)計(jì)結(jié)果(表1)。
表1 絕對(duì)誤差統(tǒng)計(jì)
分別利用擺尾頻率統(tǒng)計(jì)算法和Terayama等[14]的算法在本數(shù)據(jù)集上做驗(yàn)證,結(jié)果如圖7所示?;诰嚯x的算法在數(shù)值較小時(shí)表現(xiàn)得更穩(wěn)定,歸一化后數(shù)據(jù)的標(biāo)準(zhǔn)差為0.021,而基于曲率算法的標(biāo)準(zhǔn)差0.055。基于曲率算法在魚(yú)體彎曲時(shí)表現(xiàn)得更好,測(cè)量錯(cuò)誤的情況更少,基于距離的算法錯(cuò)誤點(diǎn)數(shù)為5個(gè),而基于曲率算法的錯(cuò)誤點(diǎn)數(shù)為3個(gè)。算法的目的是標(biāo)記擺尾的次數(shù),測(cè)量魚(yú)體中線曲率較大的圖像序列時(shí)波動(dòng)劇烈會(huì)導(dǎo)致統(tǒng)計(jì)擺尾比實(shí)際值大,測(cè)量魚(yú)體中線曲率較小的圖像序列時(shí)會(huì)導(dǎo)致曲率參數(shù)候選區(qū)域變小。兩種方法都需要完整的提取圖像中魚(yú)的輪廓,不完整圖像會(huì)影響本文算法的特征點(diǎn)提取,也會(huì)影響?hù)~(yú)類(lèi)輪廓的質(zhì)心,影響距離測(cè)量。
圖7 算法結(jié)果對(duì)比
算法由很多步驟組成,任何一個(gè)步驟出現(xiàn)誤差都會(huì)導(dǎo)致測(cè)量結(jié)果的偏差(表2),所以設(shè)計(jì)算法過(guò)程中需要不斷查看中間結(jié)果,以確保最終結(jié)果的正確率。
表2 各步驟錯(cuò)誤率
分析每個(gè)步驟的誤差對(duì)最終結(jié)果的影響,對(duì)后續(xù)算法的分析和改進(jìn)至關(guān)重要。前景提取的完整性是對(duì)算法結(jié)果影響最大的一種錯(cuò)誤,輪廓不完整會(huì)導(dǎo)致細(xì)化結(jié)果出現(xiàn)分叉,而角點(diǎn)提取算法會(huì)優(yōu)先提取線條端點(diǎn),使基于特征點(diǎn)的曲率計(jì)算結(jié)果出現(xiàn)波動(dòng),導(dǎo)致擺尾次數(shù)統(tǒng)計(jì)結(jié)果偏大,后續(xù)算法很難彌補(bǔ)(圖8)。胸鰭和尾鰭導(dǎo)致的細(xì)化結(jié)果分叉,也同樣會(huì)導(dǎo)致結(jié)果偏大。半拍統(tǒng)計(jì)中,閾值的選取過(guò)大會(huì)導(dǎo)致擺尾幅度較小的擺動(dòng)不納入計(jì)算,使統(tǒng)計(jì)結(jié)果偏小;閾值選取過(guò)小會(huì)導(dǎo)致由誤差導(dǎo)致的曲率波動(dòng)被計(jì)入擺尾次數(shù),導(dǎo)致統(tǒng)計(jì)結(jié)果偏大。
使用算法統(tǒng)計(jì)白天和夜間魚(yú)類(lèi)擺尾次數(shù),結(jié)果如圖9所示,魚(yú)類(lèi)在白天單位時(shí)間的擺尾次數(shù)較多。使用單因素方差分析結(jié)果具有顯著性差異(F=7.361,P<0.05)。
圖8 誤差傳播
圖9 不同時(shí)段擺尾次數(shù)統(tǒng)計(jì)
提出一種基于計(jì)算機(jī)視覺(jué)的擺尾頻率測(cè)量方法。擺尾頻率不僅可以用于魚(yú)類(lèi)生理的無(wú)接觸測(cè)量,也適用于水質(zhì)污染的生物判別和生物預(yù)警。使用算法估算擺尾次數(shù)的正確率為91.7%,正確率達(dá)到使用要求。本研究的未來(lái)發(fā)展方向是使用更魯棒的方法提取魚(yú)類(lèi)輪廓,如使用全卷積神經(jīng)網(wǎng)絡(luò)做圖像的語(yǔ)義分割,將魚(yú)類(lèi)和背景完整分離;使用多目標(biāo)跟蹤方法測(cè)量魚(yú)群中多條魚(yú)的擺尾次數(shù)。
□