1.一種基于魚類活性分析的水質(zhì)毒性檢測方法,包括以下步驟:
1)以鯽魚作為生物監(jiān)測對(duì)象對(duì)其進(jìn)行實(shí)時(shí)監(jiān)測,綜合鯽魚的運(yùn)動(dòng)速度和運(yùn)動(dòng)時(shí)輪廓大小的變化,以此判斷水樣中的魚是否死亡,從而實(shí)現(xiàn)對(duì)水質(zhì)是否存在毒性進(jìn)行實(shí)時(shí)反饋;
2)采集和提取鯽魚的運(yùn)動(dòng)特征:通過紅R、綠G、藍(lán)B到色調(diào)H、飽和度S、亮度V顏色空間域的轉(zhuǎn)換來提取魚目標(biāo)輪廓,實(shí)時(shí)監(jiān)測跟蹤水樣中鯽魚,得到鯽魚的跟蹤視頻序列,該跟蹤模型描述如下:
通過對(duì)監(jiān)控視頻圖像的分割、識(shí)別、跟蹤標(biāo)定鯽魚目標(biāo)的實(shí)時(shí)運(yùn)動(dòng)位置,并以固定時(shí)間間隔作為統(tǒng)計(jì)周期,獲取該周期內(nèi)魚群中每個(gè)個(gè)體的輪廓和運(yùn)動(dòng)速度等特征參數(shù);
3)鯽魚的特征參數(shù)分析,包括以下過程:定義死魚特征數(shù)據(jù)集和活魚特征數(shù)據(jù)集,通過學(xué)習(xí),形成一個(gè)成熟的分類器結(jié)構(gòu)模型;具體過程如下:
3.1)收集水箱中每一條鯽魚的運(yùn)動(dòng)速度v、輪廓面積outline_Area與所有鯽魚面積均值average_Area之差這兩個(gè)特征數(shù)據(jù),將這兩個(gè)參數(shù)作為檢測水箱中魚是否存活的指標(biāo);;
其中,魚的運(yùn)動(dòng)速度是研究魚類行為的一個(gè)重要的參數(shù),它反應(yīng)單位時(shí)間內(nèi)的位移、加速度等運(yùn)動(dòng)特征;
3.1.1)速度的特征數(shù)據(jù)
考慮到前一幀和后一幀每條魚的運(yùn)動(dòng)軌跡變化小,因此采用后一幀與前一幀魚的重心最短距離計(jì)算這條魚在一幀時(shí)間內(nèi)的移動(dòng)距離Si;然后,取一秒鐘的幀數(shù),把這些距離相加再除以時(shí)間就是魚每秒的運(yùn)動(dòng)速度;但是,由于水箱中魚在游動(dòng)時(shí)常常存在疊加,導(dǎo)致定位每一條魚的身份存在困難;如果不能精準(zhǔn)的對(duì)每一條魚進(jìn)行跟蹤,那么計(jì)算每一魚的身份就會(huì)產(chǎn)生誤差;由于幀間魚游動(dòng)距離很小,因此可根據(jù)前后幀距離關(guān)系求得每一條魚的游動(dòng)距離;也就是取目標(biāo)魚后一幀到當(dāng)前幀移動(dòng)距離最小值,作為當(dāng)前幀該目標(biāo)魚的游動(dòng)距離;
假設(shè)水箱中有n條魚,第j幀第i條鯽魚輪廓的重心坐標(biāo)為第j+1幀第k條鯽魚輪廓的重心坐標(biāo)為可以得到第j幀第i條鯽魚到第j+1幀第k條鯽魚的距離為:
根據(jù)以上方法,可求出第j幀第i條鯽魚到第j+1幀魚缸中各條魚的距離為S1,…Sk…Sn;由此,得到當(dāng)前魚i在幀間游動(dòng)距離為:
Si=min{S1,S2,…Sk…Sn} (2)
此時(shí)得到的最短距離Si即為第j幀第i條鯽魚到下一幀游動(dòng)的距離;在一秒內(nèi)取15幀,則目標(biāo)在1秒內(nèi)的運(yùn)動(dòng)速度可以通過以下公式計(jì)算得到:
水箱中魚的運(yùn)動(dòng)速度的大小,能反映魚類游動(dòng)的激烈程度,是衡量魚類目標(biāo)在被檢測水質(zhì)中活性的一個(gè)重要指標(biāo)參數(shù);然而,當(dāng)魚的游動(dòng)速度為0,并不意味著此時(shí)該魚一定處于死亡狀態(tài),而是有可能魚處于靜息狀態(tài);此外,由于水流速度或者其他魚的撞擊,死亡的魚其速度也并不總是為0;
3.1.2)輪廓大小的特征數(shù)據(jù)
背景差分后利用opencv里的contourArea函數(shù)可求得目標(biāo)輪廓面積,其中opencv是一個(gè)基于開源發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺庫,該函數(shù)是統(tǒng)計(jì)目標(biāo)輪廓內(nèi)的每個(gè)像素點(diǎn)的累加和,即為面積;與上述求速度的方法類似,求得每一時(shí)刻魚的位置,由此計(jì)算水箱中魚在每一時(shí)刻的面積{A1,A2,…An};當(dāng)魚處于死亡狀態(tài)時(shí),其身體自由的飄浮在水中,魚體的面積大于其處于非死亡狀態(tài)時(shí)的面積;其中,水缸中魚體平均面積可由下式計(jì)算:
3.2)基于樸素貝葉斯算法對(duì)數(shù)據(jù)進(jìn)行訓(xùn)練產(chǎn)生成熟的分類器結(jié)構(gòu)模型,算法過程如下:
a)設(shè)x={a1,a2,……am}為一個(gè)待分類項(xiàng),而每個(gè)a為x的特征項(xiàng);目標(biāo)魚的速度a1和輪廓面積差a2即為特征項(xiàng),因此可得x={a1,a2},x表示目標(biāo)魚;
b)輸出類別集合C={c1,c2,……cn},每個(gè)c是輸出集合C的一種結(jié)果;本發(fā)明是檢測判斷魚是否死亡,因此類別集合C={c1=0,c2=1},并用C=0表示魚處于活著狀態(tài);
c)當(dāng)利用游動(dòng)速度和面積差這兩個(gè)特征來判斷魚類是否死亡時(shí),可將這一過程表示成聯(lián)合條件概率P(C|a1,a2);該式表示在a1,a2同時(shí)發(fā)生情況下目標(biāo)魚處于死亡狀態(tài)的概率;由貝葉斯公式,可得,
上式中的P(a1,a2)不依賴于類別C,也就是它的值對(duì)分類結(jié)果不產(chǎn)生影響,因此計(jì)算過程該項(xiàng)將被忽略;由全概率公式和條件概率的鏈?zhǔn)椒▌t,上式的分子項(xiàng)可展開為:
P(C)P(a1,a2|C)=P(a1,a2,C)
=P(a1|a2,C)P(a2|C)P(C)
假設(shè)給定類別C,特征之間相互條件獨(dú)立;也就是,P(a1|a2,C)=P(a1|C),上式可化為:
P(C)P(a1,a2|C)=P(a1|C)P(a2|C)P(C)
d)收集所有魚處于存活/死亡狀態(tài)下的游動(dòng)速度和輪廓面積數(shù)據(jù),構(gòu)造訓(xùn)練樣本集,用于計(jì)算概率P(a1|C)、P(a2|C)值;本發(fā)明假設(shè)P(a1|C)、P(a2|C)均符合高斯分布,這樣可以從訓(xùn)練集中求得魚處于死亡狀態(tài)時(shí)速度均值μ1,方差σ1;魚處于死亡狀態(tài)時(shí)輪廓面積均值μ2,方差σ2;
3.3)使用新的特征數(shù)據(jù)來檢測判斷該檢測模型是否成熟;也就是,給定目標(biāo)魚的兩個(gè)特征判斷該目標(biāo)魚處于死亡或者存活狀態(tài);
假設(shè)魚是否死亡的先驗(yàn)概率相等,即P(C=0)=P(C=1)=0.5;此外,
同理,可以分別求得P(a2|C=0)、P(a1|C=1)和P(a2|C=1)的值;當(dāng)(5)中比值大于1,則判斷目標(biāo)魚處于存活狀態(tài),否則處于死亡狀態(tài);
3.4)通過成熟的檢測模型對(duì)魚缸中魚的存活與否作出判斷;當(dāng)魚缸中目標(biāo)魚死亡條數(shù)超過總數(shù)的一半,則給出水質(zhì)存在毒性的預(yù)警信號(hào)。