
# 一种基于立体视觉与DSP的人群计数新方法

朱秋雨、唐莉、姜一平

通信与信息工程学院

上海大学

中国 上海 200072

电子邮箱：<mailto:zhuqiuyu@staff.shu.edu.cn>

邓卫军

上海交投信息科技有限公司

中国 上海 200433

电子邮箱：<mailto:dengwj2010@163.com>

摘要——本文提出了一种新型人群计数方法，用于对平行固定双目摄像头监控区域内的通行人数进行统计。首先，设置两条虚拟计数线，得到四张线时空灰度图像。随后提出一种基于双目立体视觉与区域灰度投影的集成算法，用于在复杂计数环境中提取并分割重叠的运动目标。最后在时空视差图中完成目标匹配与计数工作。该计数算法充分利用了目标的二维与三维信息，并已在DSP硬件系统上实现。实际测试结果表明，本文提出的系统可实时运行，在人群拥挤的环境下计数准确率可达96%以上。

关键词——人群计数；视差图；目标检测；目标分割；立体视觉；TMS320DM642

## 一、引言

交通系统、商场、展览馆等诸多企业都十分关注对应场所的人流量，例如交通系统的客流量、商场的进店客流、展会的参展人数等。人群计数系统对这类机构而言十分重要，尤其在优化管理、安全监控和提升服务质量方面意义重大。因此，自动计数系统的研究具有很高的实用价值。

目前，基于图像处理的人群计数技术已成为研究热点。已有大量方法通过分析摄像机拍摄的序列图像实现行人计数 [^1] [^2] [^3]。但这类方法无法正确应对行人拥挤、光照变化、阴影明显的复杂计数场景。由于复杂环境下单摄像头难以将人物从背景中提取出来，因此立体视觉 [^4] [^5] 被用于解决单摄像头难以处理的问题。本文提出了一种基于立体视觉的新型人群计数方法，并利用德州仪器（TI）的高性能DSP芯片TMS320DM642 [^6] 实现了一套实时计数硬件系统。

### 二、本文提出的计数系统

在本文提出的方案中，立体相机安装在闸门顶部，相机光轴保持竖直向下，如图1所示。通过这种布置，我们可以从正上方观测经过的行人，大幅缓解行人重叠问题。为减少计算量并判断行人移动方向，我们在监控区域设置了两条虚拟计数线（进线L1和出线L2）。采集计数线的图像数据后，将最新的100行数据沿时间轴排列形成一幅图像，最终我们从两条计数线得到四幅图像，如图2所示，本文将其称为线时空图像。

计数算法分为三个步骤：根据行人高度进行目标检测；根据行人的灰度和深度信息进行目标分割；在视差图中完成目标匹配与计数。

![Image](images/b559f7d1497ec6976398b912ea5a30c8f06bc4ce46b5c889463732d975e81059.jpg)

<div style="text-align: center;">Figure 1. Setting of the counting system using the stereo camera</div>

![Image](images/c5488a4a11cd936e174fbf004beb8aa8f2e688a5cfe0dc8a2db02172d1f98ffd.jpg)

![Image](images/0318a7eb906fd75db3ae72e392df67e11aae510113f6c1a998ee94c7adea5d49.jpg)

<div style="text-align: center;">Figure 2. Line space-time images of two counting lines: (a) L1 of left camera; (b) L2 of left camera; (c) L1 of right camera; (d) L2 of right camera.</div>

---

### 三、目标检测

在本文提出的系统中，我们使用平行立体相机提取目标。众所周知，视差与目标距离之间的公式[^7]为$p = bf/d$，其中b和f分别为基线距离和焦距，d是空间物点到相机像平面的垂直距离，p是空间点的视差。我们根据身高检测经过的行人。

### A. 视差图

本文采用基于区域的图像匹配方法获取稠密视差图。由于L1和L2均为极线，匹配窗口可降为一维。我们采用归一化互相关（NCC）准则[^8]寻找最优匹配像素。

为了加速视差计算，首先通过行帧差检测出可能的目标像素，随后通过一维窗口（宽度为w）相关匹配对这些像素的视差进行计算，方法如下：

 $$ \rho(d)=\frac{\displaystyle\sum_{m=-w}^{m=w}(f_{r}(j+m,t)-\overline{f_{r}(j,t)})(f_{l}(j+d+m,t)-\overline{f_{l}(j+d,t)})}{\sqrt{\sum_{m=-w}^{m=w}(f_{r}(j+m,t)-\overline{f_{r}(j,t)})^{2}}\sqrt{\sum_{m=-w}^{m=w}(f_{l}(j+d+m,t)-\overline{f_{l}(j+d,t)})^{2}}} $$

其中$f_{r}$和$f_{l}$分别为右、左线时空图像的灰度强度，$\overline{f_{r}}$、$\overline{f_{l}}$分别为二者在相关窗口内的平均值，d表示窗口沿左线时空图像极线方向的位移，$\rho$表示两个匹配窗口的相似度。

视差d对应$\rho(d)$取最大值时的位移。对NCC值$\rho(d)$进行二次插值后，即可在右线时空图像中得到最优亚像素匹配位置，最终得到两幅线时空图像的视差图。

### B. 目标区域检测

在本计数系统中，我们感兴趣的目标比背景更靠近传感器。目标距离传感器越近，得到的视差就越大。因此，如果线时空图像中存在行人，视差图中就会出现若干更亮的区域。

为了消除背景干扰、检测运动目标，我们设置阈值$T_{d}$，在视差图中分割出行人头部，通过式(2)检测目标区域。

 $$ d\left(i,j\right)=\left\{\begin{aligned}&g\left(i,j\right)&\quad&g\left(i,j\right)\geq T_{d}\\ &0&\quad&others\end{aligned}\right. $$

其中$g(i,j)$和$d(i,j)$分别为视差图中目标检测前后的灰度值，$T_{d}$由具体应用环境和双目相机安装高度确定。经过阈值处理和目标标记后，我们得到目标的左上角$(y_{T}, x_{L})$和右下角$(y_{B}, x_{R})$位置。对应图2(a)和(b)的两幅视差图如图3所示。

![Image](images/74fd7a0e7d59c55bd20b6c66d1a26f2d31f9606614782f2b09fd0fbba0710293.jpg)

<div style="text-align: center;">(a)</div>

![Image](images/916a29c6fac5fac43dd37be44d207878ee0a9e22f5d92b75496ec9f159d56f97.jpg)

<div style="text-align: center;">(b)</div>

<div style="text-align: center;">Figure 3. Disparity maps corresponding to the left line space-time image: (a) in-line L1; (b) out-line L2</div>

### 四、目标分割

当拥挤人群通过计数场景时，许多现有计数方法都难以获得较高的准确率。拥挤场景下运动目标往往容易发生粘连，该问题会干扰计数过程，导致计数误差升高。本文首先根据目标高度检测目标，这一步骤可以消除光照变化、阴影等不良影响。但当两个行人并排行走，且身高相近或仅相差一个头的高度时，仅依靠目标视差无法正确分割粘连目标。针对该问题，本文采用一种结合目标区域灰度投影的新方法，分割多人粘连区域。根据实验结果分析，每个目标可归入三种情况之一，分别处理如下（s为目标面积，$w = x_{R} - x_{L}$为目标宽度）：

1) 若满足$w \geq w_{max}$和$s \geq s_{min}$，则先使用后文将讨论的目标区域投影拆分目标，再通过目标视差进行分割；

2) 若满足$\min \leq w \leq w_{\max}$，则仅根据视差分割目标；

3) 若不满足上述情况，则丢弃该目标。

其中$[w_{min}, w_{max}]$和$s_{min}$分别是视差图中单人目标的宽度范围和最小面积。

假设目标矩形大小为$M \times N$（M和N分别为矩形的高度和宽度），其左下角坐标为$(i,j)$。我们沿行人运动方向进行灰度投影完成分割，每列的投影计算如式(3)和式(4)所示

 $$ h(n)=255-\sum_{m=i-M+1}^{i}k(m,n)f(m,n)\bigg/N_{0}\qquad n\in(j,j+N)\ ( $$

 $$ k\left(m,n\right)=\left\{\begin{aligned}&1&\quad&d\left(m,n\right)\neq0\\ &0&\quad&d\left(m,n\right)=0\\ \end{aligned}\right. $$

---

其中$f(m,n)$和$d(m,n)$分别为线灰度时空图像和视差图强度，$N_{0}$为视差非零的像素数量。示例如图4所示。针对行人头发颜色较深的粘连情况，利用上述方法可以成功完成分割。

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

![Image](images/a3b4e5b4b47ae5e042cdc4ca92a5b29ef3839fcd64edb50497052c27b3ca4a3a.jpg)

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

![Image](images/d891224fa0b5769714fa97aec0c23db6f5dcfda712b2921333a26a6005168572.jpg)

<div style="text-align: center;">(a)</div>

![Image](images/407470b947ed69cabe2a894f431bab4c6bc6af4b1bfbf5835586b28ffa98f1fe.jpg)

<div style="text-align: center;">(b)</div>

<div style="text-align: center;">(c)</div>

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

![Image](images/2be64ac79320f62d6916c642eb40f711cbac4b77ab60ed97d3b403b065798d69.jpg)

<div style="text-align: center;">Figure 4. Disparity maps corresponding to the left line space-time image: (a) line space-time image; (b) disparity map; (c) projection histogram of object region; (d) the result of segmentation</div>

### 五、目标匹配与计数

当一个目标出现在进线视差图中时，我们需要在出线视差图中搜索同一个行人。有时匹配区域内存在两个或多个目标，此时可通过代价函数选择最优匹配目标：

 $$ F\left(x,y_{n}\right)=aS\left(x,y_{n}\right)+bD_{x}\left(x,y_{n}\right)+cD_{y}\left(x,y_{n}\right) $$

该代价函数用于衡量进线视差图中的目标x与出线视差图中的目标$y_{n}$之间的相似度。$S(x,y_{n})$、$D_{x}(x,y_{n})$和$D_{y}(x,y_{n})$分别表示x与$y_{n}$之间的平均视差差、水平方向距离和时间方向距离。a、b、c为权重系数，根据实验结果分别设置为0.4、0.4、0.2。最优匹配目标为代价最小的$y_{n}$。

得到一对匹配目标后，我们可以根据该行人在两张视差图中的相对位置判断其运动方向：若行人进入计数场景，他会首先出现在进线视差图中，反之则出现在出线视差图中。

### 六、系统硬件架构与软件

许多基于立体视觉和全局运动目标跟踪的现有计数系统都无法满足实时性要求。本文提出的算法计算量小，易于实现实时运行。我们采用德州仪器（TI）的高性能DSP芯片TMS320DM642设计并实现了一套实时计数硬件系统，其主要架构如图5所示。

![Image](images/289d5b8237973fa1c5e0db4485cd3a7d02dafccfb57737aa53b947386f331bc6.jpg)

<div style="text-align: center;">Figure 5. Diagram of hardware system</div>

系统采集双目摄像头输出的两路同步模拟视频信号，集成的红外LED光源可在夜间获取高质量灰度图像。人数统计算法可在DM642芯片上运行，计数结果通过McBsp串口传输到监控计算机，处理后的视频经编码后可在显示器上输出显示。

![Image](images/09a2cb7311a13606c1c88d1f6e7426d756350b09b2b370e1412997fb9615d68f.jpg)

<div style="text-align: center;">Figure 6. Software processing flowchart of the proposed counting method</div>

---

软件编程方面，我们在集成开发环境CCS和DSP/BIOS中，结合C语言与汇编语言实现了图像处理和人数统计算法，该计数系统的程序流程图如图6所示。

### 七、实验结果

大量实际测试表明，本文提出的计数算法和硬件系统能够实现每秒25帧的实时计数，且稳定性优异。为了验证计数算法的有效性，我们在行人拥挤程度不同、计数背景不同的多种场景下对系统开展了多次测试。表1中，编号1、2、3分别对应单人依次通过、两人紧邻/并排通过、两人以上结伴通过计数区域的场景；E1代表理想背景环境，E2代表存在严重光照变化和阴影的复杂计数场景。计数结果表明，在上述所有计数环境中，系统的误差率均低于4%。

<div style="text-align: center;">TABLE I. COUNTING RESULTS IN DIFFERENT ENVIRONMENTS</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>No.</td><td style='text-align: center; word-wrap: break-word;'>Environ-ment</td><td style='text-align: center; word-wrap: break-word;'>Actual persons (in/out)</td><td style='text-align: center; word-wrap: break-word;'>Counting results (in/out)</td><td style='text-align: center; word-wrap: break-word;'>Error rate (%) (in/out)</td></tr><tr><td rowspan="2">1</td><td style='text-align: center; word-wrap: break-word;'>E1</td><td style='text-align: center; word-wrap: break-word;'>250/256</td><td style='text-align: center; word-wrap: break-word;'>250/255</td><td style='text-align: center; word-wrap: break-word;'>0.00/-0.39</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>E2</td><td style='text-align: center; word-wrap: break-word;'>200/201</td><td style='text-align: center; word-wrap: break-word;'>199/200</td><td style='text-align: center; word-wrap: break-word;'>-0.50/-0.50</td></tr><tr><td rowspan="2">2</td><td style='text-align: center; word-wrap: break-word;'>E1</td><td style='text-align: center; word-wrap: break-word;'>211/220</td><td style='text-align: center; word-wrap: break-word;'>207/217</td><td style='text-align: center; word-wrap: break-word;'>-1.90/-1.36</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>E2</td><td style='text-align: center; word-wrap: break-word;'>198/200</td><td style='text-align: center; word-wrap: break-word;'>194/198</td><td style='text-align: center; word-wrap: break-word;'>-2.02/-1.00</td></tr><tr><td rowspan="2">3</td><td style='text-align: center; word-wrap: break-word;'>E1</td><td style='text-align: center; word-wrap: break-word;'>240/243</td><td style='text-align: center; word-wrap: break-word;'>247/235</td><td style='text-align: center; word-wrap: break-word;'>+2.92/-3.29</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>E2</td><td style='text-align: center; word-wrap: break-word;'>210/210</td><td style='text-align: center; word-wrap: break-word;'>218/216</td><td style='text-align: center; word-wrap: break-word;'>+3.81/+2.86</td></tr></table>

### 八、结论

本文提出了一种基于立体视觉和DSP的自动计数系统。该计数方法采用两条计数线的时空图像提升计数算法的可靠性，同时降低计算量。算法融合二维灰度图像数据与人体三维高度信息检测运动目标，并通过目标区域灰度投影及其视差分割粘连的多个人体。实验结果表明，该算法计数准确率高，硬件系统满足实时性和稳定性要求，该系统对光照变化、阴影干扰和拥挤人群都具备良好的可靠性与鲁棒性。

## 参考文献

[^1]: J. W. Kim, K. S. Choi, B. D. Choi, J. Y. Lee and S. J. Ko, “Real-Time System for Counting the Number of Passing People Using a Single Camera”, Lecture Notes in Computer Science, vol. 2781, pp. 466-473, 2003.

[^2]: T. H. Chen, C. W. Hsu, “An automatic bi-directional passing-people counting method based on color image processing”, IEEE 37th Annual 2003 International Carnahan Conference on Security Technology, pp. 200-207, Oct. 2003.

[^3]: X. W. Xu, Z. Y. Wang, Y. H. Liang, and Y. Q. Zhang, "A rapid method for passing people counting in monocular video sequences", Proceedings of the sixth International Conference on Machine Learning and Cybernetics, vol. 3, pp. 1657-1662, Aug. 2007.

[^4]: Terada K, Yoshida D, Oe S, and Yamaguchi J, “A method of counting the passing people by using the stereo images”, IEEE International Conference on Image Processing, vol. 2, pp. 338-342, 1999.

[^5]: Yahiaoui T, Meurie C, Khoudour L and Cabestaing F, "A people counting system based on dense and close stereovision", International Conference on Image and Signal Processing, pp. 59-66, Jul. 2008.

[^6]: TMS320DM642 Video/Imaging Fixed-point Digital Signal Processor Data Manual, Literature Number: SPRS200E, Texas Instruments Incorporated. July 2002-Revised March 2004.

[^7]: D. Beymer, “Person Counting Using Stereo”, Proc. IEEE Workshop on Human Motion, pp.127-133, 2000.

[^8]: Fua P, "A parallel stereo algorithm that produces dense depth maps and preserves image features", Machine Vision and Applications, Vol.6(1), pp.35-49, 1993.
