
# 使用 RGB 或深度摄像头进行人数统计 $^{\star}$

Luca Del Pizzo, Pasquale Foggia, Antonio Greco, Gennaro Percannella $^{*}$, Mario Vento

萨莱诺大学，意大利菲西亚诺，Via Giovanni Paolo II 132，邮编：84084

## 文章信息

文章发表日期：可在网上查阅

关键词：

人数统计

俯视摄像头

视频分析

零售分析

## 摘要

本文介绍了一种基于视觉的方法，用于统计跨越虚拟线的行人数量。该方法分析由安装在相对于计数线垂直位置的摄像头采集的视频流，从而确定跨越虚拟线的行人数量，并提供每个行人的跨越方向。所提出的方法专为实现高精度和计算效率而设计，以便在实际场景中应用。我们对该方法进行了广泛的评估，考虑了可能影响计数性能的主要因素，特别是采集技术（传统 RGB 摄像头和深度传感器）、安装场景（室内和室外）、人群流量密度（独立行人与行人组）、采集帧速率和图像分辨率。我们还分析了将 RGB 和深度传感器输出相结合，以提高计数性能。实验结果证实了所提出的方法的有效性，尤其是在结合 RGB 和深度信息时，并且在三种不同的 CPU 架构上的测试表明，该方法既可以部署在高端服务器上，以并行处理大量的视频流，也可以部署在商业智能摄像头的低功耗 CPU 上。

© 2016 Elsevier B.V. 保留所有权利。

### 1. 引言

能够统计跨越虚拟线的行人数量的系统，在不同的实际场景中提供有价值的信息。安装在封闭区域入口或出口的人数统计系统，可以获取有关这些位置的人流量信息。一些典型的安装人数统计系统的场所包括商店、商场、博物馆、展览会、地铁、火车、公交车等。在所有这些地方，这些系统对于安全和商业智能都非常重要：在前者方面，它们可以实时检查某个场所内的人数是否接近或超过最大限值；在后者方面，它们可以提供有关一段时间内人员流量的统计信息。近年来，人们对采用计算机视觉算法处理由安装在垂直位置的摄像头采集的视频流的人数统计系统越来越感兴趣。零售领域是使用此类系统的一个典型场景。有关商店或商场内人数的信息对于许多目的都非常重要：它可以更好地分配员工，了解一天和一周的峰时段，将顾客流量与营销活动或同一区域类似商店的销售业绩相关联，等等。

相关工作：在文献中，已经提出了几种使用顶视相机的行人计数方法。激发研究人员设计行人计数方法的的主要趋势具有共同的架构，涉及以下步骤：（i）执行前景检测，以将移动像素与图像的静态部分分开；（ii）从前景掩码中检测场景中的每个行人；（iii）跟踪场景中的每个检测到的行人，并使用轨迹更新计数，以便当轨迹与虚拟线相交时进行计数。各种方案之间的主要区别在于，用于解决每个三个步骤中的问题的方法以及采用的传感器类型（传统RGB相机或深度传感器）。

最早用于人群计数的算法，主要针对传统RGB摄像头产生的视频流 [^1] [^2] [^3] [^4] [^5]. 许多此类方法采用前景检测方法（帧差法 [^1] [^2] 或背景差法 [^3] [^4]）和跟踪技术（重叠跟踪 [^1] [^3] [^4] 或光流法 [^2]），但它们在如何优化前景检测方面有所不同。

---

## 发表于

step with more or less sophisticated people detection phases. 在 [^1] [^2] [^3] 中，对前景掩码上应用连通组件标记后获得的blob进行跟踪。不幸的是，这种方法在每次出现多个人时容易出错。多年来，研究人员已经设计了更复杂的算法来加强人员检测阶段。在 [^4] 中，采用基于k均值的人员分割算法，以减少人员检测过程中的错误。然而，这种技术可以提高准确性，但仅部分解决了拥挤场景中的问题。最近，Mukherjee等人。[^5] 提出了一种头部检测方法，该方法通过边缘检测blob并使用霍夫变换搜索圆形。然后，通过跟踪头部来执行人员计数操作。该算法的主要局限性是由于伪装和阴影而导致的圆形搜索错误。

上述方法在拥挤场景中存在主要问题，例如由于光照变化、阴影和复合物体而产生的影响。为了减少这些问题的负面影响，在科学文献中，已经提出了利用场景的三维分析来获取深度信息的方案。通过利用第三个维度，可以通过检测和跟踪人员头部来解决拥挤场景中的人员计数问题。该领域最早的方法是基于立体相机，如[6–8]，但随着Microsoft Kinect的出现，该设备通过结构光提供深度图像，研究人员提出了使用这种类型采集设备的新的方法。特别是，Zhang等人[^9]定义了一种方法，该方法通过在深度图中搜索局部最小值来检测头部，使用分水岭算法。Vera等人[^10]提出了一种使用支持向量机(SVM)分类器来检测人员的方法，该方法使用梯度方向直方图描述符。该方法的一个缺点是效率低下，并且依赖于场景，因为它使用了分类器。Fu等人[^11]提出了一种方法，该方法用颜色梯度替换灰度深度图中的值，以便简化基于地面高度过滤人员的后续步骤。

贡献：本文提出了一种人员计数方法，旨在实现高计算效率和高计数精度。本文提出的方法，已经在[^12]中以初步版本呈现，仅执行前景检测阶段，并且与文献中常用的方法不同，它不执行人员/头部检测和对象跟踪步骤。我们的方法基于一种专门为解决此问题而设计的传感器，该传感器能够确保对前景检测错误的抵抗能力，并克服在拥挤条件下应用人员跟踪方法所面临的大多数困难。

本文的主要贡献，特别是与[^12]相比，包括以下内容。

预处理阶段：我们研究了引入降噪预处理阶段对原始方法性能的影响[^12]。

附加技术细节：我们提供了该方法的扩展描述，特别是关于前景检测阶段的部分，并提供了新的算法公式，该公式显著地阐明了整体方法，并简化了实现的重现性，以及关于如何选择算法参数的步骤，以及对该方法的计算需求的分析。

单独使用时，可以实现虚假阳性和虚假阴性之间的更平衡的权衡。

传感器组合：我们建议结合使用传统光学相机和深度传感设备的输出；我们的结果表明，组合可以提高性能，优于每种类型的传感器。

实验验证：我们研究了图像分辨率和采集帧率对方法计数性能的影响。此外，我们还考虑了一个在不受约束的真实场景中采集的附加数据集，以评估在真实条件下的性能；我们还将该方法与原始方法（不带预处理阶段）以及使用对象跟踪策略的方法进行比较。

计算分析：在本文中，我们着重关注计算问题；该方法在三种不同 CPU 架构上进行了测试，这些架构的计算能力不断提高（从嵌入式单板计算机到高端工作站），目的是验证该方法是否适用于需要实时分析的现场安装。

本文的组织结构如下：在第 2 节，我们描述了所提出的方法；在第 3 节，我们详细介绍了用于实验验证的数据集；在第 4 节，我们报告并评论了测试结果；最后，在第 5 节，我们总结了最终结论并阐述了未来的工作。

### 2. 提出的方法

在本节中，我们描述了所提出的人数计数方法，介绍了其原理并提供了技术细节。我们还重点关注与计算复杂度相关的问题，并描述了我们为使该算法能够在通用 CPU 平台和嵌入式系统（通常用于监控摄像头）上运行而采取的一些优化措施。

一个物体穿过由安装在天顶位置的通用传感器（例如光学相机、3D 图像设备、飞行时间传感器或被动红外传感器，仅举例）监测的区域，会引起传感器信号相对于稳态的扰动，而当没有物体位于该区域时，传感器会产生稳态信号。在理想情况下，对于人数计数问题，信号相对于稳态的变化应仅在有人穿过该区域时才显著。传感器产生的信号的处理和解释应允许计数穿过监测区域的精确人数，同时区分穿越方向。考虑到由需要在嵌入式系统上运行算法所带来的计算能力限制，我们排除了基于人员检测的方法（例如识别头部和/或肩膀的形状），因为这些方法计算成本较高。出于同样的原因，我们排除了基于光流的方法。此外，虽然跟踪前景块的算法可能相对较快，但前景检测伪影会导致块分割或合并；此外，当物体位于图像边界附近时，跟踪可能会变得不可靠，而这种情况在由较低高度安装的天顶摄像头拍摄的场景中可能经常发生。因此，为了在这些情况下获得稳健的方法，我们选择避免跟踪；由于连通组件检测是一种需要大量处理的步骤，主要用于跟踪，因此我们也可以避免此步骤。

根据上述观察，可以推断出使用顶视传感器的通用人数计数方法可能包括一个第一阶段，即前景检测阶段，用于检测区域内的物体；以及一个第二阶段，该阶段利用前景信息进行计数。本文中提出的人数计数方法采用类似的系统架构，由两个阶段组成（见图 1）：(i) 前景检测阶段，

---

L. Del Pizzo 等./模式识别信函 000 (2016) 1–10

![Image](images/03fe1a3727456e59c9a092f13a3ff39bc7e515d0a606d5a44a2550870af28893.jpg)

<div style="text-align: center;">Fig. 1. System architecture of the proposed method.</div>

允许通过采用背景减法方法识别场景中运动的像素；(ii) 计数传感器，该传感器解释前景检测阶段的结果，并提供计数的最终输出。

#### 2.1. 前景检测

从光学相机进行前景检测是一个在科学文献中广泛讨论的问题，在过去的15年中，关于检测场景变化的方法以及去除伪影（如阴影 [^13] [^14] 或反射 [^15]）的算法，发表了大量论文，涉及 [^16] [^17] [^18] [^19] [^20]。

前景检测阶段的输出准确性是实现高计数性能的关键，因为在该阶段出现的错误可能会严重影响后续的计数阶段。在典型的行人计数场景中，误差的最大来源是照明变化，尤其是在系统安装在室外时。为了解决这个问题，我们采用一种方法，该方法通过动态更新背景，从而获得前景。此外，我们还引入图像处理程序来减少图像中的噪声。因此，所提出的方法中的前景检测阶段包括以下步骤：预处理、背景减法和背景更新。

##### 2.1.1. 预处理

室内和室外环境中相机捕获的图像会受到噪声的影响，这些噪声可能是由振动、热量或干扰引起的。为了减少这种噪声，我们进行高斯平滑，该过程是使用高斯值卷积图像。我们尝试了不同大小的卷积核，发现对于在 $3 \times 3$ 分辨率下处理视频，$640 \times 480$ 卷积核是最佳选择。

###### 2.1.2. 背景减法

前景是通过从背景中进行差值计算得到的，如 [^21] 所述。使用背景图像作为参考，计算每个像素与当前帧之间的绝对颜色距离：$D_t(x, y) = |I_t(x, y) - B_{t-1}(x, y)|$。因此，前景掩码 $F_t$ 的计算方法如下：

 $$ F_{t}(x,y)=\begin{cases}1&if D_{t}(x,y)\geq\tau_{F}\\ 0&otherwise\end{cases} $$

该方法无需修改即可应用于深度传感器提供的灰度图像。值得注意的是，在后一种情况下，可以选择阈值 $\tau_{F}$，以确保仅位于距离地面一定高度的像素被分类为前景像素。

###### 2.1.3. 背景更新

背景模型通过指数平滑（或等效于一阶无限冲激响应，IIR 滤波器）进行更新，根据该方法，时间 t 的背景图像 $B_t$ 通过将当前帧 $I_t$ 与时间 $B_{t-1}$ 计算的背景图像 $t-1$ 进行混合，使用平滑因子 $\alpha_B$：

 $$ B_{t}(x,y)=\alpha_{B}\cdot I_{t}(x,y)+(1-\alpha_{B})\cdot B_{t-1}(x,y) $$

权重 $\alpha_{B}$ 允许控制静态前景对象成为背景图像所需的时间，因为它与时间常数 $\tau$ 相关：

 $$ \alpha_{B}=1-e^{\frac{-\Delta T}{\tau}} $$

其中 $\Delta T$ 是离散时间实现的采样时间间隔，可以近似为 $\alpha \approx \frac{\Delta T}{\tau}$，当 $\Delta T < \tau$ 时（在我们的实验中，我们将 $\tau \approx 120$ 秒设置为，而 $\Delta T$ 是接口周期，通常在 40-100 毫秒的范围内）。

需要注意的是，虽然有可能通过为属于前景或背景的像素使用不同的平滑因子 $\alpha$ 来选择性地更新背景，但在我们提出的方法中，我们没有采用这种方法，因为计算原因。采用单独的前景和背景平滑因子会妨碍使用 SIMD 指令进行背景更新阶段（如 2.3 节所述），这将对执行时间产生非常负面的影响。

##### 2.2. 计数

许多文献中提出的人员计数算法（参见第 1 节）使用某种形式的跟踪。实际上，跟踪算法提供的信息远超于执行计数所需的：跟踪算法提供了对象的详细轨迹，而只需要一个指示对象穿过计数区域的方向。但是，这种细节是以算法的鲁棒性降低为代价的，因为跟踪结果可能会受到前景检测问题的影响（例如，将属于单个对象的区域分割成多个前景区域），这会导致算法丢失跟踪的连续性。此外，许多跟踪算法只有在要跟踪的对象完全包含在图像中时才能可靠工作。但是，如果相机安装在室内且天花板不高，这可能很难实现（当然，可以使用鱼眼镜头，但这会带来其他问题）。

因此，我们选择了一种更简单但更稳健的方法：从前景检测阶段获得的前景掩码直接馈送到一个“虚拟传感器”，该传感器基于积分运算，这些运算既对前景掩码中的错误具有鲁棒性，又非常高效。此外，为了估计前景对象的运动方向，我们使用一种类似于增量旋转编码器的工作原理的技术，参见 [^22]：虽然它提供的的信息不如跟踪器可以获得的信息（例如，没有速度指示；它只能指示运动是否沿着预定义的方向），但它既稳健又高效。

---

![Image](images/e0a45c5de7ca2de86e22a4b1dfc6041a5c1c60166490f7c48b776120602251c8.jpg)

<div style="text-align: center;">Fig. 2. Architecture of the proposed counting sensor.</div>

提出的传感器在几何上由一个矩形区域定义，并且与该矩形区域相关联有一个穿过方向，如图 2 所示。

所提出的传感器在几何上由一个矩形区域和一个与之相关的交叉方向来描述，如图 2 所示。

我们将传感器的宽度W定义为矩形垂直于通行方向的边长，传感器的高度H定义为矩形平行于通行方向的边长。该矩形沿宽度方向被划分为K个条带，每个条带的宽度为$\delta = W/K$。每个条带沿高度方向被划分为两个单元格，每个单元格的高度为$H/2$。我们用$S_i$（$i = 1, \ldots, K$）表示传感器的任意一个条带，用$C_{ij}$（$j = 1, 2$）表示属于条带$S_i$的两个单元格。在时刻t，若单元格$C_{ij}$内的前景像素数量高于单元格$Area(C_{ij})$的总像素数乘以阈值$\theta_C \in [0, 1]$得到的结果，则该单元格处于激活状态。

 $$ A_{ij}=\begin{cases}1,&if F_{t}(C_{ij})\geq\theta_{C}\cdot Area(C_{ij})\\0,&otherwise\end{cases} $$

该算法存储每个单元的当前激活值 $A_{ij}$ 和前一个激活值 $A'_{ij}$，并且对于每个条带，它维护一个激活值 $B_i$，该值初始化为 0。当以下条件成立时，$B_i$ 的值从 0 变为 1：

 $$ B_{i}\gets1\mathrm{~if~}A_{i2}=1\land A_{i1}^{^{\prime}}=1\land A_{i2}^{^{\prime}}=0 $$

激活序列的评估用于以可靠的方式单独检测在双向方向上行走带购物车或排队的行人。此单个条件不足以正确解决在同一方向上附近行走的行人数的问题。因此，该算法搜索具有等于 1 的激活值的连续单元序列。换句话说，它找到所有索引对 p、q，其中 $p \leq q$，且 $B_p = B_{p+1} = \cdots = B_q = 1$ 且 $B_{p-1} = B_{q+1} = 0$（在假设 $B_0 = B_{K+1} = 0$ 的情况下处理临界情况）。

如果 $A_{p,1} = A_{p+1,1} = \ldots = A_{q,1} = 0$ 那么
$B_i \leftarrow 0$ 对于 $i = p, ..., q$
如果 $q - p + 1 \geq \theta_K$ 那么
$L = q - p + 1$
增加计数，取 floor($L/\theta_K$) 的值
结束
如果

该算法仅在某个条带的相邻条带也全部处于未激活状态时，才会禁用该条带；对于宽度$L = (q - p + 1)$大于阈值$\theta_{K}$的每个条带组，对应的人数为比值$L/\theta_{K}$向下取整的结果。因此，该算法还能够解决多人紧挨着一起通过闸门时的计数问题。

系统设置需要定义参数 $W, H, \theta_C, \theta_K$，而其余参数 K 和 $\delta$ 可以直接确定。

![Image](images/d2595ddac322aeebed016bbb748d0cd096929fc8d141ad9256ec824f63d81e8a.jpg)

<div style="text-align: center;">Fig. 3. Examples of the behavior of the sensor with one or more crossings. (For interpretation of the references to color in this figure, the reader is referred to the web version of this article.)</div>

W 由它们推导而来。特别是，W 是门的总宽度，是安装系统时确定的外部参数。H 必须配置为在两个相反要求之间找到最佳平衡点。一方面，H 越高，所需的视频帧速率越低，这对于在低端嵌入式设备上进行处理或在单个服务器上并行处理尽可能多的流时是一个重要的要求。另一方面，H 越低，传感器正确检测紧密并排行走的两名人员的能力就越高。我们发现，将 H 设置为平均身高人员的深度两倍，可以在上述两个相反要求之间实现良好的折衷。在以下部分中描述的实验中，$\theta_{C}=0.2$ 和 $\theta_{K}=3$ 的值被确定为保证在未包含在测试数据集中的帧序列上实现最高性能。

图 3 显示了传感器在典型情况下（单个或多名人员通过虚拟线）的行为的四个示例。在图中显示的示例中，计数传感器由 8 个水平条纹组成，而激活传感器的最少连续条纹数为 $\theta_{K} = 3$。在每行中，我们都显示了通过计数传感器进行的典型情况。每个示例都由两张图像组成；右侧图像显示了 t-1 时刻传感器的激活状态，而左侧图像显示了 t 时刻的激活状态。在 t-1 时刻激活的单元格为黄色，在 t 时刻激活的单元格为红色。在第一个图中，一个人激活了三个相邻的条纹，而在第二个图中，两个人激活了两组不同的三个相邻条纹。在第三个图中，一起行走的两个人只激活一组由六个连续条纹组成的组。在第四个图中，以相反方向行走的两个人，在 t-1 时刻激活传感器两侧的两组三个连续单元，在 t 时刻，传感器评估条纹的激活序列，并能够检测人员的行走方向。在所有这些情况下，所提出的方法都能够正确地计算通过传感器的人数。

##### 2.3. 计算问题

在方法的设计和实现阶段，需要考虑一个至关重要的问题，即计算效率，以便使该算法能够在嵌入式系统和低计算设备上实时运行。为了实现实时处理，这里考虑了两种主要的优化方法。第一种优化方法灵感来自 [^23] 中描述的方法，即。

---

该方法不执行浮点运算，并且主要使用 SIMD 指令，从而利用向量处理器的并行性，以便同时处理更多数据。 第二种优化方法基于 [^23] 中的结果，表明与前台检测阶段的其他阶段相比，背景更新阶段是一个相当耗时的过程。 因此，为了减少背景更新阶段的计算量，我们以比该方法运行频率低 10% 的频率执行此阶段。 我们通过实验验证，这不会引入明显的性能下降，但可以显著减少与该阶段相关的计算负担。

#### 3. 數據集描述

我們專門收集了兩個數據集，用於對該方法的實驗驗證（該數據集已公開，並可從 <http://mivia.unisa.it/datasets-request> 下載）。所採用的數據集滿足模式識別系統實驗中的兩種不同需求。一方面，我們希望在受控環境中分析所提出的方法的行為，以確定可能對性能產生潛在影響的主要變量的響應。為了實現這一目標，在構建數據集時，我們考慮了採集技術（光學攝像機或深度攝像機）、照明源（室內和室外）以及人員流量密度（在一個或兩個方向上增加人員通過次數）。此外，我們還對圖像分辨率和視頻的幀速率對性能的影響感興趣，因為在典型的應用場景中，我們希望在 CPU 上實現最佳性能。事實上，我們希望在同一 CPU 上並行處理多個流，或者相反，使用更便宜的系統來處理圖像序列。

上述所有變量都在兩個用於構建數據集的變量中進行了特定的建模。此後，我們將將此數據集命名為 $Dataset_{C}$，其中下標 C 代表受控，表示該數據集是在受控環境中採集的，在該環境中，在穿越計數線的人員在事先接受了有關如何過渡的具體說明。另一方面，為了評估該方法在真實場景中的性能，我們收集了第二個數據集，其中人員可以自由地穿越虛擬線。我們將將第二個數據集稱為 $Dataset_{U}$，其中下標 U 代表不受控。在以下內容中，我們將提供這兩個數據集的通用描述。

##### 3.1. 數據集 $_{C}$ 的描述

$Dataset_{C}$ 首次在 [^12] 中呈现。为了完整起见，我们在此报告数据集的相关元素。该数据集由两个成像设备同时捕获的视频序列组成。具体来说，我们使用一个在可见光范围内运行的传统光学相机，该相机捕获 RGB 图像；另一个采用的采集设备是 Microsoft Kinect 传感器的深度成像系统，它提供一个灰度图像，其中像素的强度与该像素所属的物体部分与相机的距离成线性关系。如在 [^12] 中所述，为了简洁起见，我们将在本文中分别称光学相机和深度 Kinect 传感器为 RGB 和 DEPTH。

这两个设备安装在起重机上，彼此非常靠近，以最大化图像区域的重叠。 相机位于离地面 3.2 米的高度，采用

![Image](images/45962cc29f9e825eb5338fb5c2c2415db11bef0e95a0e735c5ea0a3414133636.jpg)

<div style="text-align: center;">Fig. 4. Example images extracted from the Dataset: images in the first two rows refer to the INDOOR scenario, while the remaining images are from the OUTDOOR scenario, alternating RGB and then DEPTH; images in the leftmost column show the virtual crossing line, while in the remaining columns from left to right there are examples of images with increasing number of persons.</div>

顶视位置，以便从上方捕捉到人物的图像。 两个设备最初以 30 帧每秒的速率和 $640 \times 480$ 像素的分辨率录制视频。 然后，为了研究性能与图像分辨率和帧速率之间的依赖关系，我们从原始版本中派生出新的序列，这些序列的分辨率分别为 $(320 \times 240$ 和 $160 \times 120)$，帧速率为 30 帧每秒，以及 $(25, 20, 15, 10$ 和 5 帧每秒，同时保持初始的 640 \times 480 $ 分辨率。

该数据集包含在两种不同场景下采集的序列，这些场景模拟了自然光照占主导地位（我们称之为“户外”OUTDOOR）或光源完全为人工光源（“室内”INDOOR）的情况，如图 4 所示。 重要的是要注意，上述两种场景是专门设计的，以模拟实际应用中人群计数系统的典型环境，同时注意地板的特性。 事实上，“室内”场景是指在封闭区域内的安装（例如商店、银行、购物中心等），目的是统计进出人员的数量；在这种情况下，照明由分布式的照明系统提供，并且地板具有一定的反射。 另一方面，“户外”场景是指在建筑物入口前安装人群计数系统，旨在获取该区域的人流量统计数据；这些情况通常具有哑光路面（即没有反射）以及间接但占主导地位的阳光。

数据集 $_{C}$ 包含在感兴趣区域内以增加数量流动的人员序列，这些人员朝相同方向或相反方向流动。 这种序列允许在不同的拥挤条件下评估所分析方法的计数性能。 在最简单的情况下，只有一个人穿过相机视野的区域，而在最复杂的情况下，有一组六个人穿过该区域，他们要么朝相同的方向移动，要么朝相反方向移动（三个人朝一个方向，其余三个人朝另一个方向）。

在表 1 中，显示了 $Dataset_{C}$ 的样本数量信息。数据根据场景和流量密度分别报告，区分了单个个体和人员组的通过情况。图 4 显示了从 $Dataset_{C}$ 中提取的示例图像。

---

## 待刊登

<div style="text-align: center;">Number of samples of the Dataset $_{C}$ used for the benchmarking in a controlled environment, expressed in terms of the persons which cross the virtual line.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Scenario</td><td style='text-align: center; word-wrap: break-word;'>Flow density</td><td style='text-align: center; word-wrap: break-word;'>Number of transits</td></tr><tr><td rowspan="2">INDOOR</td><td style='text-align: center; word-wrap: break-word;'>Isolated transits</td><td style='text-align: center; word-wrap: break-word;'>212</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Group of persons</td><td style='text-align: center; word-wrap: break-word;'>203</td></tr><tr><td rowspan="2">OUTDOOR</td><td style='text-align: center; word-wrap: break-word;'>Isolated transits</td><td style='text-align: center; word-wrap: break-word;'>236</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Group of persons</td><td style='text-align: center; word-wrap: break-word;'>317</td></tr></table>

### 3.2. 数据集 $_{U}$ 的描述

数据集 $_{U}$ 是在走廊入口处以非控制的方式录制的，允许人员在摄像机下方双向自由流动。 这使得能够收集到一些在第一个数据集中不存在的复杂情况，这些情况可能在现实世界中出现，即人们可能会以非传统的方式跨越虚拟线。 数据集 $_{U}$ 中存在的一些情况包括：一个或多个人在感兴趣的区域内站立或挥手越过虚拟线，以对角线方向跨越虚拟线的人，突然停止并在靠近虚拟线的位置重新开始移动或改变移动方向的人，携带中/大型物体（例如手推车、脚手架）或手臂张开的人，以及通过通道的密集人群。

$Dataset_{U}$ 数据集是在室内环境中获得的，包含 264 个独立的通过和 673 个群体人员的通过。

#### 4. 性能指标和实验结果

在本节中，我们报告了所提出的人数计数方法在基准数据集上的性能评估结果。 我们描述了用于量化方法性能的指标，以及采用的实验协议；然后我们报告并评论了该方法在两个采用的数据集上获得的结果；我们分析了结合 RGB 和深度传感器输出时可以实现的性能；我们还将该方法与在 [^12] 中提出的原始版本进行比较，后者不使用预处理阶段，以及与基于采用对象跟踪策略的方法进行比较；最后，我们研究了该方法在不同处理平台上的计算要求。

##### 4.1. 实验协议

我们使用精度 = $\frac{TP}{TP+FP}$、召回率 = $\frac{TP}{TP+FN}$ 和 F1 值 = $\frac{2\cdot Prec\ Recall}{Prec+Recall}$ 作为衡量性能的指标，其中 TP 是正确检测到的人员通过次数，FP 是错误检测到的通过次数，FN 是未检测到的通过次数。 为了考虑到每个通过的时间（如在地面真实数据中报告）与该方法检测到的时间之间可能存在的延迟，我们在计算上述性能指标时，如果延迟低于 1 秒的阈值，则将该通过视为正确检测。

此外，需要注意的是，本节中所有考虑到的方法的参数调整是在单独的序列上进行的，这些序列未用于测试。

##### 4.2. 结果分析

所提出的方法的性能已分别在数据集 $_{C}$ 和数据集 $_{U}$ 上进行评估；在第一种情况下，我们旨在表征拥挤程度（独立通过与人员群体）、场景（室内与室外）和所用传感器（深度与 RGB）对整体计数性能的影响；在第二种情况下，我们分析了在不受限制的场景中的性能，在这种场景中，人们可以自由流动，以模拟真实情况。 此外，我们还报告了通过结合使用 RGB 和深度传感器的该方法可以实现的性能。

关于第一个数据集的分析，我们在表 2 中报告了分解后的结果，这使得读者可以找到任何传感器、场景和拥挤程度组合的结果。 在此表中，当视频流以不同的分辨率进行处理时，也报告了数据。 此外，为了研究该方法的性能，仅针对单个维度（流量密度和场景），分别在表 3 和 4 中对其他维度进行了汇总。

###### 4.2.1. 分解数据的分析结果

在表 2 中，所提出的方法（包括预处理阶段）在数据集 $_{C}$ 上的性能，以之前定义的指标来表示，并且是在原始 $640 \times 480$ 分辨率以及降至一半 $(320 \times 240)$ 和四分之一 $(160 \times 120)$ 缩放分辨率下计算的。 作为一个初步的观察，我们注意到当分辨率降低时，性能会下降。 当图像以一半分辨率进行缩放时，RGB 图像的 f-index

<div style="text-align: center;">Performance of the proposed method on the Dataset $_{C}$ at three different resolutions: the original capture resolution of  $640 \times 480$ and the scaled ones,  $320 \times 240$ and  $160 \times 120$. The frame rate of all the considered sequences is fixed to 30 fps.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td rowspan="2">Sensor</td><td rowspan="2">Scenario</td><td rowspan="2">Flow density</td><td colspan="3">640 $\times$ 480</td><td colspan="3">320 $\times$ 240</td><td colspan="3">160 $\times$ 120</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Re</td><td style='text-align: center; word-wrap: break-word;'>Pr</td><td style='text-align: center; word-wrap: break-word;'>f</td><td style='text-align: center; word-wrap: break-word;'>Re</td><td style='text-align: center; word-wrap: break-word;'>Pr</td><td style='text-align: center; word-wrap: break-word;'>f</td><td style='text-align: center; word-wrap: break-word;'>Re</td><td style='text-align: center; word-wrap: break-word;'>Pr</td><td style='text-align: center; word-wrap: break-word;'>f</td></tr><tr><td rowspan="4">RGB</td><td rowspan="2">INDOOR</td><td style='text-align: center; word-wrap: break-word;'>Isolated transits</td><td style='text-align: center; word-wrap: break-word;'>0.967</td><td style='text-align: center; word-wrap: break-word;'>0.990</td><td style='text-align: center; word-wrap: break-word;'>0.979</td><td style='text-align: center; word-wrap: break-word;'>0.934</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.966</td><td style='text-align: center; word-wrap: break-word;'>0.849</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.918</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Group of persons</td><td style='text-align: center; word-wrap: break-word;'>0.803</td><td style='text-align: center; word-wrap: break-word;'>0.982</td><td style='text-align: center; word-wrap: break-word;'>0.883</td><td style='text-align: center; word-wrap: break-word;'>0.685</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.813</td><td style='text-align: center; word-wrap: break-word;'>0.665</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.799</td></tr><tr><td rowspan="2">OUTDOOR</td><td style='text-align: center; word-wrap: break-word;'>Isolated transits</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.992</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.996</td><td style='text-align: center; word-wrap: break-word;'>0.919</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.958</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Group of persons</td><td style='text-align: center; word-wrap: break-word;'>0.868</td><td style='text-align: center; word-wrap: break-word;'>0.986</td><td style='text-align: center; word-wrap: break-word;'>0.923</td><td style='text-align: center; word-wrap: break-word;'>0.852</td><td style='text-align: center; word-wrap: break-word;'>0.975</td><td style='text-align: center; word-wrap: break-word;'>0.909</td><td style='text-align: center; word-wrap: break-word;'>0.864</td><td style='text-align: center; word-wrap: break-word;'>0.986</td><td style='text-align: center; word-wrap: break-word;'>0.921</td></tr><tr><td rowspan="4">DEPTH</td><td rowspan="2">INDOOR</td><td style='text-align: center; word-wrap: break-word;'>Isolated transits</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>1.000</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Group of persons</td><td style='text-align: center; word-wrap: break-word;'>0.975</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.988</td><td style='text-align: center; word-wrap: break-word;'>0.961</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.980</td><td style='text-align: center; word-wrap: break-word;'>0.956</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.977</td></tr><tr><td rowspan="2">OUTDOOR</td><td style='text-align: center; word-wrap: break-word;'>Isolated transits</td><td style='text-align: center; word-wrap: break-word;'>0.962</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.981</td><td style='text-align: center; word-wrap: break-word;'>0.911</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.953</td><td style='text-align: center; word-wrap: break-word;'>0.754</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.860</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Group of persons</td><td style='text-align: center; word-wrap: break-word;'>0.940</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.969</td><td style='text-align: center; word-wrap: break-word;'>0.924</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.961</td><td style='text-align: center; word-wrap: break-word;'>0.858</td><td style='text-align: center; word-wrap: break-word;'>0.996</td><td style='text-align: center; word-wrap: break-word;'>0.922</td></tr><tr><td rowspan="4">RGB $\lor$DEPTH</td><td rowspan="2">INDOOR</td><td style='text-align: center; word-wrap: break-word;'>Isolated transits</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.991</td><td style='text-align: center; word-wrap: break-word;'>0.995</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>1.000</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Group of persons</td><td style='text-align: center; word-wrap: break-word;'>0.975</td><td style='text-align: center; word-wrap: break-word;'>0.985</td><td style='text-align: center; word-wrap: break-word;'>0.980</td><td style='text-align: center; word-wrap: break-word;'>0.970</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.985</td><td style='text-align: center; word-wrap: break-word;'>0.956</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.977</td></tr><tr><td rowspan="2">OUTDOOR</td><td style='text-align: center; word-wrap: break-word;'>Isolated transits</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.975</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.987</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Group of persons</td><td style='text-align: center; word-wrap: break-word;'>0.984</td><td style='text-align: center; word-wrap: break-word;'>0.994</td><td style='text-align: center; word-wrap: break-word;'>0.989</td><td style='text-align: center; word-wrap: break-word;'>0.968</td><td style='text-align: center; word-wrap: break-word;'>0.978</td><td style='text-align: center; word-wrap: break-word;'>0.973</td><td style='text-align: center; word-wrap: break-word;'>0.953</td><td style='text-align: center; word-wrap: break-word;'>0.984</td><td style='text-align: center; word-wrap: break-word;'>0.968</td></tr></table>

---

<div style="text-align: center;">Table 3 Performance of the people counting method with different flow densities when using the RGB or the DEPTH imaging sensors on the Dataset $_{c}$. Image resolution is  $640 \times 480$, while frame rate is 30 fps.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Sensor</td><td style='text-align: center; word-wrap: break-word;'>Flow density</td><td style='text-align: center; word-wrap: break-word;'>Recall</td><td style='text-align: center; word-wrap: break-word;'>Precision</td><td style='text-align: center; word-wrap: break-word;'>f-index</td></tr><tr><td rowspan="2">RGB</td><td style='text-align: center; word-wrap: break-word;'>Isolated transits</td><td style='text-align: center; word-wrap: break-word;'>0.984</td><td style='text-align: center; word-wrap: break-word;'>0.995</td><td style='text-align: center; word-wrap: break-word;'>0.990</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Group of persons</td><td style='text-align: center; word-wrap: break-word;'>0.842</td><td style='text-align: center; word-wrap: break-word;'>0.984</td><td style='text-align: center; word-wrap: break-word;'>0.908</td></tr><tr><td rowspan="2">DEPTH</td><td style='text-align: center; word-wrap: break-word;'>Isolated transits</td><td style='text-align: center; word-wrap: break-word;'>0.980</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.990</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Group of persons</td><td style='text-align: center; word-wrap: break-word;'>0.954</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.976</td></tr><tr><td rowspan="2">RGB $\downarrow$DEPTH</td><td style='text-align: center; word-wrap: break-word;'>Isolated transits</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.995</td><td style='text-align: center; word-wrap: break-word;'>0.998</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Group of persons</td><td style='text-align: center; word-wrap: break-word;'>0.980</td><td style='text-align: center; word-wrap: break-word;'>0.989</td><td style='text-align: center; word-wrap: break-word;'>0.985</td></tr></table>

<div style="text-align: center;">Performance of the people counting method in the INDOOR and in the OUTDOOR scenarios when using the RGB or the DEPTH imaging sensor with reference to Dataset $_{c}$. Image resolution is  $640 \times 480$, while frame rate is 30 fps.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Sensor</td><td style='text-align: center; word-wrap: break-word;'>Scenario</td><td style='text-align: center; word-wrap: break-word;'>Recall</td><td style='text-align: center; word-wrap: break-word;'>Precision</td><td style='text-align: center; word-wrap: break-word;'>f-index</td></tr><tr><td rowspan="2">RGB</td><td style='text-align: center; word-wrap: break-word;'>INDOOR</td><td style='text-align: center; word-wrap: break-word;'>0.887</td><td style='text-align: center; word-wrap: break-word;'>0.987</td><td style='text-align: center; word-wrap: break-word;'>0.934</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>OUTDOOR</td><td style='text-align: center; word-wrap: break-word;'>0.924</td><td style='text-align: center; word-wrap: break-word;'>0.992</td><td style='text-align: center; word-wrap: break-word;'>0.957</td></tr><tr><td rowspan="2">DEPTH</td><td style='text-align: center; word-wrap: break-word;'>INDOOR</td><td style='text-align: center; word-wrap: break-word;'>0.988</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.994</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>OUTDOOR</td><td style='text-align: center; word-wrap: break-word;'>0.949</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.974</td></tr><tr><td rowspan="2">RGB $\downarrow$DEPTH</td><td style='text-align: center; word-wrap: break-word;'>INDOOR</td><td style='text-align: center; word-wrap: break-word;'>0.988</td><td style='text-align: center; word-wrap: break-word;'>0.988</td><td style='text-align: center; word-wrap: break-word;'>0.988</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>OUTDOOR</td><td style='text-align: center; word-wrap: break-word;'>0.992</td><td style='text-align: center; word-wrap: break-word;'>0.997</td><td style='text-align: center; word-wrap: break-word;'>0.994</td></tr></table>

会下降约 2%，而 DEPTH 图像下降 1%，而在 $160 \times 120$ 分辨率下，性能损失约为 4-5%，与传感器类型无关。 表 2 中的性能结果证实了 [^12] 中的主要发现。 与传统相机相比，利用 Kinect 传感器提供的深度信息可以实现更高的计数准确性。 深度信息可以比 RGB 相机更准确地检测前景，并且不受与照明变化、物体与背景的伪装、阴影或反射造成的伪影相关的问题的影响。 此外，我们还注意到，该算法的主要局限性是较高的假阴性率，尤其是在采用 RGB 传感器时，每十次检测中会遗漏一次。 另一方面，当使用 DEPTH 传感器时，假阳性率为零，并且可以实现 RGB 相机的精度指标为 0.990。

我们还研究了通过适当组合两个传感器的输出而实现的性能。组合是通过最大规则进行的，即对于每个路段，组合的输出（RGB $\lor$DEPTH）由每个传感器提出的最大计数值给出。实际上，由于所提出的方法在大多数配置中，精度通常高于召回率，因此所提出的两种传感器的组合在提高召回率的同时，还能保持较高的精度，这如表 2 的最后三行所示。

###### 4.2.2. 结果分析与流量密度

表 3 突出了在不同流量密度条件下的性能（孤立通过或一群人）。 对于 RGB，拥挤程度会显着影响准确性，导致 f-index 从孤立通过的情况下降 0.082，到一群人的情况。 另一方面，所考虑的方法在使用 DEPTH 传感器时获得的性能非常稳定，因为在这种情况下，变化仅为 0.014。 如同可以注意到的，两个传感器的组合比每个单独的传感器获得更高的性能，并且，更重要的是，也实现了精度和召回率之间更平衡的权衡。

![Image](images/af8b42bf3ecc152e10fe9efe24154cce641c6861bbc852a65b573db469ad1de5.jpg)

<div style="text-align: center;">Fig. 5. Performance of the method evaluated on the Dataset $_{C}$ for different values of the acquisition frame rate.</div>

###### 4.2.3. 针对场景的分析结果

表 4 提供了根据场景类型（室内或室外）汇总的结果。我们注意到，当应用于 RGB 传感器提供的图像时，该方法在室外场景中的表现略好，尽管在两种情况下，f-index 的差异仅为 0.023。可以观察到 DEPTH 传感器也存在类似的差异，但在这种情况下，在室内场景中实现了最佳性能。后一种结果是由以下事实所驱动的：阳光会降低 Kinect 传感器提供的深度图像的质量，从而增加输入图像中的噪声，这会影响前景检测过程的可靠性。然而，必须注意的是，在两种场景中，基于 DEPTH 传感器的相同方法比使用传统 RGB 图像的相同方法表现更好。我们再次指出，通过“最大”规则结合两种传感器可以实现更高且更平衡的性能，相对于每个单独的传感器。

###### 4.2.4. 针对帧速率的分析

我们还研究了视频的帧速率如何影响人群计数方法的整体性能。在图 5 中，我们显示了我们的方法在以 $_{c}$ 分辨率处理 Dataset $640 \times 480$ 中的视频时，在不同帧速率（从 30 fps 到 5 fps，步长为 5）下实现的 f-index。正如预料到的，我们注意到，帧速率越低，准确性越低。从 30 fps 到 15 fps 的性能相当稳定，但对于较低的帧速率，性能会急剧下降。这是由以下事实决定的：在低帧速率下，行人速度过快，无法按照正确的顺序激活传感器的两个单元。

###### 4.2.5. 对 Dataset $_{U}$ 的分析

先前的观察结果在分析表 5 中的结果时更加明显：在包含视频序列的具有挑战性的场景中，利用深度信息可以使所提出的方法大大优于使用 RGB 图像的方法。我们还注意到，与在 Dataset_{C} 上获得的结果相比，该方法的性能存在普遍下降。通过详细分析错误，我们发现不同的原因，如下所述。

---

## 投稿中

<div style="text-align: center;">Table 5</div>

<div style="text-align: center;">Performance achieved by the proposed method on the Dataset $_{U}$.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Sensor</td><td style='text-align: center; word-wrap: break-word;'>Flow density</td><td style='text-align: center; word-wrap: break-word;'>Recall</td><td style='text-align: center; word-wrap: break-word;'>Precision</td><td style='text-align: center; word-wrap: break-word;'>f-index</td></tr><tr><td rowspan="2">RGB</td><td style='text-align: center; word-wrap: break-word;'>Isolated transits</td><td style='text-align: center; word-wrap: break-word;'>0.947</td><td style='text-align: center; word-wrap: break-word;'>0.958</td><td style='text-align: center; word-wrap: break-word;'>0.952</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Group of persons</td><td style='text-align: center; word-wrap: break-word;'>0.762</td><td style='text-align: center; word-wrap: break-word;'>0.864</td><td style='text-align: center; word-wrap: break-word;'>0.810</td></tr><tr><td rowspan="2">DEPTH</td><td style='text-align: center; word-wrap: break-word;'>Isolated transits</td><td style='text-align: center; word-wrap: break-word;'>0.973</td><td style='text-align: center; word-wrap: break-word;'>0.973</td><td style='text-align: center; word-wrap: break-word;'>0.973</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Group of persons</td><td style='text-align: center; word-wrap: break-word;'>0.875</td><td style='text-align: center; word-wrap: break-word;'>0.983</td><td style='text-align: center; word-wrap: break-word;'>0.926</td></tr><tr><td rowspan="2">RGB\√DEPTH</td><td style='text-align: center; word-wrap: break-word;'>Isolated transits</td><td style='text-align: center; word-wrap: break-word;'>0.981</td><td style='text-align: center; word-wrap: break-word;'>0.963</td><td style='text-align: center; word-wrap: break-word;'>0.972</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Group of persons</td><td style='text-align: center; word-wrap: break-word;'>0.933</td><td style='text-align: center; word-wrap: break-word;'>0.904</td><td style='text-align: center; word-wrap: break-word;'>0.918</td></tr></table>

非均匀照明：所考虑的场景由来自不同照明点的集中光照，在人物周围投射出阴影。这通常会对基于 RGB 传感器的方法的性能产生非常负面的影响，因为这会导致虚假阳性（人物可能占据更多条纹）和虚假阴性（一行中的人物可能看起来像单个物体）；由于所使用的 DEPTH 传感器对照明具有免疫性，因此该方面不会影响此类传感器的性能。

高度密集的行人组：此数据库包含约 15 个场景，其中包含八到十二人以相反方向或同一方向穿过传感器的组。在这些情况下，DEPTH 和 RGB 传感器都倾向于低估计数。这种现象解释了该系统在与受控场景相比，在数据集上的较低召回率。

存在物体的通行场景：整个数据集总共存在大约十余种残留情况，即人员搬运物体（如椅子、人字梯、台式电脑、手推车、大袋子）或张开手臂越过虚拟线。在这类情况下，无论使用何种传感器，如果人员横向搬运物体，导致激活超过$2*\theta_{K}$个条纹，该方法就会产生误报。反之，如果物体相对于穿越线垂直延伸，则不会产生误报。一般而言，由于这类情况在实际部署中的先验发生概率通常极低，它们对整体性能的影响可以忽略不计。

### 4.3. 与其他方法的比较

在本节中，我们将提出的方法与其他两种科学文献中可用的方法进行比较。 具体来说，我们有兴趣分析与我们之前方法在 [^12] 中引入的新预处理阶段相比，性能的改进；此外，我们还希望将我们的方法与基于跟踪的人数统计方法进行比较。 为了实现这一目标，我们实现了一种使用跟踪方法的人数统计方法，该方法受到 [^1] 中描述的方法的启发，并在跟踪到的 blob 的质心越过虚拟线时生成计数事件。 表 6 报告了所提出的方法（包括和不包括预处理阶段）与基于跟踪的方法之间的性能比较。 实验是在 Dataset $_{C}$ 的视频中进行的，帧率为 30 帧/秒，分辨率为 $640 \times 480$。

提出的方法在召回率和精度方面实现了最佳性能。 与 [^12] 方法的比较表明，通过应用预处理步骤，我们可以在 RGB 或 DEPTH 图像上提高准确性。 高斯滤波器一方面可以减少图像中噪声引起的误报，另一方面也可以减少由于传感器激活序列评估不正确而引起的漏报。 基于跟踪的方法的性能明显低于我们的方法，结果证实了我们避免使用跟踪方法的选择是合理的。 实际上，使用跟踪算法可能会导致许多误报和漏报，因为前景检测伪影会导致 blob 分裂或合并。 在 RGB 室内场景中，主要问题是反射的存在，而在 RGB 户外场景中，阴影会导致大多数错误。 使用 DEPTH 传感器时，没有反射和阴影的问题，但是 blob 分裂或合并以及缺乏依赖于越过物体的尺寸的计数算法会导致许多错误。

#### 4.4. 算法效率分析

我们分析了该方法在以下三个处理平台上的计算需求：

1. Intel(R) Core(TM) i7-3770S CPU @ 3.10 GHz，具有 4GB 的 RAM（以下称为 PC 平台）。

2. 400~MHz 多线程 RISC CPU，具有 0.5GB 的 RAM（以下称为 MIPS 平台）。

3. ARMv7 Processor rev 5 (v7l)，具有 1 个 600~MHz CPU，以及 0.8GB 的 RAM（以下称为 ARM 平台）。

这三种平台被选择是因为它们可以被认为是实际部署中使用的计算架构的代表。事实上，PC 平台代表最常见的场景，即当大量摄像头连接到中央工作站时，会运行多个人员计数算法来实时处理视频流（服务器端执行）。对第二个考虑的平台，即 MIPS 平台进行的分析，可以考虑所谓的边缘侧执行，其中人员计数直接在采集设备上执行；人们对这种分布式架构的兴趣很大，在这种架构中，处理是在边缘进行的，而摄像头只是一个传感器，向中央数据收集工作站提供计数信息。在摄像头上执行计数有两种主要优点。首先，无需将整个视频流通过网络发送到中央服务器，只需每位行人通过时发送几个字节，从而不会影响网络。其次，分布式架构可以克服使用 PC 平台的集中式安装中存在的单点故障问题。另一方面，需要注意的是，边缘侧执行会带来一个问题，即需要对软件进行适当的工程设计，以便在通常在摄像头中可用的低处理能力 CPU 上运行。第三种架构大致介于前两种之间（我们将这种场景称为服务器到边缘执行），因为它使用低功耗单板计算机来实现，这些计算机的处理能力高于摄像头，但低于标准 PC。这种情况可能发生在需要处理大量不支持嵌入式执行的摄像头的安装中，并且摄像头通常分布在小型的本地组（通常少于十个设备），但这些组分布在地理网络上（例如，大型零售连锁店在全球各地拥有多家商店，并且在每家商店中部署了几个计数系统来监控入口和出口）。

<div style="text-align: center;">Table 6</div>

<div style="text-align: center;">Overall performance comparison between the proposed method with the pre-processing stage, without the pre-processing stage as described in [^12] and the tracking line sensor on the Dataset $_{C}$.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Sensor</td><td style='text-align: center; word-wrap: break-word;'>Method</td><td style='text-align: center; word-wrap: break-word;'>TP</td><td style='text-align: center; word-wrap: break-word;'>FN</td><td style='text-align: center; word-wrap: break-word;'>FP</td><td style='text-align: center; word-wrap: break-word;'>Recall</td><td style='text-align: center; word-wrap: break-word;'>Precision</td><td style='text-align: center; word-wrap: break-word;'>f-index</td></tr><tr><td rowspan="3">RGB</td><td style='text-align: center; word-wrap: break-word;'>Proposed method with pre-processing</td><td style='text-align: center; word-wrap: break-word;'>879</td><td style='text-align: center; word-wrap: break-word;'>89</td><td style='text-align: center; word-wrap: break-word;'>9</td><td style='text-align: center; word-wrap: break-word;'>0.908</td><td style='text-align: center; word-wrap: break-word;'>0.990</td><td style='text-align: center; word-wrap: break-word;'>0.947</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Proposed method without pre-processing</td><td style='text-align: center; word-wrap: break-word;'>874</td><td style='text-align: center; word-wrap: break-word;'>94</td><td style='text-align: center; word-wrap: break-word;'>20</td><td style='text-align: center; word-wrap: break-word;'>0.903</td><td style='text-align: center; word-wrap: break-word;'>0.978</td><td style='text-align: center; word-wrap: break-word;'>0.939</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Tracking method</td><td style='text-align: center; word-wrap: break-word;'>793</td><td style='text-align: center; word-wrap: break-word;'>175</td><td style='text-align: center; word-wrap: break-word;'>177</td><td style='text-align: center; word-wrap: break-word;'>0.819</td><td style='text-align: center; word-wrap: break-word;'>0.818</td><td style='text-align: center; word-wrap: break-word;'>0.818</td></tr><tr><td rowspan="3">DEPTH</td><td style='text-align: center; word-wrap: break-word;'>Proposed method with pre-processing</td><td style='text-align: center; word-wrap: break-word;'>935</td><td style='text-align: center; word-wrap: break-word;'>33</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0.966</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.983</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Proposed method without pre-processing</td><td style='text-align: center; word-wrap: break-word;'>928</td><td style='text-align: center; word-wrap: break-word;'>40</td><td style='text-align: center; word-wrap: break-word;'>0</td><td style='text-align: center; word-wrap: break-word;'>0.959</td><td style='text-align: center; word-wrap: break-word;'>1.000</td><td style='text-align: center; word-wrap: break-word;'>0.979</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Tracking method</td><td style='text-align: center; word-wrap: break-word;'>852</td><td style='text-align: center; word-wrap: break-word;'>116</td><td style='text-align: center; word-wrap: break-word;'>77</td><td style='text-align: center; word-wrap: break-word;'>0.880</td><td style='text-align: center; word-wrap: break-word;'>0.917</td><td style='text-align: center; word-wrap: break-word;'>0.898</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>RGB\√DEPTH</td><td style='text-align: center; word-wrap: break-word;'>Proposed method with pre-processing</td><td style='text-align: center; word-wrap: break-word;'>958</td><td style='text-align: center; word-wrap: break-word;'>10</td><td style='text-align: center; word-wrap: break-word;'>7</td><td style='text-align: center; word-wrap: break-word;'>0.990</td><td style='text-align: center; word-wrap: break-word;'>0.993</td><td style='text-align: center; word-wrap: break-word;'>0.991</td></tr></table>

---

<div style="text-align: center;">Frame processing time in microseconds and profiling of the proposed method on the Dataset $_{C}$ at different resolutions.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'></td><td colspan="3">$640 \times 480$</td><td colspan="3">$320 \times 240$</td><td colspan="3">$160 \times 120$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>PC</td><td style='text-align: center; word-wrap: break-word;'>ARM</td><td style='text-align: center; word-wrap: break-word;'>MIPS</td><td style='text-align: center; word-wrap: break-word;'>PC</td><td style='text-align: center; word-wrap: break-word;'>ARM</td><td style='text-align: center; word-wrap: break-word;'>MIPS</td><td style='text-align: center; word-wrap: break-word;'>PC</td><td style='text-align: center; word-wrap: break-word;'>ARM</td><td style='text-align: center; word-wrap: break-word;'>MIPS</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Pre-processing</td><td style='text-align: center; word-wrap: break-word;'>551</td><td style='text-align: center; word-wrap: break-word;'>6623</td><td style='text-align: center; word-wrap: break-word;'>22,386</td><td style='text-align: center; word-wrap: break-word;'>136</td><td style='text-align: center; word-wrap: break-word;'>1551</td><td style='text-align: center; word-wrap: break-word;'>4155</td><td style='text-align: center; word-wrap: break-word;'>33</td><td style='text-align: center; word-wrap: break-word;'>364</td><td style='text-align: center; word-wrap: break-word;'>709</td></tr><tr><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>10.3%</td><td style='text-align: center; word-wrap: break-word;'>10.9%</td><td style='text-align: center; word-wrap: break-word;'>10.8%</td><td style='text-align: center; word-wrap: break-word;'>9.7%</td><td style='text-align: center; word-wrap: break-word;'>10.0%</td><td style='text-align: center; word-wrap: break-word;'>9.4%</td><td style='text-align: center; word-wrap: break-word;'>9.1%</td><td style='text-align: center; word-wrap: break-word;'>9.1%</td><td style='text-align: center; word-wrap: break-word;'>7.7%</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Foreground detection</td><td style='text-align: center; word-wrap: break-word;'>3241</td><td style='text-align: center; word-wrap: break-word;'>41,377</td><td style='text-align: center; word-wrap: break-word;'>1,599,332</td><td style='text-align: center; word-wrap: break-word;'>821</td><td style='text-align: center; word-wrap: break-word;'>10,424</td><td style='text-align: center; word-wrap: break-word;'>34,344</td><td style='text-align: center; word-wrap: break-word;'>209</td><td style='text-align: center; word-wrap: break-word;'>2628</td><td style='text-align: center; word-wrap: break-word;'>7099</td></tr><tr><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>60.4%</td><td style='text-align: center; word-wrap: break-word;'>68.1%</td><td style='text-align: center; word-wrap: break-word;'>76.8%</td><td style='text-align: center; word-wrap: break-word;'>58.6%</td><td style='text-align: center; word-wrap: break-word;'>67.1%</td><td style='text-align: center; word-wrap: break-word;'>77.5%</td><td style='text-align: center; word-wrap: break-word;'>58.3%</td><td style='text-align: center; word-wrap: break-word;'>65.4%</td><td style='text-align: center; word-wrap: break-word;'>77.4%</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Background update</td><td style='text-align: center; word-wrap: break-word;'>3</td><td style='text-align: center; word-wrap: break-word;'>54</td><td style='text-align: center; word-wrap: break-word;'>4295</td><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>17</td><td style='text-align: center; word-wrap: break-word;'>1086</td><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>8</td><td style='text-align: center; word-wrap: break-word;'>298</td></tr><tr><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>0.1%</td><td style='text-align: center; word-wrap: break-word;'>0.1%</td><td style='text-align: center; word-wrap: break-word;'>2.1%</td><td style='text-align: center; word-wrap: break-word;'>0.1%</td><td style='text-align: center; word-wrap: break-word;'>0.1%</td><td style='text-align: center; word-wrap: break-word;'>2.5%</td><td style='text-align: center; word-wrap: break-word;'>0.2%</td><td style='text-align: center; word-wrap: break-word;'>0.2%</td><td style='text-align: center; word-wrap: break-word;'>3.3%</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Counting</td><td style='text-align: center; word-wrap: break-word;'>1574</td><td style='text-align: center; word-wrap: break-word;'>12,968</td><td style='text-align: center; word-wrap: break-word;'>21,347</td><td style='text-align: center; word-wrap: break-word;'>445</td><td style='text-align: center; word-wrap: break-word;'>3542</td><td style='text-align: center; word-wrap: break-word;'>4713</td><td style='text-align: center; word-wrap: break-word;'>116</td><td style='text-align: center; word-wrap: break-word;'>1016</td><td style='text-align: center; word-wrap: break-word;'>1062</td></tr><tr><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>29.3%</td><td style='text-align: center; word-wrap: break-word;'>20.9%</td><td style='text-align: center; word-wrap: break-word;'>10.3%</td><td style='text-align: center; word-wrap: break-word;'>31.7%</td><td style='text-align: center; word-wrap: break-word;'>22.8%</td><td style='text-align: center; word-wrap: break-word;'>10.6%</td><td style='text-align: center; word-wrap: break-word;'>32.4%</td><td style='text-align: center; word-wrap: break-word;'>25.3%</td><td style='text-align: center; word-wrap: break-word;'>11.6%</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Total FPS</td><td style='text-align: center; word-wrap: break-word;'>189</td><td style='text-align: center; word-wrap: break-word;'>17</td><td style='text-align: center; word-wrap: break-word;'>5</td><td style='text-align: center; word-wrap: break-word;'>728</td><td style='text-align: center; word-wrap: break-word;'>65</td><td style='text-align: center; word-wrap: break-word;'>23</td><td style='text-align: center; word-wrap: break-word;'>2855</td><td style='text-align: center; word-wrap: break-word;'>254</td><td style='text-align: center; word-wrap: break-word;'>109</td></tr></table>

执行会带来一个问题，即需要对软件进行适当的工程设计，以便在通常在摄像头中可用的低处理能力 CPU 上运行。第三种架构大致介于前两种之间（我们将这种场景称为服务器到边缘执行），因为它使用低功耗单板计算机来实现，这些计算机的处理能力高于摄像头，但低于标准 PC。这种情况可能发生在需要处理大量不支持嵌入式执行的摄像头的安装中，并且摄像头通常分布在小型的本地组（通常少于十个设备），但这些组分布在地理网络上（例如，大型零售连锁店在全球各地拥有多家商店，并且在每家商店中部署了几个计数系统来监控入口和出口）。

在表 7 中，我们报告了所提出的方法中每个处理阶段，在每个平台和每个考虑的三种分辨率下的处理时间，这些时间以微秒为绝对值表示，也以帧百分比表示。数据代表数据集 $_{C}$ 中所有视频的平均处理时间。前景检测是整个处理中最耗费计算资源的一步，在每个平台上都需要至少 60% 的时间，而背景更新阶段的优化可以使该阶段对处理时间的影响变得可以忽略不计。我们还注意到，预处理阶段对整体计算时间的影响较小，但并非可以忽略不计，约占 10%。此外，在不同的平台之间，处理时间存在很大的差异；从服务器端执行（PC 平台）到服务器到边缘执行（ARM 平台），处理时间增加了约一个数量级，而使用 MIPS 平台（边缘侧执行）的处理时间又增加了约一个数量级。

另外值得关注的是表7中的结果：表中统计了我们使用本文提出的人数统计方法，在数据集$_{C}$的原始$640 \times 480$分辨率，以及缩放后的$320 \times 240$和$160 \times 120$分辨率下，各平台平均每秒处理的帧数（总FPS）。不出所料，当水平和垂直分辨率都减半后，平均每秒处理帧数提升为原来的四倍。在$640 \times 480$分辨率下，该方法在服务器单核上可实现189 FPS的处理速度，在$320 \times 240$分辨率下处理速度超过700 FPS，在$160 \times 120$分辨率下甚至可以达到2855 FPS。在ARM平台上，该方法可以达到17 FPS的处理速度，满足实际场景的部署要求（参见4.2节和图5）。相反，MIPS平台在$640 \times 480$分辨率下的处理帧率仅为5 FPS，远低于实现可靠人数统计所需的最低建议帧率。但在$320 \times 240$分辨率下，该平台可以达到23 FPS，在$160 \times 120$分辨率下处理速度超过100 FPS。正如4.2节所述，将分辨率缩小为原来的二分之一或四分之一，会带来2%到5%的精度损失。因此，MIPS平台可以在接受小幅精度下降的前提下，在分辨率不高于$320 \times 240$时实现可靠的人数统计。

此外，重要的是要记住，所提出的方法的软件实现没有利用任何代码并行化，因此它无法从某些平台（例如 ARM 和 PC）上可用的多个核心中受益。 为了结果的可比性，我们为每个平台在单个视频流上运行测试； 但是，从未在本论文中报告的实验中，我们验证了给定 fps 下的处理流数与核心数成线性比例。

#### 5. 结论

在本文中，我们提出了一种新的从俯视摄像头计数人员的方法。 该方法特别设计用于考虑两个可能阻碍在实际场景中应用的主要问题：计数性能和计算效率。 通过定义一种基于前景检测和背景更新来检测穿过虚拟计数线的行人，以及采用有限状态自动机来确定跨越方向的传感器，实现了第一个目标； 这种方法比基于对象跟踪的方法更稳健。 通过仔细实现软件来消除浮点运算、使用处理器的 SIMD 指令并减少背景更新率，实现了计算效率的目标。

该方法已在一个图像数据集上进行验证，该数据集是专门设计和收集的，以解决在典型安装中可能影响计数性能的主要问题：采集技术（传统 RGB 摄像头和深度传感器）、安装场景（室内和室外）、人群密度（独立的人和人群）、采集帧速率（从 5 到 30 fps，步长为 5）、图像分辨率（$160 \times 120$，$320 \times 240$ 和 $640 \times 480$）。 结果表明，可以使用传统的 RGB 摄像头和深度传感器以相同的性能（f-index = 0.99）检测独立的行人。 当使用密度较高的行人群时，也可以使用深度传感器获得相似的性能，但当使用 RGB 摄像头检测人群时，性能会显著下降。 结果还表明，同时采用 DEPTH 和 RGB 传感器可以提高性能，这使得系统可以在误报和漏报之间实现更平衡的权衡。 图像分辨率也会影响该方法的性能，性能会随着分辨率的降低而平滑下降。 另一方面，我们注意到，当图像采集速率降到低于某个阈值时，性能会急剧下降，对于本文中使用的典型人群计数设置，该阈值约为 15 fps。 该方法还已在三个

---

不同的计算机架构在计算能力方面存在很大差异，结果表明，所提供的该方法的实现可以在低功耗设备上以$320 \times 240$分辨率实时处理，而这些设备通常嵌入在商用智能相机中，同时，它可以在高端工作站的每个CPU核心上同时处理十多个$640 \times 480$流。

### 感谢

本工作部分由意大利坎帕尼亚大区在“嵌入式系统在关键领域”项目中资助，该项目由 POR 坎帕尼亚 FSE 2007/2013 资助，以及由萨莱诺大学的衍生公司 A.I. Tech srl 资助。

### 参考文献

### 参考文献

[^1]: C.-H. Chen, T.-Y. Chen, D.-J. Wang, T.-J. Chen, A cost-effective people-counter for a crowd of moving people based on two-stage segmentation, J. Inf. Hiding Multimed. Signal Process. 3 (1) (2012) 2073–4212.

[^2]: J. Barandiaran, B. Murguia, F. Boto, Real-time people counting using multiple lines, in: Proceedings of the Ninth International Workshop on Image Analysis for Multimedia Interactive Services, WIAMIS'08, IEEE, 2008, pp. 159–162.

[^3]: T.-H. Chen, T.-Y. Chen, Z.-X. Chen, An intelligent people-flow counting method for passing through a gate, in: Proceedings of 2006 IEEE Conference on Robotics, Automation and Mechatronics, IEEE, 2006, pp. 1–6.

[^4]: B. Antic, D. Letic, D. Culibrk, V. Crnojevic, K-means based segmentation for real-time zenithal people counting, in: Proceedings of 2009 16th IEEE International Conference on Image Processing, ICIP, IEEE, 2009, pp. 2565–2568.

[^5]: S. Mukherjee, B. Saha, I. Jamal, R. Leclerc, N. Ray, Anovel framework for automatic passenger counting, in: Proceedings of 2011 18th IEEE International Conference on Image Processing, ICIP, IEEE, 2011, pp. 2969–2972.

[^6]: K. Terada, D. Yoshida, S. Oe, J. Yamaguchi, A method of counting the passing people by using the stereo images, in: Proceedings of 1999 International Conference on Image Processing, ICIP'99, vol. 2, IEEE, 1999, pp. 338–342.

[^7]: T. Yahiaoui, C. Meurie, L. Khoudour, F. Cabestaing, A people counting system based on dense and close stereovision, in: Image and Signal Processing, Springer, 2008, pp. 59–66.

[^8]: T. Van Oosterhout, S. Bakkes, B.J. Kröse, Head detection in stereo data for people counting and segmentation., in: Proceedings of International Conference on Computer Vision Theory and Applications, VISAPP, 2011, pp. 620–625.

[^9]: X. Zhang, J. Yan, S. Feng, Z. Lei, D. Yi, S.Z. Li, Water filling: Unsupervised people counting via vertical kinect sensor, in: Proceedings of 2012 IEEE Ninth International Conference on Advanced Video and Signal-Based Surveillance, AVSS, IEEE, 2012, pp. 215–220.

[^10]: P. Vera, D. Zenteno, J. Salas, Counting pedestrians in bidirectional scenarios using zenithal depth images, in: Pattern Recognition, Springer, 2013, pp. 84–93.

[^11]: H. Fu, H. Ma, H. Xiao, Scene-adaptive accurate and fast vertical crowd counting via joint using depth and color information, Multimed. Tools Appl. 73 (1) (2014) 273–289.

[^12]: L. Del Pizzo, P. Foggia, A. Greco, G. Percannella, M. Vento, A versatile and effective method for counting people on either RGB or depth overhead cameras, in: Proceedings of 2015 IEEE International Conference on Multimedia Expo Workshops, ICMEW, 2015, pp. 1–6, doi:10.1109/ICMEW.2015.7169795.

[^13]: R.J. Radke, S. Andra, O. Al-Kofahi, B. Roysam, Image change detection algorithms: a systematic survey, IEEE Trans. Image Process. 14 (3) (2005) 294–307.

[^14]: Y. Benezeth, P.-M. Jodoin, B. Emile, H. Laurent, C. Rosenberger, Review and evaluation of commonly-implemented background subtraction algorithms, in: Proceedings of the 19th International Conference on Pattern Recognition, ICPR 2008, IEEE, 2008, pp. 1–4.

[^15]: T. Bouwmans, F. El Baf, B. Vachon, Background modeling using mixture of Gaussians for foreground detection-a survey, Recent Pat. Comput. Sci. 1 (3) (2008) 219–237.

[^16]: S. Brutzer, B. Höferlin, G. Heidemann, Evaluation of background subtraction techniques for video surveillance, in: Proceedings of 2011 IEEE Conference on Computer Vision and Pattern Recognition, CVPR, IEEE, 2011, pp. 1937–1944.

[^17]: A. Sobral, A. Vacavant, A comprehensive review of background subtraction algorithms evaluated with synthetic and real videos, Comput. Vis. Image Underst. 122 (2014) 4–21.

[^18]: A. Sanin, C. Sanderson, B.C. Lovell, Shadow detection: A survey and comparative evaluation of recent methods, Pattern Recognit. 45 (4) (2012) 1684–1695.

[^19]: A. Prati, I. Mikic, M.M. Trivedi, R. Cucchiara, Detecting moving shadows: algorithms and evaluation, IEEE Trans. Pattern Anal. Mach. Intell. 25 (7) (2003) 918–923.

[^20]: D. Conte, P. Foggia, G. Percannella, M. Vento, Removing object reflections in videos by global optimization, IEEE Trans. Circuits Syst. Video Technol. 22 (11) (2012) 1623–1633.

[^21]: D. Conte, P. Foggia, G. Percannella, F. Tufano, M. Vento, An experimental evaluation of foreground detection algorithms in real scenes, EURASIP J. Adv. Signal Process. 2010 (2010) 1–11, no. 373941, doi:10.1155/2010/373941.

[^22]: A. Ellin, G. Dolsak, The design and application of rotary encoders, Sens. Rev. 28 (2) (2008) 150–158, doi:10.1108/02602280810856723.

[^23]: V. Carletti, L. Del Pizzo, G. Percannella, M. Vento, Foreground detection optimization for SoCs embedded on smart cameras, in: Proceedings of the International Conference on Distributed Smart Cameras, ICDSC, ACM, New York, NY, USA, 2014, Article 31, 5 pages, doi:10.1145/2659021.2659060.
