楊昱皞,王書獻(xiàn),孫永文,張勝茂,戴 陽,隋江華
(1.大連海洋大學(xué) 航海與船舶工程學(xué)院,遼寧 大連 116023;2.中國水產(chǎn)科學(xué)研究院東海水產(chǎn)研究所,農(nóng)業(yè)農(nóng)村部東海漁業(yè)資源開發(fā)利用重點(diǎn)實(shí)驗(yàn)室,上海 200090;3.浙江省海洋漁業(yè)資源可持續(xù)利用技術(shù)研究重點(diǎn)實(shí)驗(yàn)室,浙江省海洋水產(chǎn)研究所,浙江 舟山 316021)
魚苗計(jì)數(shù)是魚苗銷售、魚苗養(yǎng)殖的重要環(huán)節(jié)。目前,大部分魚苗計(jì)數(shù)的工作依然依賴人工完成?,F(xiàn)有的魚苗計(jì)數(shù)設(shè)備功能單一,對魚苗進(jìn)行計(jì)數(shù)時(shí)需要人工將魚苗裝入容器中,計(jì)數(shù)完成后需要移除,存在費(fèi)時(shí)費(fèi)力、可能損傷魚苗的問題。因此,無論是魚苗的生產(chǎn)者還是銷售者都迫切需要一種簡單、快速的魚苗計(jì)數(shù)設(shè)備[1]。
計(jì)算機(jī)視覺技術(shù)是一種快速、經(jīng)濟(jì)、有效的測量和評(píng)價(jià)手段,在農(nóng)業(yè)生產(chǎn)中有著廣泛應(yīng)用和廣闊的發(fā)展前景[2]。目前已經(jīng)有許多研究人員將機(jī)器視覺應(yīng)用于魚苗計(jì)數(shù)來實(shí)現(xiàn)魚苗計(jì)數(shù)的自動(dòng)化。朱從容[3]采用一次多項(xiàng)式擬合方法確定圖像中魚苗所占像素點(diǎn)數(shù)與魚苗數(shù)量關(guān)系來得到魚苗的數(shù)量,黃玲等[4]提出統(tǒng)計(jì)連通域和魚苗像素點(diǎn)相結(jié)合的技術(shù)算法,范嵩等[1]使用的基于端點(diǎn)的細(xì)化算法統(tǒng)計(jì)魚苗數(shù)量,以及曲線演化法[5],但是以上大都針對靜態(tài)魚苗單幀計(jì)數(shù),且對魚苗和拍攝環(huán)境有一定要求,不能夠滿足魚苗養(yǎng)殖中魚苗大小、形狀不同和大批量連續(xù)計(jì)數(shù)的要求。王文靜等[6]將計(jì)算機(jī)視覺和硬件結(jié)合,通過統(tǒng)計(jì)單個(gè)目標(biāo)面積和和平均面積的比值來確定數(shù)量,實(shí)現(xiàn)了實(shí)時(shí)魚苗計(jì)數(shù),但是該方法對于魚苗的大小要求較為嚴(yán)格,不能夠滿足多樣化魚苗計(jì)數(shù)。
本文提出一種基于視頻分析計(jì)數(shù)的魚苗計(jì)數(shù)裝置,通過攝像設(shè)備拍攝魚苗實(shí)時(shí)圖像,對圖像灰度、降低分辨率、腐蝕和膨脹、閾值二值化進(jìn)行一系列處理后,提取每一幀圖像,將該幀圖像中的像素點(diǎn)按照規(guī)定進(jìn)行統(tǒng)計(jì),再與上一幀對比得出魚苗數(shù)量的變化,對比完成后再將該幀圖像作為下一幀圖像的對比組,按照此步驟重復(fù)至最后一幀圖像,最終得出測量的魚苗總數(shù),并且通過硬件能夠?qū)崿F(xiàn)裝置的持續(xù)間歇性工作、減少魚苗與機(jī)械碰撞損傷和重疊情況[7]。本裝置能夠適應(yīng)多種魚苗和多樣化環(huán)境下的計(jì)數(shù),在搭建了魚苗計(jì)數(shù)試驗(yàn)?zāi)P偷幕A(chǔ)上,對本裝置的可行性以及準(zhǔn)確性進(jìn)行了驗(yàn)證。
基于視頻分析技術(shù)的魚苗計(jì)數(shù)裝置基本機(jī)構(gòu)如圖1所示,包括吸魚裝置、計(jì)數(shù)裝置、控制裝置。
圖1 魚苗計(jì)數(shù)裝置基本結(jié)構(gòu)Fig.1 Thebasic structure of fish fry counting device
工作時(shí),將該計(jì)數(shù)裝置與魚苗養(yǎng)殖池連通,啟動(dòng)氣泵抽出計(jì)數(shù)箱中的空氣,使計(jì)數(shù)箱內(nèi)呈負(fù)壓狀態(tài)。大氣壓會(huì)將魚苗養(yǎng)殖池中的水和魚苗壓入計(jì)數(shù)箱中,通過階梯狀通道緩和水流并且使魚苗盡量不重疊地流過攝像設(shè)備拍攝區(qū)域,最終在計(jì)數(shù)箱出水口出的階梯狀通道處堆積。攝像設(shè)備將采集到的視頻數(shù)據(jù)上傳至開發(fā)板中,開發(fā)板對采集到的視頻數(shù)據(jù)進(jìn)行逐幀對比分析處理,利用機(jī)器視覺[8]得到本次測量的魚苗總數(shù)。該魚苗計(jì)數(shù)裝置中的浮球、連桿、活塞對計(jì)數(shù)箱中的氣壓進(jìn)行控制,當(dāng)水進(jìn)入計(jì)數(shù)箱中開始,浮球隨著水面的高度升高而上?。桓∏蛲苿?dòng)連桿將活塞向上方推動(dòng);當(dāng)水面到達(dá)一定高度時(shí),活塞會(huì)被浮球、連桿完全推出計(jì)數(shù)箱,此時(shí)箱內(nèi)負(fù)壓狀態(tài)消失,魚苗停止進(jìn)入計(jì)數(shù)箱;密封門末端設(shè)置為一段電磁鐵,活塞為導(dǎo)電材料,當(dāng)活塞沒被推出計(jì)數(shù)箱時(shí),密封門末端電磁鐵通電與計(jì)數(shù)箱階梯狀通道的末端鐵塊吸引,密封門關(guān)閉;當(dāng)活塞被完全推出計(jì)數(shù)箱時(shí),密封門末端電磁鐵斷電失去磁性,密封門打開,計(jì)數(shù)箱內(nèi)的水和魚苗流出;當(dāng)計(jì)數(shù)箱內(nèi)的水流出,浮球會(huì)隨著水面高度下降而下沉,活塞被浮球、連桿拉至初始位置,使計(jì)數(shù)箱再次呈密封狀態(tài);出水口處的階梯狀通道斜度大,能讓水和魚苗盡快流出,并且能暫時(shí)儲(chǔ)存未及時(shí)流出的水和魚苗,使其不會(huì)出現(xiàn)在攝像設(shè)備拍攝區(qū)域;當(dāng)氣泵繼續(xù)工作,魚苗會(huì)持續(xù)間歇性進(jìn)入計(jì)數(shù)箱中進(jìn)行計(jì)數(shù)[9]。
魚苗計(jì)數(shù)裝置控制系統(tǒng)如圖2所示。錐形筒裝在計(jì)數(shù)箱出氣口上,活塞放置在錐形筒內(nèi),保證活塞能夠回到初始位置,活塞采用導(dǎo)電材料制作。當(dāng)活塞未被推出計(jì)數(shù)箱時(shí),密封門末端電磁鐵通電,電磁鐵擁有磁性后吸在計(jì)數(shù)箱內(nèi)階梯狀通道的鐵塊上;當(dāng)活塞被推出計(jì)數(shù)箱時(shí),密封門末端電磁鐵斷電,失去磁性,水和魚苗在重力作用下流出計(jì)數(shù)箱,同時(shí)浮球和活塞下降至初始位置,形成一個(gè)循環(huán)。
圖2 魚苗計(jì)數(shù)裝置控制系統(tǒng)示意Fig.2 The schematic diagram of control system of fry counting device
活塞采用鑄鐵制作,制作成空心圓柱狀以減小質(zhì)量,并套上密封圈;連桿采用塑料制作;錐形筒采用黃銅制作,并且在表面拋光、鍍膜來減小活塞移動(dòng)的阻力。經(jīng)過查表1可得,銅與鑄鐵表面滑動(dòng)摩擦系數(shù)約為0.3;擬定活塞半徑為1.5 cm;擬定活塞、連桿、浮球的質(zhì)量為40 g、20 g、10 g,擬定活塞和錐形筒表面壓力為3 N。根據(jù)浮力的計(jì)算公式以及二力平衡的條件,可推導(dǎo)出浮球的最小半徑為:
表1 各種材料摩擦系數(shù)Tab.1 Thefriction coefficient of variousmaterials
式中:F浮——浮球的浮力,N;m活塞——活塞的質(zhì)量,kg;m連桿——連桿的質(zhì)量,kg;m浮球——浮球的質(zhì)量,kg;g——重力系數(shù),取g=9.8 N/kg;FN——活塞和錐形筒接觸表面壓力,N;ρ液——浮球所處液體環(huán)境的密度,kg/m3;V——浮球的體積,m3。
求得r≈0.033 7 m,因此浮球半徑至少為3.37 cm。
實(shí)現(xiàn)魚苗計(jì)數(shù)的方法主要由3部分組成:收集圖像并判斷是否為最后一幀圖像;對圖像進(jìn)行處理,便于識(shí)別目標(biāo);識(shí)別到目標(biāo)后與上一幀對比計(jì)數(shù),完成后再回到第一步循環(huán)。具體流程,如圖3所示。
圖3 視頻處理方法流程Fig.3 Thevideo processing method flow
直接處理彩色圖像會(huì)大大地降低系統(tǒng)的執(zhí)行速度,所以通常將輸入的彩色圖像轉(zhuǎn)換為灰度圖像[10],由攝像設(shè)備對計(jì)數(shù)箱內(nèi)流過的魚苗采集視頻數(shù)據(jù),獲取每幀的圖像,將得到的圖像去除顏色層,將其轉(zhuǎn)化為灰度圖像[11-12]。彩色圖像的亮度值是由紅、綠、藍(lán)決定,要將原圖像量化為256個(gè)灰度級(jí)的黑白圖像,首先讀取圖像中每個(gè)像素的紅、綠、藍(lán)值,再通過公式Y(jié)=0.299×R+0.587×G+0.114×B計(jì)算出當(dāng)前像素點(diǎn)的亮度值[13],然后將原圖像轉(zhuǎn)化為如圖4所示的256位灰度圖像。
圖4 灰度圖像Fig.4 Thegray image
對輸出的灰度圖像進(jìn)行腐蝕處理,去除目標(biāo)邊緣的多余雜質(zhì);遍歷原圖像的每個(gè)像素,然后用結(jié)構(gòu)元素的中心點(diǎn)對準(zhǔn)當(dāng)前正在遍歷的像素,然后取當(dāng)前結(jié)構(gòu)元素所覆蓋下的原圖對應(yīng)區(qū)域內(nèi)的所有像素的最小值,用最小值替換當(dāng)前像素值,然后再進(jìn)行膨脹處理,將目標(biāo)內(nèi)部的殘缺和邊緣補(bǔ)充完整[14];使用相同次數(shù)的腐蝕和膨脹能夠使目標(biāo)圖像變得平滑。對圖像腐蝕和膨脹處理后,再進(jìn)行閾值二值化處理,使整個(gè)圖像只有黑、白像素點(diǎn)[15];設(shè)定1個(gè)閾值進(jìn)行閾值分割,閾值分割分為2種方式:全局閾值是選用1個(gè)固定的閾值適用于整個(gè)圖像;局部閾值是在1個(gè)圖像上須知不是1個(gè)固定的常數(shù)。由于在魚苗圖像中背景灰度恒定,魚苗和背景的對比度幾乎不變,因此采用全局閾值方法[17]。默認(rèn)的閾值為110,該閾值可以在源碼中配置修改,使灰度值≥110像素點(diǎn),將該像素點(diǎn)的灰度值設(shè)置為255;使灰度值<110像素點(diǎn),將該像素點(diǎn)的灰度值設(shè)置為0,保證經(jīng)此步驟后圖像中只存在像素值為0的黑點(diǎn)和像素值為255的白點(diǎn)[1]。輸出的圖像,如圖5所示。
圖5 閾值二值化處理后的圖像Fig.5 Theimage after threshold binarization
按照配置的列號(hào),提取出5列像素?cái)?shù)據(jù),預(yù)處理5列數(shù)據(jù),確定統(tǒng)計(jì)像素,排除無效像素。若某1列中連續(xù)的黑像素?cái)?shù)為1,則跳過該像素,不做特別處理;若某1列中連續(xù)的黑像素?cái)?shù)為2,則將第1個(gè)像素作為統(tǒng)計(jì)像素,也即將第2個(gè)黑像素設(shè)為無效像素;若某列中連續(xù)的黑像素?cái)?shù)大于2,則保留中間位置的黑像素作為統(tǒng)計(jì)像素,其他黑像素設(shè)為無效像素;若檢測到無效像素,則直接跳過;在上述過程中,將像素設(shè)為無效的具體方式是將像素值設(shè)為128,如圖6。將該五列像素?cái)?shù)據(jù)與上一幀五列像素?cái)?shù)據(jù)逐行對比,若像素由白轉(zhuǎn)為黑,則魚苗統(tǒng)計(jì)值自增1。直至對比到最后一行像素,獲取下一幀像素,重復(fù)此步驟,直至提取到最后一幀像素?cái)?shù)據(jù)[16]。
圖6 魚苗統(tǒng)計(jì)像素示意圖Fig.6 Thestatistical pixel diagram of fry
打開開關(guān),魚苗和水被壓入計(jì)數(shù)箱中,計(jì)數(shù)箱中階梯狀通道寬且能緩和水流,使魚苗平緩的流過攝像設(shè)備拍攝區(qū)域,圖像采集的幀速應(yīng)大于魚苗流過的速度。魚苗隨水流動(dòng)時(shí),個(gè)別魚苗出現(xiàn)沿階梯狀通道反向游動(dòng),由于魚道較長,其游動(dòng)最多經(jīng)過縱向的兩排項(xiàng)目,出現(xiàn)魚苗數(shù)多計(jì)算一次。
首先獲取到第一幀數(shù)據(jù),為加快處理速度,且不影響計(jì)數(shù)效果,降低該幀圖像的分辨率。降低倍數(shù)確定原則為:降低后每個(gè)魚苗在垂直方向上約占1~5個(gè)像素。為保證數(shù)據(jù)質(zhì)量,對原視頻橫縱向進(jìn)行等比縮小。腐蝕圖像去除圖像中存在的雜質(zhì),膨脹圖像補(bǔ)償圖像中目標(biāo)邊緣和內(nèi)部的空白。以110的閾值二值化該幀圖像,將所有<110的像素設(shè)為0,所有≥110的像素設(shè)為255。提取出列號(hào)分別為31、63、95、127、159的5列像素?cái)?shù)據(jù),對該5列數(shù)進(jìn)行預(yù)處理。
將上述首幀數(shù)據(jù)存入列表作為第1組對比數(shù)據(jù)。獲取下一幀圖像,按照灰度處理、降低分辨率、腐蝕和膨脹、閾值二值化、確定統(tǒng)計(jì)像素的步驟得到新的列表,列表中包含5組子列表元素,每個(gè)子列表元素表示一列數(shù)據(jù),包含有108個(gè)元素,每個(gè)元素表示1個(gè)像素點(diǎn)。將該列表與第1組對比數(shù)據(jù)進(jìn)行對比:若對比數(shù)據(jù)為255,且當(dāng)前數(shù)據(jù)為0,則當(dāng)前元素所在列的魚苗計(jì)數(shù)值自增1,否則不操作。2個(gè)列表對比完成后,將當(dāng)前列表數(shù)據(jù)設(shè)為對比數(shù)據(jù),等待下一幀數(shù)據(jù)的對比。直至對比到最后一幀。
數(shù)據(jù)處理結(jié)束后,得到本次試驗(yàn)的結(jié)果如表3所示。
表3 魚苗數(shù)統(tǒng)計(jì)Tab.3 The statistics of fry
上述過程搭建了簡易模型統(tǒng)計(jì)了魚苗數(shù)據(jù),測試出魚苗規(guī)格數(shù)量。利用視頻數(shù)據(jù)統(tǒng)計(jì)魚苗數(shù)量,且在較差環(huán)境下也能有較好的表現(xiàn)。本文提出的基于視頻分析技術(shù)的魚苗計(jì)數(shù)裝置,通過軟硬件結(jié)合的方式實(shí)現(xiàn)持續(xù)間歇性計(jì)數(shù),能夠?qū)Χ喾N目標(biāo)問題進(jìn)行計(jì)數(shù),適應(yīng)性強(qiáng),能夠減少人工操作,并且減少了魚苗與機(jī)械的碰撞損傷,間歇性工作減少主機(jī)的工作負(fù)荷,可以對大批量的魚苗進(jìn)行計(jì)數(shù)。
多功昊等[17-19]使用攝像設(shè)備拍攝魚缸內(nèi)的魚苗,用連通域總面積除以提前設(shè)置好的連通域最小面積就可以求出連通域重心坐標(biāo)并在重心坐標(biāo)描繪數(shù)字,從而得出連通域個(gè)數(shù)對魚苗計(jì)數(shù)。王碩等[5]采用水平集建模再連續(xù)常值演化,通過最大輪廓曲線數(shù)最大值確定魚苗的數(shù)量。王文靜等[6]提出了一種采用幀畫面計(jì)數(shù),目標(biāo)數(shù)量通過單個(gè)目標(biāo)面積和平均面積的比值來確定,先求當(dāng)前幀的幼苗數(shù)量,再求下一幀目標(biāo)數(shù)量,通過累加獲取總數(shù)量。本文提出的計(jì)數(shù)方法是通過攝像設(shè)備采集魚苗圖像,將每一幀圖像經(jīng)過灰度處理、降低分辨率、腐蝕和膨脹、閾值二值化,按照規(guī)定統(tǒng)計(jì)像素,對比像素點(diǎn)的變化得出每一幀圖像中的魚苗數(shù)變化,最終得出魚苗總數(shù)。與其他計(jì)數(shù)方法相比,本計(jì)數(shù)方法能夠適應(yīng)各種魚苗大小形狀的動(dòng)態(tài)計(jì)數(shù)。
本文提出的基于視頻分析技術(shù)的魚苗計(jì)數(shù)裝置可行性已經(jīng)通過驗(yàn)證,但是當(dāng)魚苗密度較大時(shí),計(jì)數(shù)精度下降,可通過以下幾個(gè)方面完善:通過改善攝像設(shè)備和光照條件提高采集圖像的精度,采用多角度拍攝;通過改變通道的結(jié)構(gòu)和尺寸改善魚苗重疊情況和降低魚苗流速,使魚苗能夠清晰完整的呈現(xiàn)在攝像設(shè)備中;完善程序中處理圖像的部分,更準(zhǔn)確地識(shí)別和對比出魚苗的數(shù)量。當(dāng)需要對多批次、高密度的魚苗計(jì)數(shù)時(shí),嘗試在軟硬件上的改善以達(dá)到足夠的計(jì)數(shù)精度,將連通域法、曲線演化法等方法結(jié)合解決魚苗重疊的問題,適應(yīng)不同魚苗計(jì)數(shù)時(shí)的情況。