鄒立 汪雅 陳志輝 盧月紅 許威 韓楓



關鍵詞:智能養殖網箱;圖像處理;魚類;計數;測量
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 結束語
本文針對傳統水產養殖需要耗費大量人工進行魚類喂食、捕撈、計數和測量,設計了一種智能養殖網箱,并基于圖像處理技術提出了魚類計數與測量方法,實驗表明,該方法可以自動準確地對魚類進行計數和測量,研究成果對于提高水產養殖的智能化具有一定的實踐意義。