基于角点光流与SVM 的增氧机工作状态检测*
2015-03-19何金辉薛月菊李鸿生林焕凯
何金辉,薛月菊,毛 亮,李鸿生,林焕凯,张 晓
(1.华南农业大学信息学院,广东 广州510642;2.华南农业大学工程学院,广东 广州510642)
1 引言
增氧机对防止水产养殖对象的浮头及大量窒息死亡起着至关重要的作用[1]。然而,由于增氧机的工作条件恶劣,电机容易烧毁,这给水产养殖企业或养殖户带来巨大的损失。而传统的增氧机监控的方式主要依赖人工看守,不但费时费力,且难于及时发现故障。
智能视频监控技术[2]被逐步应用到水产养殖行业中,如文献[3]利用目标检测算法和跟踪算法,检测与跟踪入侵海上养殖场的船只,并对入侵的船只及时作出警告。在智能视频监控技术中,基于特征点的目标跟踪应用十分广泛,如采用梯度算子的灰度差分角点检测及金字塔光流跟踪[4]、基于直接外观模型的人脸特征点定位与Lucas-Kanade算法的跟踪[5]、基于角点特征融合的Mean-shift跟踪算法[6]等。由于Harris角点检测算法计算简单、提取的角点均匀合理及稳定等优点,以及金字塔Lucas-Kanade光流法可以适用于目标较大的运动问题[7,8]因此,为了利用现有渔场视频监控系统,在不额外增加任何硬件的条件下,通过加载相应的算法来实现增氧机工作状态的实时检测,本文利用基于Harris特征点的Lucas-Kanade光流跟踪方法对增氧机激起的水花速度进行检测,进而判断增氧机的工作状态。
在增氧机激起的水花角点速度的统计直方图中,部分情况下不是呈现双峰的特点,传统的利用最大类间方差法(OTSU)提取直方图的分割阈值,再根据阈值判断增氧机的状态并不适用。SVM(Support Vector Machine)是一种有坚实理论基础的、新颖的小样本学习方法,具有优异的分类性能,已被广泛地应用于统计分类中[9,10]。因此,本文提出一种基于角点光流算法和SVM 算法的增氧机工作状态智能检测方法。该方法通过应用金字塔Lucas-Kanade光流算法计算角点的光流量,再利用SVM 模型对角点的光流量进行分类,进而判断增氧机的工作状态。实验表明,该方法优于直方图阈值分割[11]方法,可适应于不同光照、不同视频获取角度和不同拍摄距离的增氧机停止/运行状态的自动检测,具有检测准确率高、鲁棒性强、实时性好等优点。
2 增氧机工作状态检测的算法流程
增氧机工作状态智能检测的主要思路是利用增氧机运行时激起的水花角点的平均位移量大小来判断其工作状态,分为学习阶段和工作阶段。
在学习阶段,用摄像机采集增氧机视频,通过人机交互人为在视频窗口选定增氧机的检测区域,将增氧机从停止到启动运行再由运行到停止重复N(2≤N≤5)次,以达到采集增氧机停止/运行状态的目的。具体步骤为:
(1)提取视频中的前后两帧图像,利用Harris角点检测算法检测前一帧图像在增氧机检测区域的水花角点;
(2)应用金字塔Lucas-Kanade光流法,根据后一帧的图像,计算前一帧图像角点在两帧之间的平均光流,即角点在两帧之间的平均位移量;
(3)以学习阶段所有视频帧的角点平均位移为样本特征,训练一个SVM 模型。
工作阶段则根据实时视频帧的角点平均位移,利用学习阶段训练好的SVM 模型对其进行分类,从而判断增氧机的工作状态。
3 学习阶段SVM 模型的建立
由于不同型号或同种型号不同的增氧机运动时激起的水花数量和水花运动的速度不同,摄像机的拍摄角度和拍摄距离也不尽相同。因此,在要对某一增氧机的工作状态进行判断前,需要训练该增氧机工作状态判断的SVM 模型。
在建立SVM 模型时,需先采集增氧机运行/停止状态的视频,步骤为:先在视频显示窗口通过人机交互选定增氧机的检测区域,再将增氧机从停止到运行再由运行到停止N(2≤N≤5)次,以达到采集增氧机运行/停止状态的目的。在视频帧中设定增氧机检测区域的优点在于:(1)可减少渔场其它环境对增氧机检测判断的影响;(2)可大大降低检测算法的运算量。
3.1 Harris角点检测方法
从采集的视频中提取前后两帧图像后,利用Harris算法[12]检测前一帧图像在检测区域的水花角点。该方法根据图像像素点的灰度梯度及曲率来判断该像素点是否是角点,其计算过程如下:
首先,求角点检测矩阵:
其中,w(x,y)为高斯窗函数,Ω为3×3邻域,Ix为水平方向上的梯度大小,Iy为垂直方向上的梯度大小。然后,计算图像每个像素点的兴趣值:
R=det(M)-k·tr2(M)
其中,k为经验值,一般取0.04,det(M)为矩阵M的行列式,tr(M)为矩阵M的迹。当兴趣值R大于设定阈值t时,则判断该点为角点。
3.2 金字塔Lucas-Kanade光流算法
光流是表示图像像素的速度矢量,等价于图像像素在连续两帧之间的位移。本文利用水花角点的光流量大小,得出角点在两帧之间的平均位移量,从而来判断增氧机的工作状态。光流的常用计算方法为Lucas-Kanade算法[13],其算法流程如下:
首先,根据光流约束方程:
Ixu+Iyv+It=0
应用被检测角点的n×n搜索窗邻域内像素亮度值,建立n×n个方程,
其中,Ix(pi)、Iy(pi)分别为相应像素点在水平方向和垂直方向的梯度大小,u、v表示需要计算的被检测角点的水平方向和垂直方向的速度大小,It(pi)为相应像素点在两视频帧之间的亮度变化值,n可以是3、5、7。
于是式(1)可写成:
要求解式(2)超静定方程,可应用最小二乘法,式(2)可写成:
以上的Lucas-Kanade光流算法只能在角点位移较小的情况下使用,当被检测的水花角点有较大的位移时,光流点可能会超出搜索窗的搜索范围,导致在搜索窗内无法找到该光流点,造成光流丢失。应用图像金字塔[16]可以解决这一问题,首先构建分辨率不同的图像金字塔层级,再计算分辨率较低的图像金字塔层级上的光流,最后将所求得的光流映射到最底层的原始图像层上,从而解决了角点位移较大的光流计算失败问题,其算法流程[4]如下:
首先,设建立N层的图像金字塔,gL为第L层的初始光流预测值,dL为L层的光流计算结果,递推过程为:
由递推公式(3),从金字塔最顶层开始往下计算,一直计算到最底层的原始图像角点光流值d,
d即为角点在两帧间的位移值。
3.3 SVM 分类器
根据增氧机运行状态和停止状态视频帧的角点平均光流值特点,可应用SVM 分类器对其进行分类,进而判断其工作状态。
支持向量机的基本思路[15]是运用Mercer核展开定理,根据泛涵的相关理论,只要核函数K(xi,xj)满足Mercer条件,它就对应某一变换空间中的内积,通过非线性映射把样本空间映射到一个高维或无穷维的特征空间(Hilber空间),在特征空间中运用较简单线性学习机的方法解决原样本空间中高度非线性分类和回归等问题。
SVM 分类模型的具体计算过程[16]为:
对于线性可分的训练样本集(x1,y1),…,(xl,yl),xi∈Rn,yi∈ {+ 1,-1} ,i=1,2,…,l,支持向量机分类算法可以归纳如下:
(1)构造并求解优化问题,根据:
(2)求得a*后,按下列计算方式计算原始问题的解(w*,b*);
其中,xp和xm分别为样本集里+1和-1类的任何一个支持向量。
(3)由(w*,b*)构造分类超平面(w*·xi)+b*=0,得到最优分类函数为:
当训练样本是非线性可分时,需从低维空间映射到高维空间,转化为线性可分问题求解。通常引入核函数将低维输入空间映射到高维特征空间,根据Mercer定理,定义核函数:K(xi,xj)=(φ(xi)·φ(xj))。因此,求解最优非线性分类函数,是以K(xi,xj)代 替 求 解 线 性 分 类 函 数 时 的(xi·xj)内积形式。
得到非线性问题的最优分类函数为:
4 工作阶段提高检测准确率的方法
在实时检测时,由于噪声的影响,个别视频帧图像会出现异常的角点平均位移量,极大地影响了增氧机状态检测的准确率,因此本文采用过滤异常视频帧方法来提高检测的准确率,本文采用M(M=2~5)帧过滤异常的视频帧法,具体规则:
(1)若增氧机当前的检测状态为停止状态时,仅当后续连续M次SVM 模型预测增氧机为启动状态时,才判断增氧机为启动状态;
(2)若增氧机当前的检测状态为启动状态时,仅当后续连续M次SVM 模型预测增氧机为停止状态时,才判断增氧机为停止状态。
这样会过滤一些角点平均位移量为异常值的视频帧,使检测的准确率提高。
5 实验与结果分析
本实验采集了两个不同时间段的共10 段视频,每段视频拍摄时间约为10min,视频的帧率为24fps/s,分辨率为1 280×720。其中,视频1~视频6的采集地点为广东惠州某渔场,采集时间为2013年9月30 日12:00~13:00,天气情况为阴天,风力3~4级。视频7~视频10的采集地点为广州番禺区某养殖场,采集时间为2013年6月14日9:00~10:00,天气情况为晴,风力2~3级。采集的视频包括对不同型号增氧机以不同角度、距离进行了拍摄,拍摄距离分为:远距离、中距离、近距离;拍摄角度分为:低角度、中角度、高角度。为了获取增氧机停止/运行的状态,实验中人为进行多次开关增氧机,即停止1min——启动运行1min,如此重复三或五个周期。另外,为了保证增氧机状态检测的准确性,在视频帧中所选的增氧机检测区域要大于120×50。本实验环境是Windows 7系统,处 理 器Intel(R)Core(TM)2 Quad CPU Q9500@2.83GHz+2.83GHz,内存4GB,编程环境为VS2005结合OpenCV 2.2.0。
5.1 学习阶段角点光流的统计分析
图1为以上采集的一个视频(低角度、近距离拍摄视频)实验光流量检测结果,状态图中的矩形框为增氧机的检测区域,框内的线条为相应角点的光流量。其中,图1a为增氧机处于停止状态检测到的角点位移,角点为增氧机附近的水纹。图1b为增氧机处于运行状态检测到的角点位移,角点主要为增氧机运动时激起的水花。图1c为角点平均位移的统计直方图。由图1可得,增氧机在停止状态时,角点的平均位移量较小,位移量集中在2附近,增氧机在运行状态时,角点的平均位移量较大,位移量集中在6、7附近。在此情况下,若采用传统的直方图阈值分割(如图1c所示,用OTSU 法提取直方图的分割阈值T=4)的方法对增氧机的工作状态进行检测,可得到较高的判断精度。
Figure 1 Statistics of the corner optical flow and the threshold extraction图1 角点光流统计与阈值提取
而对于部分中距离、远距离拍摄的视频,其学习阶段的角点平均位移的统计直方图并不呈现双峰的特性,如图2所示。对于这些单峰的情况,应用OTSU 方法进行直方图的阈值分割并不适应于该类问题的判断[17]。因此,本文利用SVM 分类器来判断增氧机工作状态。
Figure 2 Statistics of corner optical flow in some distance and long-range shooting positions图2 部分中距离、远距离视频拍摄位置的角点光流统计
5.2 SVM 模型与参数的选择
本文借鉴台湾大学林智仁教授开发的开源软件包LIBSVM 开发了增氧机工作状态检测程序。在训练SVM 模型时,需要确定SVM 模型的一些重要参数(如SVM 的类型、核函数类型、惩罚因子的大小等),SVM 分类性能的好坏取决于这些参数的选取[18]。目前SVM 的参数选取方法主要有:经验选择法、实验试凑法、梯度下降法、交叉验证法、Bayesian法等。由于SVM 参数选择的理论目前还未完善,本文采用实验试凑法来获取适用于增氧机状态检测的最优参数组合。
本节采用上一个样本视频(低角度、近距离拍摄视频)进行SVM 参数的初步确定,包括:常用的参数C_SVC、NU_SVC、ONE_CLASS,常用的核函数类型RBF、LINEAR、POLY、SIGMOID。表1列出了常用SVM 类型参数和核函数类型参数组合的SVM 模型和检测准确率,并用样本视频中学习阶段的视频来训练SVM 模型,用样本视频工作阶段的视频来统计训练后SVM 模型的检测准确率。其中,采用C_SVC+LINEAR、NU_SVC+LINEAR参数组合的SVM 模型进行检测时,准确率较高,因此在后续的基于SVM 的增氧机工作状态判断中,均采用这两种模型。
Table 1 Statistics of detection accuracy in each parameter combination表1 各参数组合的检测准确率统计
5.3 SVM 模型与直方图阈值分割的检测效果实验对比
以下用各个拍摄角度和拍摄距离的增氧机视频段,对采用C_SVC+LINEAR、NU_SVC+LINEAR参数组合的SVM 模型进行检测准确率统计。同时,与统计直方图阈值分割方法进行比较。
从表2的测试结果可以得出:
(1)C_SVC+LINEAR、NU_SVC+LINEAR组合对各个拍摄角度和拍摄距离的样本都具有很高的检测准确率,而且用这两种参数组合进行检测时,所得的检测准确率差异不大。
应用阈值分割方法得到的检测准确率相对偏低,当拍摄距离为“近”或“中”时,准确率较高,均高于90%;拍摄距离为远距离时,所得判断阈值较小,所得准确率也较小,如视频2和视频4准确率仅分别为79.93%和89.19%。这是因为拍摄位置为近距离时,增氧机启动时的水花角点平均位移较大,增氧机在启动与停止两种状态下的角点平均位移差距也较大,所以检测的准确率也较高。反之,拍摄距离为远距离时,两种状态下的角点平均位移差距较小,检测的准确率也较低。而且,实际应用中,当统计直方图为双峰形状时,该方法具有较好的分类特性和检测准确率,但在拍摄位置为远距离、中距离和部分近距离的情况下,统计直方图为单峰形状,应用OTSU 提取直方图分割阈值的方法就会使检测准确率大大降低。
Table 2 Detection accuracy comparison of the three methods表2 三种方法的检测准确率对比
由于以上这些因素,用阈值分割的方法得到的检测准确率会比C_SVC+LINEAR 或NU_SVC+LINEAR 组合的检测准确率偏低。因此,本文利用SVM 模型进行分类判断。
(2)在算法运行速度方面,SVM 模型的检测速度比直方图阈值分割的方法略低,但SVM 模型的检测速度在240 ms/帧~280 ms/帧之间,则每秒可提取增氧机视频中约四个视频帧进行角点光流的计算及对增氧机工作状态进行判断,当增氧机的状态发生变化时,该算法可以在不超过1s的时间内识别出变化,满足实时检测的要求。
为了进一步提高检测的准确率,本文利用提出的过滤异常视频帧方法,采用两帧(M=2)过滤后,C_SVC+LINEAR 的SVM 模型和NU_SVC+LINEAR的SVM 模型对10个样本视频的检测准确率均为100%。实际应用中,要根据具体的增氧机采集视频来选择采用几帧过滤,从而保证检测的准确率和实时性。
6 结束语
本文利用Harris算法和金字塔Lucas-Kanade光流法,提出了一种基于角点光流和SVM 的增氧机工作状态检测方法,该方法能在现有渔场视频监控系统上,通过加载相应的算法来实现增氧机工作状态的实时检测。实验表明,利用SVM 模型进行增氧机状态判断,可得到比直方图阈值分割方法更高的检测准确率,采用过滤异常视频帧法可以使检测准确率达到100%。同时,算法的运行速度符合实时检测的要求。此外,该方法可以与检测养殖塘水的溶氧量电路和关闭、开启增氧机电路结合在一起,进一步提高对增氧机的监控。同时,考虑改进角点检测算法和光流算法,降低算法的时间复杂度,进一步提高检测的实时性。
[1] Sun Jin-feng.The impact of aerator perturbations on temporal and spatial distribution pattern of suspended matter and dissolved oxygen of pond water[D].Wuhan:Huazhong Agricultural University,2012.(in Chinese)
[2] Kong Xiao-dong.Research on intelligent video surveillance technology[D].Shanghai:Shanghai Jiaotong University,2008.(in Chinese)
[3] Hu W C,Yang C Y,Huang D Y.Robust real-time ship detection and tracking for visual surveillance of cage aquaculture[J].Journal of Visual Communication and Image Representation,2011,12(6):543-556.
[4] Jiang Zhi-jun,Yi Hua-rong.An image pyramid-based feature detection and tracking algorithm[J].Geomatics and Information Science of Wuhan University,2007,32(8):680-683.(in Chinese)
[5] Song Gang,Ai Hai-zhou,Xu Guang-you.Texture constrained facial feature point tracking[J].Journal of Software,2004,15(11):1607-1615.(in Chinese)
[6] Zhou Zhi-ping,Tao Li.Mean-shift tracking algorithm based on corner feature fusion[J].Computer Engineering,2012,38(2):192-194.(in Chinese)
[7] Meng L,Wu C D,Zhang Y Z.Multi-resolution optical flow tracking algorithm based on multi-scale Harris corner points feature[C]∥Proc of Control and Decision Conference,2008:5287-5291.
[8] Zhu H,Lei Q W.Vision-based interface:Using face and eye blinking tracking with camera[C]∥Proc of Intelligent Information Technology Application,2008:306-310.
[9] Du Shu-xin,Wu Tie-jun.Support vector machines for pattern recognition[J].Journal of Zhejiang University(Engineering Science),2003,37(5):521-527.(in Chinese)
[10] Ding Shi-fei,Qi Bing-juan,Tan Hong-yan.An overview on theory and algorithm of support vector machines[J].Journal of University of Electronic Science and Technology of China,2011,40(1):2-10.(in Chinese)
[11] Xu Xiang-yang,Song En-min,Jin Liang-hai.Characteristic analysis of threshold based on Otsu criterion[J].Acta Electronica Sinica,2009,37(12):2716-2719.(in Chinese)
[12] Bellavia F,Tegolo D,Valenti C.Improving Harris corner selection strategy[J].IET Computer Vision,2011,5(2):87-96.
[13] Bradski G,Kaehler A.Learning OpenCV(Chinese)[M].Yu Shi-qi,Liu Rui-zhen,translation.Beijing:Tsinghua University Press,2009.(in Chinese)
[14] Maclean J,Tsotsos J.Fast pattern recognition using gradient-descent search in an image pyramid[C]∥Proc of the 15th International Conference on Pattern Recognition,2000:873-877.
[15] Fan Xin-wei.Support vector machine and its application[D].Hangzhou:Zhejiang University,2003.(in Chinese)
[16] Zhou Jiu-jiu.Research of parameter selection method for support vector machine in intrusion detection[D].Changsha:Central South University,2012.(in Chinese)
[17] Chen Bin,Tian Qi-chuan.Improved fast adaptive Otsu segmentation algorithm &its application[J].Application Research of Computers,2012,29(4):1572-1574.(in Chinese)
[18] Song Yong-dong.Research of parameter selection for support vector machine[D].Wuhan:Central China Normal University,2013.(in Chinese)
附中文参考文献:
[1] 孙金凤.增氧机扰动对池塘水体悬浮物、溶氧时空分布格局的影响[D].武汉:华中农业大学,2012.
[2] 孔晓东.智能视频监控技术研究[D].上海:上海交通大学,2008.
[4] 江志军,易华蓉.一种基于图像金字塔光流的特征跟踪方法[J].武汉大学学报,2007,32(8):680-683.
[5] 宋刚,艾海舟,徐光祐.纹理约束下的人脸特征点跟踪[J].软件学报,2004,15(11):1607-1615.
[6] 周治平,陶利.基于角点特征融合的Mean-shift跟踪算法[J].计算机工程,2012,38(2):192-194.
[9] 杜树新,吴铁军.模式识别中的支持向量机方法[J].浙江大学学报(自然科学版),2003,37(5):521-527.
[10] 丁世飞,齐丙娟,谭红艳.支持向量机理论与算法研究综述[J].电子科技大学学报,2011,40(1):2-10.
[11] 许向阳,宋恩民,金良海.Otsu准则的阈值性质分析[J].电子学报,2009,37(12):2716-2719.
[13] Bradski G,Kaehler A.学习OpenCV(中文版)[M].于仕琪,刘瑞祯,译.北京:清华大学出版社,2009.
[15] 范昕炜.支持向量机算法的研究及其应用[D].杭州:浙江大学,2003.
[16] 周玖玖.入侵检测中支持向量机参数选择方法研究[D].长沙:中南大学,2012.
[17] 陈滨,田启川.改进的快速Otsu自适应分割算法及其应用[J].计算机应用研究,2012,29(4):1572-1574.
[18] 宋永东.支持向量机参数选择的研究[D].武汉:华中师范大学,2013.