劉星橋, 張 弛
(江蘇大學(xué)電氣信息工程學(xué)院/機械工業(yè)設(shè)施農(nóng)業(yè)測控技術(shù)與裝備重點實驗室,江蘇鎮(zhèn)江 212013)
隨著信息化、集約化水產(chǎn)養(yǎng)殖的發(fā)展,養(yǎng)殖規(guī)模日益擴大,高效準確的水質(zhì)變化、養(yǎng)殖密度等信息可以為魚類的優(yōu)質(zhì)高產(chǎn)提供有效保證。應(yīng)激反應(yīng)是魚類受到氨氮、溶解氧等應(yīng)激源影響所表現(xiàn)出的機能障礙和防御反應(yīng)。魚類的行為變化則是監(jiān)測應(yīng)激反應(yīng)的靈敏指標[1]。適當(dāng)?shù)膽?yīng)激可使魚類逐步適應(yīng)環(huán)境,增強免疫機能,從而提高生產(chǎn)性能,然而過度地應(yīng)激不僅影響魚類的生產(chǎn)性能,而且會誘發(fā)多種疾病,甚至造成魚類死亡[2]?,F(xiàn)代集約化養(yǎng)殖方式極大地限制了魚類的行為反應(yīng),常導(dǎo)致其行為異常,引起生理系統(tǒng)的應(yīng)激反應(yīng)[3]。在這種環(huán)境下,養(yǎng)殖密度大,養(yǎng)殖水體水質(zhì)變化很快,當(dāng)魚類處于缺氧、水質(zhì)惡化等應(yīng)激條件下在較短的時間內(nèi)就會產(chǎn)生嚴重的后果[4]。隨著計算機圖像處理技術(shù)在水產(chǎn)養(yǎng)殖領(lǐng)域的作用不斷加強,國內(nèi)外學(xué)者已經(jīng)取得了可觀的研究成果。在國外,Ma等利用計算機視覺系統(tǒng)對魚在不同運動模式下的運動軌跡進行分析從而實現(xiàn)對水質(zhì)監(jiān)測[5]。在國內(nèi),盧煥達等利用攝像設(shè)備對魚的行為進行監(jiān)控發(fā)現(xiàn),魚類由于應(yīng)激或疾病等引起體色和游動速度的變化[6]。目前,在水產(chǎn)養(yǎng)殖中魚類的行為信息基本上是通過人直接觀察得到,耗費人力、時間,難以及時發(fā)現(xiàn)養(yǎng)殖系統(tǒng)中出現(xiàn)的問題[7]。利用圖像處理技術(shù)對魚類進行監(jiān)測能夠提升魚類養(yǎng)殖過程中的科技含量,對提高管理效率和增加養(yǎng)殖產(chǎn)量具有非常重要的意義[8]。利用嵌入式系統(tǒng)實時處理魚類圖像并分析魚類軌跡,為養(yǎng)殖管理提供有價值的信息,從而提高生產(chǎn)效率。
試驗平臺包括嵌入式開發(fā)板、攝像頭、玻璃水槽、支架以及背光燈(圖1)。玻璃水槽長為80 cm,寬為38 cm,高為 48 cm,水深為40 cm;嵌入式開發(fā)板選用型號Tiny4412;配置2個攝像頭,分別放置在水槽上方距水面26 cm處和水槽前方距前玻璃30 cm處。為保證拍攝到的背景清晰均勻,玻璃水槽的后玻璃和槽底用白色聚氯乙烯(polyvinyl chloride,簡稱PVC)墻紙覆蓋。
開發(fā)在嵌入式Linux系統(tǒng)上運行的人機界面,為嵌入式平臺下的復(fù)雜圖像處理算法的設(shè)計和實現(xiàn)作基礎(chǔ)。在PC端流行的Ubuntu操作系統(tǒng)中交叉編譯OpenCV(開源計算機視覺庫)和Qt(跨平臺C++圖形用戶界面庫)移植到嵌入式Linux系統(tǒng)。嵌入式硬件結(jié)構(gòu)如圖2所示。使用Qt設(shè)計圖像處理系統(tǒng)的人機交互界面;OpenCV庫作為提供圖像處理函數(shù)的靜態(tài)庫添加到Qt的工程文件中作算法函數(shù)支持。
本設(shè)計采用的基本流程由圖像采集、圖像預(yù)處理、目標分割、目標標記、目標跟蹤以及輸出軌跡6個部分組成(圖3)。
處理彩色圖像會造成不必要的系統(tǒng)開銷,所以要對采集到的圖像進行灰度化處理?;叶然幚硎菍GB(red,green,blue)格式的彩色圖像轉(zhuǎn)換為灰度圖像,轉(zhuǎn)換公式如公式(1)所示:
Gray=0.229×R+0.587×G+0.114×B。
(1)
式中:Gray表示灰度值;R、G、B分別表示圖像的紅、綠、藍3分量。
目標分割就是把魚類目標從采集到的圖像中分割出來,實現(xiàn)前景目標的提取。
2.2.1 背景差分 背景差分法是將當(dāng)前包含魚類目標的圖像與背景圖片作差,得到的差值圖像即前景圖像。通過對前景圖像的二值化,就可以提取出魚類目標區(qū)域。差分公式如公式(2)所示:
Ik(x,y)=|Fk(x,y)-Bk(x,y)|。
(2)
式中:Ik(x,y)為作差獲得的差分圖像;Fk(x,y)、Bk(x,y)分別為k時刻視頻幀圖像和背景圖像。
2.2.2 閾值分割 對差分圖像進行最大類間方差法(OTSU)閾值分割得到二值圖像。OTSU是通過整幅圖像的灰度特性來選取合適的閾值。用假設(shè)的一個灰度值T將圖像的所有像素灰度值分成2組,當(dāng)這2組的類間方差最大時,所分出來的前景組和背景組的灰度差最大,此灰度值T被采用為閾值[9]。效果如圖4所示。
2.2.3 形態(tài)學(xué)處理 此時二值圖像往往是帶有噪聲的,比如剩余飼料、魚類糞便等,須要使用形態(tài)學(xué)處理去除噪聲點。采用開操作,即先對二值圖像腐蝕處理,然后用膨脹處理恢復(fù)。腐蝕操作可以去除小噪聲點,使目標邊界向內(nèi)部收縮。膨脹操作可以擴大噪聲點,使目標邊界向外擴張。形態(tài)學(xué)處理的效果如圖5所示。
采用Two-pass連通域標記的方法標記魚類目標。連通域標記是指在二值圖像中把所有的連通域都賦予1個編號并作記錄。Two-pass法指2遍掃描法,其中心思想為:第1遍掃描時先賦予每1個值為1的像素位置1個編號,在掃描過程中即使是同1個連通域的像素集合也可能會被賦予多個不同的編號,所以將屬于同1個連通域但又不同的編號合并成1個編號,建立相等關(guān)系;第2遍掃描就是根據(jù)相等關(guān)系將所標記的像素歸為1個連通域,賦予1個相同的編號,大多數(shù)情況下此編號取相等關(guān)系集合中的最小編號值。所有連通域的編號都存儲在一個編號序列中。
目標標記時按由下至上、由右至左的順序賦予目標編號。連通域標記效果如圖6所示。
直接從圖像序列中獲取目標的相關(guān)信息,根據(jù)圖像特征構(gòu)造目標的外觀模型,跟蹤器根據(jù)目標模型確定目標在圖像中的位置對目標進行跟蹤[10]。采用先提取目標邊緣計算目標邊緣點的形心,然后匹配目標特征實現(xiàn)對魚類目標的跟蹤。
2.4.1 邊緣檢測 Canny邊緣檢測算法包括高斯濾波器平滑圖像、計算梯度幅值和角度圖像、梯度幅值圖像非最大抑制、雙閾值處理和連接邊緣4個步驟。計算梯度的幅值和方向采用Sobel算子,雙閾值處理時高低閾值比率為3 ∶1。邊緣檢測效果如圖7-a所示。
2.4.2 形心提取 將形心作為魚類目標的跟蹤點。邊緣檢測后,在連通域最外圍矩形區(qū)域的基礎(chǔ)上,把每個矩形區(qū)域的長寬各擴展4像素,將矩形區(qū)域設(shè)置為感興趣區(qū)域(region of interest,簡稱ROI)。在每個ROI內(nèi)都只包含1個魚類目標的完整邊緣,根據(jù)這些ROI中的邊緣數(shù)據(jù)提取魚類目標的形心。
在按照目標編號設(shè)置ROI之后,提取形心的操作都將在每個ROI中獨立進行。假設(shè)邊緣圖像為g(x,y),原點不變矩的計算公式為:
(3)
式中:i,j為計數(shù)變量;g為灰度值。
0階矩m00是邊緣圖像ROI的灰度值和,由公式(4)來計算ROI中邊緣圖像的形心(xc,yc):
(4)
式中:m10表示x方向的一階矩;m01表示y方向的一階矩。
形心作為目標的跟蹤點,用小點標記。形心提取效果如圖7-b所示。
2.4.3 目標特征匹配 建立以橢圓模型近似魚類目標的運動模型如圖8所示。其中,(xc,yc)表示目標的形心;a為半長軸長;θ為橢圓的傾斜角度;vx、vy分別為2幀間速度V在x、y軸上的分量。
以10幀/s的速度進行采樣,同一魚類目標的形心在相鄰2幀之間距離不遠,以檢測到的目標為基礎(chǔ),對當(dāng)前幀檢測到的團塊與前1幀中的目標計算最近鄰,作初步匹配。
當(dāng)目標個體與周圍目標距離的最小值大于設(shè)定的閾值Td時,說明下1幀該目標不會與其他目標重疊、遮擋,用全局最近鄰法就能夠?qū)δ繕诉M行跟蹤。若第i幀目標檢測中得到mi個團塊,第i-1幀有mi-1個目標,形心距離公式如公式(5)所示。其中,α對第i幀mi個團塊進行遍歷,β對第i-1幀mi-1個目標進行遍歷。
(5)
對于目標重疊、遮擋的情況,為保持魯棒性配合目標的橢圓模型的角度、運動方向特征來處理。根據(jù)魚類個體運動的特點,在短時間內(nèi)的游動方向、游動姿態(tài)不會有很大的變化,所以可以選用橢圓運動模型的角度、速度方向的余弦值作特征值。
(1)橢圓的角度:
(6)
式中:α對第i幀mi個團塊進行遍歷,β對第i-1幀mi-1個目標進行遍歷。計算前后2幀中,第i幀中的某個團塊與第i-1 幀中目標的橢圓角度差異性,Pθ(α,β)值越小,表示此團塊和前1幀中目標的相似度越高。
(2)運動方向:
(7)
式中:S表示位移;Δt表示時間差;V由vx、vy等2個分量組成,α對第i幀mi個團塊進行遍歷,β對第i-1幀mi-1個目標進行遍歷。2個速度方向夾角范圍為[0,180],cos范圍為[-1,1],Pv(α,β)范圍為[0,2],值越小表示速度方向的夾角越小,相似度越高。dp(α,β)值表示目標距離的遠近,Pθ(α,β)、Pv(α,β)值分別表示形態(tài)、運動方向的相似度,由此來進行目標特征匹配。對于發(fā)生重疊、遮擋的團塊,一般可以假設(shè)目標在進行直線運動,可以將目標融合前的目標和目標分裂后的團塊進行橢圓角度、運動方向的特征確定其相似度,然后進行特征匹配,連接匹配目標的形心,實現(xiàn)目標的跟蹤。
使用Qt GUI類庫編寫的人機交互界面(圖9),按“開始”鍵攝像頭開始采集;按“停止”鍵停止采集;按“拍背景”鍵更新背景圖像;按“退出”鍵退出程序。顯示圖像區(qū)域的左上角為當(dāng)前圖像的幀數(shù)以及處理當(dāng)前幀所消耗的時間,此幀圖像為第156幀,該幀處理耗時89.15 ms。
軟件設(shè)計以幀為單位對輸入的圖像進行上述處理。軟件設(shè)計采集到的圖像分辨率為640像素×480像素,幀數(shù)設(shè)置為10幀/s,平均處理每幀圖像的時間為90 ms左右,能保持較好的實時性。
當(dāng)魚類目標處于非應(yīng)激狀態(tài)時,魚類目標相對靜止,誤差能夠保持在2個像素以內(nèi),對目標跟蹤點的檢測能達到較高的精度。
將作為目標跟蹤點的形心按時間順序連接起來后就形成魚類目標的運動軌跡。軌跡數(shù)據(jù)會以幀為單位儲存在本地的SQLite數(shù)據(jù)庫中,用戶需要后續(xù)的分析評估時可提取使用軌跡數(shù)據(jù)。
采用多個方向拍攝圖像的方式,能更加全面地分析魚類的行為。通過對軌跡數(shù)據(jù)的分析可建立模型,計算出魚類目標的運動速度和位移量。采集圖像的方向為正上方和側(cè)面,分別由圖1中的攝像頭1和攝像頭2拍攝。
2臺攝像機分開時間拍攝,每臺拍攝時間為25 s,每臺采集到的圖像共為250幀。從上方拍攝的第156幀,圖像處理耗時89.15 ms(圖10-a);從側(cè)面拍攝的第172幀,圖像處理耗時89.07 ms(圖10-b)。
根據(jù)存儲在本地SQLite數(shù)據(jù)庫中的軌跡數(shù)據(jù)重新繪制軌跡(圖11)。
采集到的圖像分辨率為640像素×480像素,幀數(shù)設(shè)為10幀/s,玻璃水槽的長為80 cm、寬為38 cm、高為48 cm。除去玻璃水槽的玻璃厚度2 cm,從正上方拍攝到的投影面積為48 cm×36 cm。從側(cè)面拍攝到的投影面積設(shè)置為48 cm×36 cm。
使用形心作為跟蹤點,設(shè)在第i-1幀和第i幀的時間分別為ti-1、ti時刻,形心的位置分別為(xi-1,yi-1)、(xi,yi),則魚的位移量(di)、總位移(D)、運動速度Vi可由公式(8)、(9)、(10)計算得到。
(8)
(9)
(10)
根據(jù)保存的軌跡數(shù)據(jù),每幀之間的時間差為100 ms,經(jīng)過換算得到魚類目標位移曲線(圖12)。
通過公式(9)、(10)分析可得最大速度和總位移(表1)。
采用2條鯽魚作為試驗對象,拍攝方向為正上方,在不同溶解氧條件下觀察魚類目標的行為反應(yīng)。
表1 軌跡參數(shù)分析
3.3.1 試驗過程 試驗前1周,將2條鯽魚放入玻璃水槽內(nèi),定期喂食和清潔水槽。在實驗前1 d停止喂食,添加新水使水位達到40 cm,pH值保持在6.9~7.5之間,室溫為26 ℃左右。通過管道向水體通入純氮壓縮氣體以獲得低溶解氧條件。為了提高氧剝離的效率,在水槽上方蓋上塑料布;通過布置在水體中的傳感器獲得實時的溶解氧數(shù)值。溶解氧值正常情況下在6.5~7.0 mg/L之間,進行試驗的溶解氧濃度分別為較高的7.0 mg/L和較低的1.0 mg/L。
試驗開始時溶解氧在(7.0±0.1) mg/L,輕輕敲擊水槽,拍攝25 s的視頻序列,幀數(shù)為250幀。然后向水體通入壓縮氮氣一段時間,溶解氧控制在(1.0±0.1) mg/L,經(jīng)過6 min后輕輕敲擊水槽,拍攝25 s的視頻序列,幀數(shù)為250幀。按照上述方法分析在不同溶解氧濃度下的魚類軌跡。
3.3.2 試驗結(jié)果分析 試驗獲得多組視頻,選擇其中1組分析魚類目標軌跡(圖13)。通過公式(9)、公式(10)分析可得,在不同溶解氧濃度下魚類目標總位移和最大速度(表2)。
表2 不同溶解氧濃度下的魚類軌跡參數(shù)分析
由圖13、表2可以看出,與7.0 mg/L溶解氧環(huán)境下相比,魚類目標在1.0 mg/L溶解氧環(huán)境下移動速度緩慢、移動距離短、活躍程度明顯降低。在嚴重缺氧時魚的活躍程度減小,為了生存魚在缺氧條件下的對策是降低新陳代謝來減少能量消耗,減少運動活躍性是減少能量消耗的常用方式[11]。試驗結(jié)果與此論點相符,驗證了本試驗分析方法的有效性。
(1)嵌入式系統(tǒng)結(jié)合圖像處理技術(shù)能夠?qū)崟r的魚類圖像進行處理。結(jié)合OpenCV和Qt,嵌入式系統(tǒng)通過友好的用戶界面展示復(fù)雜圖像的處理結(jié)果。
(2)設(shè)計由圖像采集、預(yù)處理、目標分割、目標標記、目標跟蹤以及輸出軌跡組成的魚類軌跡跟蹤方法,準確地計算速度、位移量,用于檢測魚類活躍程度。
(3)通過試驗對比分析在不同溶解氧濃度下的魚類軌跡,檢測其活躍程度。試驗驗證在嚴重缺氧時魚的活躍程度明顯減小,也驗證了魚類運動軌跡參數(shù)分析方法的有效性。
(4)跟蹤魚類軌跡是分析處理魚類行為的前置步驟。根據(jù)魚類行為標準分析魚類活躍程度等指標以確定其自身健康狀況和養(yǎng)殖環(huán)境的變化,為信息化和應(yīng)對突變情況的快速反應(yīng)提供保證。
參考文獻:
[1]劉小玲. 魚類應(yīng)激反應(yīng)的研究[J]. 水利漁業(yè),2007,27(3):1-3.
[2]王國強,王 雯. 應(yīng)激反應(yīng)對魚類影響的研究進展[J]. 安徽農(nóng)業(yè)科學(xué),2009,37(24):11579-11580.
[3]趙建華,楊德國,陳建武,等. 魚類應(yīng)激生物學(xué)研究與應(yīng)用[J]. 生命科學(xué),2011,23(4):394-401.
[4]徐建瑜,崔紹榮,苗香雯,等. 計算機視覺技術(shù)在水產(chǎn)養(yǎng)殖中的應(yīng)用與展望[J]. 農(nóng)業(yè)工程學(xué)報,2005,21(8):174-178.
[5]Ma H,Tsai T F,Liu C C. Real-time monitoring of water quality using temporal trajectory of live fish[J]. Expert Systems with Applications,2010,37(7):5158-5171.
[6]盧煥達,劉 鷹,范良忠. 基于計算機視覺的魚類行為自動監(jiān)測系統(tǒng)設(shè)計與實現(xiàn)[J]. 漁業(yè)現(xiàn)代化,2011,38(1):19-23.
[7]江丹丹,桂福坤. 基于視頻圖像的魚類行為軌跡追蹤[J]. 浙江海洋學(xué)院學(xué)報(自然科學(xué)版),2015,34(2):112-118.
[8]于 欣,侯曉嬌,盧煥達,等. 基于光流法與特征統(tǒng)計的魚群異常行為檢測[J]. 農(nóng)業(yè)工程學(xué)報,2014,30(2):162-168.
[9]孫少林,馬志強,湯 偉. 灰度圖像二值化算法研究[J]. 價值工程,2010,29(5):142-143.
[10]王書朋. 視頻目標跟蹤算法研究[D]. 西安:西安電子科技大學(xué),2009:16.
[11]Wu R S S. Hypoxia:from molecular responses to ecosystem responses[J]. Marine Pollution Bulletin,2002,45:35-45.