舰船科学技术  2023, Vol. 45 Issue (5): 164-169    DOI: 10.3404/j.issn.1672-7649.2023.05.032   PDF    
改进ViBe算法及其在运动船舶目标检测中的应用
杨家轩1, 秦硕2, 宋庆垚1,2     
1. 大连海事大学 航海学院,辽宁 大连 116026;
2. 辽宁省航海安全保障重点实验室,辽宁 大连 116026
摘要: 为了抑制ViBe算法在海面动态背景视频下“鬼影”区域对船舶运动目标检测的影响,提高监控视频中船舶运动目标识别的准确率,提出一种改进的ViBe算法。首先,背景模型用连续帧初始化,以减少“鬼影”的影响;然后,使用自适应阈值和闪烁级别来减少海面杂波,同时采用像素点对比消除“鬼影”,提取运动目标前景,获取完整的运动目标区域。最后,对输入视频进行高斯金字塔多尺度分解,并采用改进的ViBe算法检测低分辨率视频中的移动船舶,完整提取了海上移动船舶。实验结果表明,所改进的算法消除了“鬼影”区域,减少了海面杂波的干扰,检测率为92.5%,单帧视频图像检测时间控制在97 ms以内,可准确、快速地检测和提取海面船舶运动目标。
关键词: ViBe算法     运动船舶     前景提取     高斯金字塔    
An improved ViBe algorithm and its application to the detection of moving ship target
YANG Jia-xuan1, QIN Shuo2, SONG Qing-yao1,2     
1. Navigation College, Dalian Maritime University, Dalian 116026, China;
2. Key Laboratory of Navigation Safety Guarantee of Liaoning Province, Dalian 116026, China
Abstract: In order to suppress the influence of ghost area to the ViBe algorithm on the detection of ship moving objects under the dynamic background video of the sea surface and improve the accuracy of the ship moving object recognition in surveillance video, an improved ViBe algorithm was proposed. First, the background model is initialized with continuous frames to reduce the influence of ghost. Then, the sea clutter is reduced by using adaptive thresholds and flicker levels. Third, the ghost elimination strategy is used to eliminate ghost. Finally, Gaussian pyramid multi-scale decomposition is performed on the input video, and the improved ViBe algorithm is used to detect moving ships in low-resolution video, which further reduces the interference of sea clutter and completely extracts moving ships. The detection time of a single frame of video image is controlled within 97 ms, which can meet the requirements of real-time detection.
Key words: ViBe algorithm     moving ship     foreground extraction     Gaussian pyramid    
0 引 言

在计算机视觉领域中,运动目标检测是国内外学者研究的热点。目前,帧差法[1-2]、光流法[3]、背景差分法[4],是应用较为广泛的几种检测方法。背景差分法会先确定背景模型,然后将图像序列中的当前帧和背景模型进行对比,并进行减法运算,得到前景运动区域,从而确定运动物体的各项特征。混合高斯模型(GMM)[5]、码本(codebook)算法[6]和视觉背景提取(visual background extractor, ViBe)算法[7-8]都是背景差分法的应用。与帧差法、混合高斯模型和codebook算法相比,ViBe算法计算量小,运行速度快,实时性高,抗噪声干扰能力强,还具有较好的鲁棒性。同时,ViBe算法不受运动目标的速度影响,静态背景下检测效果良好,与以上算法相比,前景检测效果较为优异。但其缺点也很明显,如“鬼影”、检测目标不完整以及对动态背景鲁棒性差等问题。

为了弥补原始ViBe算法的不足,杨依忠等[9]提出了一种“与”和“或”类型三帧差法与原始ViBe算法相结合,通过“与”运算减少海面闪烁点被误检测为前景的情况,再通过“或”运算尽可能地保留运动目标,最后对结果进行显著性检测。该方法在一定程度上抑制了首帧出现的“鬼影”,在近距离的大型目标上检测效果理想,但是不适用于小目标检测。VAN D等[10]在ViBe算法的基础上引入了闪烁等级的概念,并引用了codebook算法中的颜色畸变测量。杨毅等[11]在原始ViBe的基础上扩大样本取值范围,结合自适应阈值和闪烁等级,对输入的视频序列采用高斯金字塔变换,获得不同分辨率的图像,最后对这些图像分别使用改进的Vibe算法检测出结果,并进行融合。该方法可以有效抑制海面闪烁点,但未对目标“鬼影”进行抑制,造成船舶运动目标的误检。

基于以上分析,为了提高运动船舶识别的检测率和准确性,本文对传统ViBe算法进行改进。在ViBe算法的基础上,本文算法用多帧连续图像初始化背景模型,减少“鬼影”对前景检测结果的影响;通过自适应阈值和闪烁等级抑制海面杂波,再通过多帧前景图像像素点对比消除“鬼影”,提取移动的船舶。最后对输入的动态视频进行高斯金字塔多尺度分解,提取出第4层的低分辨率视频。本文算法流程如图1所示。

图 1 算法流程图 Fig. 1 Flow chart of the algorithm
1 ViBe算法

ViBe算法流程如下:初始化单帧图像中每个像素点的背景模型、对后续的图像序列进行前景目标分割和模型更新[11]

1.1 模型初始化

算法对视频进行处理时,使用首帧图像进行初始化。首先,为每一个像素点创造一个大小为 $N$ 的样本集,从每个像素的8个邻域中随机选取 $N$ 个像素值放入 $N$ 个模型样本中,背景模型 $M(x)$ 如下:

$ M(x) = \{ {v_1},{v_2}, \cdots {v_N}\}。$ (1)

式中: ${v_i}$ 表示背景模型中样本的像素值; $N$ 为背景模型中样本的数量。

1.2 前景检测

模型初始化之后,从第2帧图像开始,将每个新的像素点与模型中已有的样本进行对比,以此判断是否是前景像素。假设 $v(x)$ 是当前像素点 $x$ 的像素值,ViBe算法会定义一个以 $v(x)$ 为圆心, $R$ 为半径的圆形区域 $ {S_R}\left( {v\left( x \right)} \right) $ ,该区域包含了到 $v(x)$ 的欧氏距离小于等于 $R$ 的所有像素点,如图2所示。其中, ${C_1}和{C_2}$ 为二维颜色空间的分量, $M$ 表示 $M(x)$ 落在 $ {S_R}\left( {v\left( x \right)} \right) $ 内的样本数量,当 $M$ 大于预设阈值时, $v(x)$ 为背景,否则为前景。图中黑色点表示 $M(x)$ 的样本点。

图 2 背景模型示意图 Fig. 2 Schematic of backgrounding model
1.3 模型更新

当前像素 $v(x)$ 被分类为背景点时, $v(x)$ 会以 $1/\phi $ 的概率更新自身的背景模型,之后会随机替换样本模型中的某一像素点,同时也会以 $1/\phi $ 的概率更新其8个邻域内像素点背景。

2 改进的ViBe海面船舶运动目标检测算法 2.1 背景建模

ViBe算法使用视频的第1帧初始化式(1)中的参数。如果在第1帧中有1个像素是前景目标,那么作为前景的像素也将被分类为背景样本点。若第1帧存在前景目标,则前景像素也将被分类为背景样本点。由于前景一直运动,某些长时间保持不变的前景区域被认为是“鬼影”。如图3(b)所示,矩形框内为运动目标残留的鬼影区域。因此,在初始化时,为了弱化运动目标对背景建模的影响,本文算法采用前N帧图像进行建模。

图 3 “鬼影”检测 Fig. 3 Ghost detection
$ M(x){\text{ = }}\left\{ {{P_1}(x), \cdots {P_N}(x)} \right\} 。$ (2)

式中, $ {P_N}(x) $ 为前N帧图像的像素值。

2.2 背景建模自适应阈值和闪烁等级

ViBe算法中所采用的固定半径 $R$ 不能适应海面动态背景的变化,易受海浪杂波的干扰,产生大量的误检。因此,使用自适应阈值[12-15],并根据动态背景的变化自动调整阈值。参考文献[12]将阈值定义为:

$ T = \frac{1}{{M \times N}}\sum\limits_{i = 0}^{N - 1} {\sum\limits_{j = 0}^{M - 1} {\left| {L(x) - {L_i}(x)} \right|} }。$ (3)

式中: $L(x)$ 是当前帧; ${L_i}(x)$ 为背景模型样本。 $T$ 反映背景的变化程度, $R$ 根据 $T$ 的动态变化自适应地调整模型进行更新,如下式:

$ R(x) = \left\{ {\begin{array}{*{20}{c}} {R(x)(1 - \varepsilon )},&{R(x) > T}, \\ {R(x)(1 + \varepsilon )},&{{\rm{else}}} 。\end{array}} \right. $ (4)

式中: $\varepsilon $ 为阈值调节改变量,设置门限 ${R_H}$ ${R_L}$ (分别取40和20)防止阈值变化较大。当环境变化较小时, $R(x)$ 趋于稳定;当背景变化较大时, $R(x)$ 就会逐渐增大。

引用文献[10-11]中的闪烁等级 $ B $ 降低海面杂波的干扰。闪烁等级即若某一背景像素的8邻域中存在前景,根据像素的8邻域状态与前一帧同位置像素8邻域状态不同,对 $ B $ 进行修改。若 $B \geqslant 30$ ,认为该像素正在闪烁,表示为:

$ B = \left\{ {\begin{array}{*{20}{c}} {B + 15},&{{S_I} \ne {S_{I - 1}}}, \\ {B - 1},&{{S_I} = {S_{I - 1}}}, \end{array}} \right.\begin{array}{*{20}{c}} {}&{B \in (0,150)} 。\end{array} $ (5)

式中: $ B $ 为闪烁等级; $ {S_I} $ 为像素点8邻域状态, $ {S_{I - 1}} $ 为上一帧同位置像素的8邻域状态;

$ v(x) = \left\{ {\begin{array}{*{20}{c}} 0&{B \geqslant 30}, \\ 1&{B < 30} 。\end{array}} \right. $ (6)

式中: $v(x)$ 为像素值。

2.3 “鬼影”消除策略与前景检测

“鬼影”消除策略如下:

步骤1 以是否检测到“鬼影”作为第1个判断,连续两帧中相同位置的像素被判断为前景。如果存在“鬼影”,则进行步骤2,否则跳转至步骤3。

步骤2 结合帧间信息,增加第2次判断,即统计前 $n$ 帧中相同位置的前景像素的次数,并与 $n$ 比较。如果小于 $n$ ,则确定为前景像素,否则为“鬼影”。此时“鬼影”更新为背景像素,如式(7)所示。

步骤3 通过改进的ViBe算法提取前景区域,然后与Log边缘检测和形态学运算提取的前景目标进行“与”运算,消除“鬼影”。

$ I(x,y) = \left\{ {\begin{array}{*{20}{c}} 1,&{count < n}, \\ 0,&{{\rm{else}}} 。\end{array}} \right. $ (7)

其中: $ I(x,y) $ 是值为 $ (x,y) $ 的像素,1是前景,0是背景。

在前景检测过程中,基于背景模型提取运动前景,并进行如下操作:

步骤1 第2次判断“鬼影”后,提取船舶运动的前景区域 ${W_1}$

步骤2 利用Log算子对当前帧进行边缘检测,将运动目标区域简化并进行填充;

步骤3 利用形态学运算先膨胀,将运动区域边缘进行连接;然后腐蚀,消除边缘周围纤细区域,得到目标区域 ${W_2}$

步骤4 将 ${W_1}$ ${W_2}$ 两个运动区域进行“与”计算,得到最终目标区域 $W$

由于改进ViBe算法仍存在些许的海浪杂波,同时边缘检测也易检测非目标边缘,如图4(b)和图4(c)所示。将边缘检测和改进的ViBe算法进行“与”运算可以进一步抑制改进的ViBe算法残留的海面杂波以及干扰边缘带来的影响,从而获得完整目标的显著图,如图4(d)所示。

图 4 船舶目标区域显著图 Fig. 4 The significant area of the ship's target area:
3 多尺度分解

前景检测是在不同分辨率的同一视频上执行的。与高分辨率视频相比,低分辨率视频具有模糊、尺寸较小、灰度值变化小等特点,从而抑制了海面杂波。高斯金字塔可以对视频图像进行多尺度采样,还可以将它们排列成金字塔的形式。金字塔层数越多,图像尺寸越小,分辨率越低。假设第k层输入图像的分辨率为 $M \times N$ ,则经过低通滤波和下采样之后,第k+1层图像的分辨率为 $M/2 \times N/2$

$ {G_{k + 1}}(i,j) = \sum\limits_{ - 2}^2 {\sum\limits_{ - 2}^2 {w(m,n)} {G_k}(2i + m,2j + n)}, $ (8)

${G_{k + 1}}(i,j)$ k+1层的高斯金字塔图像, $ w(m,n){{ = }} w(m) \times w(n) $ W长度为5的卷积核,如下式:

$ w(m,n) = \frac{1}{{256}}\left( {\begin{array}{*{20}{c}} 1&4&6&4&1 \\ 4&{16}&{24}&{16}&4 \\ 6&{24}&{36}&{24}&6 \\ 4&{16}&{36}&{16}&1 \\ 1&4&6&4&1 \end{array}} \right)。$ (9)

在动态背景下,海上航行船舶的检测会到受海浪的影响,为了减少海面杂波的干扰,采用高斯金字塔提取5层分辨率视频,使用改进的ViBe算法提取船舶运动目标。如图5(b)、图5(c)和图5(d)所示,前3层分辨率视频中存在大量海面杂波干扰,高分辨率还降低了运行速度。单帧视频的运行时间分别为1 018 ms,285 ms,153 ms,如表1所示。从图5(f)和表1可以看出,海浪的干扰得到了抑制,第5层分辨率视频的单帧视频处理耗时为29 ms。然而,由于丢失了部分船体,目标检测不完整。在第4层分辨率视频中,海杂波得到了很好的抑制,而且舰船目标的显著区域也比较完整,如图5(e)所示。同时,单帧视频运行时间为97 ms,满足实时性要求。因此,本文对分辨率为1280×720的视频采用高斯金字塔分解,得到第4层160×90的低分辨率视频。根据以上实验结果,使用改进的ViBe算法提取运动船舶目标的前景,避免了海浪对高分辨率船舶目标提取精度的影响,可以准确提取运动中的船舶目标。

图 5 船舶目标区域显著图 Fig. 5 The significant area of the ship's target area

表 1 5层分辨率视频单帧画面运行时间对比 Tab.1 Comparison of running time of single frame image of layers resolution video
4 实验结果与分析

实验中使用分辨率为1280 $ \times $ 720,604帧的视频进行仿真。改进算法的部分参数取值与ViBe算法一致,其中背景样本数设置为20,最小匹配个数设置为2,模板更新率设置为16,R的初始值是20。

ViBe算法在进行船舶目标检测时会受到大量海浪杂波的影响,如图6(b)所示。在ViBe算法基础上加入自适应动态阈值和闪烁等级判断,鲁棒性较好,对海浪杂波的抑制较为明显(见图6(c)),船舶目标检测的准确率得到了提高。

图 6 海面杂波抑制效果对比 Fig. 6 Sea clutter suppression effect

经过高斯金字塔分解,得到第4层160 $ \times $ 90低分辨率视频,之后通过多帧连续图像初始化背景模型,加入像素点对比,从而消除“鬼影”对船舶目标检测的影响,如图7所示。图7(b)为ViBe算法对前景提取的效果,存在“鬼影”的干扰,而本文算法采用像素点对比,“鬼影”抑制效果显著,如图7(c)所示。船舶运动目标前景提取完整,可以避免“鬼影”对海面船舶检测准确性的影响。图8(c)为ViBe算法前景检测结果,受“鬼影”区域的影响较大,存在目标检测不完整以及误检等问题。图8(d)为本文基于像素点对比的前景检测结果,“鬼影”区域得到抑制,船舶目标检测完整且准确。

图 7 “鬼影”抑制效果对比 Fig. 7 Comparison of ghost suppression

图 8 前景检测效果对比 Fig. 8 Comparison of foreground detection

图9为同一视频下3种算法第82,208,263,465视频帧前景显著区域提取结果对比图。从图9第2,3列82帧和208帧可以看出,ViBe算法和文献[11]中产生的“鬼影”区域严重影响船舶运动目标前景提取完整度和准确度,而本文算法在“鬼影”区域的抑制上效果显著,船舶运动目标前景提取完整。从第2,3列可知,ViBe算法对“鬼影”区域的更新缓慢,文献[11]中在263帧视频图像已完成“鬼影”区域上的更新,但依然存在部分海浪杂波的影响造成海面船舶运动目标的误检,如图9(c)所示。在465帧时,由于背景变化过快,ViBe算法和文献[11]的背景更新速度无法满足背景的变化,出现大面积区域误检,而本文算法结合边缘检测进行前景区域的提取,避免了大面积区域的误检,相比ViBe算法和文献[11],本文改进的ViBe算法所得目标区域较为完整和准确。在低分辨率视频下进行检测,不仅能抑制“鬼影”区域的影响,还可以降低动态背景下海面噪声的干扰,同时也适用于小目标船舶的检测。

图 9 前景显著区域对比 Fig. 9 Comparison of foreground salient area

选取检测率(true precision rate, TPR)和虚警率(false precision rate, FPR)作为检测结果的评价标准[16]

$ \left\{ {\begin{array}{*{20}{c}} {{P_{FPR}} = {N_{FP}}/\left( {{N_{FP}} + {N_{TP}}} \right)},\\ {{P_{TPR}} = {N_{TP}}/\left( {{N_{TP}} + {N_{FN}}} \right)}。\end{array}} \right. $ (10)

式中: ${N_{FP}}$ 为背景区域将运动船舶检测为目标的次数; ${N_{TP}}$ 为背景区域没有将运动船舶检测为目标的次数; $ {N_{TP}} $ 为目标区域运动船舶目标被成功识别的次数, ${N_{FN}}$ 为目标区域运动船舶目标未被检测到的次数。

在相同的实验条件下进行仿真,结果如表2所示。可知:本文算法的TPR(检测率)为92.5%,而ViBe算法、文献[11]中算法的TPR分别为60.1%和80.8%,本文算法的检测效果明显优于其余两者;本文算法的FPR (虚警率)为6.2%,ViBe算法、文献[11]中算法的FPR分别为26.3%和9.1%,与其相比,FPR分别降低了20.1%和2.8%。由于本文算法加入了“鬼影”消除策略,比ViBe算法和文献[11]在单帧视频图像耗时多61 ms和38 ms,平均时间控制在97 ms以内,满足实时检测的要求。

表 2 3种算法的性能评价 Tab.2 Performance evaluation of the three algorithms
5 结 语

为了解决运动船舶检测中的“鬼影”问题,本文对ViBe算法进行改进。结果表明,本文改进的ViBe算法的TPR(检测率)为92.5%,ViBe算法和文献[11]中的算法的TPR分别为60.1%和80.8%,本文算法在“Ghost”抑制方面也明显优于ViBe算法和文献[11]中算法。本文提出的ViBe算法对海上运动船舶检测过程中的“鬼影”抑制效果明显,抗海浪干扰强,可以快速准确地检测出运动船舶。因此,本文算法对海浪背景下船舶目标检测有较好的适用性,同时为海上船舶目标检测提供了参考,并为海上船舶目标跟踪奠定了可靠的基础。

参考文献
[1]
MIGLIORE D A, MAATTEUCCI M, NACCARI M. A revaluation of frame difference in fast and robust motion detection[C]//Proceedings of the 4th ACM international workshop on Video surveillance and sensor networks –VSSN’06, October 27–27, 20061Santa Barbara, California. USA. New York: ACM, 2006: 215–218.
[2]
崔杰, 胡长青, 徐海东. 基于帧差法的多波束前视声呐运动目标检测[J]. 仪器仪表学报, 2018, 39(2): 169-176. DOI:10.19650/j.cnki.cjsi.j1702414
[3]
李成美, 白宏阳, 郭宏伟, 等. 一种改进光流法的运动目标检测及跟踪算法[J]. 仪器仪表学报, 2018, 39(5): 249–256.
[4]
AHMED S H, ELHABIAN S Y. Moving object detection in spatial domain using background removal techniques-stste-of-art[J]. Recent Patents on Computer Science, 2008, 1(1): 32-54. DOI:10.2174/2213275910801010032
[5]
CHEN H Y, CUI Y J, LI S, et al. An improved GMM based algorithm with optimal multi-color subspaces for color difference classification of solar cells[J]. IEEE Transactions on Setmiconductor Manufacturing, 2018, 31(4): 503-513. DOI:10.1109/TSM.2018.2867254
[6]
MURGIA J, MEURIA C, RUICHEK Y. An improved colorimetiric invariants and RB-depth-based codebook model for background subtraction using Kinect[C]// Human-inspired computing and its applications. Lecture notes in computer science. Cham: Springer, 2014, 8856: 380–392.
[7]
BARNICH O, DROOGENBROECK M. ViBe: a universal background subtraction algorithm for video sequences[J]. IEEE Transactions on Image Processing, 2011, 20(6): 1709-1724. DOI:10.1109/TIP.2010.2101613
[8]
HUANG W, LIU L, YUE C, et al. The moving target detection algorithm based on the improved visual background extraction[J]. Infrared Physics & Technology, 2015, 71: 518-525.
[9]
杨依忠, 张强, 汪鹏飞. 基于改进ViBe算法与三帧差法的运动检测算法[J]. 合肥工业大学学报(自然科学版), 2018, 41(8): 1052-1058.
[10]
VAN D M, PAQUOT O, Background subtraction: experiments and improvements for ViBe[C]// IEEE Computer Society Conference on Computer Vision and Pattern Recognition Workshops IEEE, 2012: 32–37.
[11]
杨毅, 邹卫军, 白云耀, 等. 基于改进ViBe的海面远距离运动目标检测[J]. 电光与控制, 2019, 26(11): 41-44. DOI:10.3969/j.issn.1671-637X.2019.11.009
[12]
茅正冲, 沈雪松. 融合多尺度变换的改进Vibe算法[J]. 激光与光电子学进展, 2018, 55(11): 321-328.
[13]
闵卫东, 郭晓光, 韩清. 改进的ViBe算法及其在交通视频处理中的应用[J]. 光学精密工程, 2017, 25(3): 806–811.
[14]
陈树, 丁保阔. 动态背景下自适应LOBSTER算法的前景检测[J]. 中国图象图形学报, 2017, 22(2): 161-169. DOI:10.11834/jig.20170203
[15]
XIE Liang, ZHANG Xiao Hu, GUO Peng Yu, et al. ViBe with adaptive threshold based on energy minimization[J]. Applied Mechanics and Materids, 2015, 4088: 326-334.
[16]
PRASAD D K, RAJAN D, RACHMAWATI L, et al. Video processing from electro-optical sensors for object detection and tracking in a maritime environment: A survey[J]. IEEE Transactions on Intelligent Transportation Systems, 2017, 18(8): 1993-2016. DOI:10.1109/TITS.2016.2634580