2011-08-10 106 views
12

我想开发一个使用OpenCV(或Emgu CV)的“人数统计系统”。人数统计系统

请指导我如何实施或引导我使用一些示例或开源项目。

(我已经做了一些工作:提取DIFF然后门槛删除背景,利用运动历史和像,仍然没有很好的效果)

编辑1:我指望较高的人流量(一打他们可能会同时通过)。

编辑2:它必须至少80%准确。人们走过几乎5米宽的门。问题是我无法控制相机的位置或角度。相机在距离2.5米高的地方从10米距离呼喊。

谢谢

+2

您可能想指定的一些观点:系统必须有多精确?什么是“高人流量”?这是否意味着它有10个人的宽度,或者它是大量人们通过的1米大的拱门? – Tipx

+0

感谢您的评论。我已更新了我的问题。 –

+0

你还没有描述“人流”的范围。我们有多少人在聊天?多人经常同时进入吗?你说你的系统“仍然没有好的结果”,尽管与背景不同。你能描述你已经看到了什么样的结果以及为什么他们有问题吗? – Gravity

回答

3

退房自带的OpenCV的最新版本(> = 2.2)的HOG行人检测。

请参阅modules/objdetect/src/hog.cppsamples/cpp/peopledetect.cpp在OpenCV源代码。遗憾的是,目前还没有官方文档。

+0

谢谢;我已经检查过HOG。这是不适合拥挤的流量,它是如此不可预测。 –

6

如果您将人员计数系统称为一个系统来统计房间中的人,那么我建议您使用带有2个lazers(普通lazer玩具工作)和2个光敏电阻器的微控制器来实现硬件。对于微控制器,我建议您使用Arduino。然后创建一个具有Seri​​alPort对象的C#应用​​程序,并读取arduino通过USB发送的数据。例如,arduino将发送1给“进入房间的人”,0发送给“有人离开房间”。然后可以在C#中轻松完成日志记录和统计。

Arduiono网站:here

光敏为$ 1:here

该解决方案是一个很大便宜,easyer比使用一个摄像头,是一个相当不错的品质来实现。

希望我帮你。

+0

谢谢;但我正在计算高密度人流。 –

+0

密度并不重要,野火队一直在响应。 更具体地描述你的项目。你是指从门口进出房间的人还是其他的东西? – Bosak

+0

顺便说一下,我给你的想法是我会做的,因为我也在做一个人数统计系统。但对于有1门的人和几乎所有人都会一个接一个地去的商店。如果你有任何进展或解决方案,请与我分享。 :) – Bosak

2

是人们唯一的一种场景“实体”的?如果情况并非如此,你是否在考虑在场景中出现其他类型的事物?因为如果是这样的话,你可以只计算出现在或来自现场的斑点。这可能听起来有点天真,但我会采取某种运动图像,按群集中的距离分组运动像素。您的距离度量标准可能会考虑到一些限制,例如人们会“经常”站立,因此群集中的像素应该围绕某种回归线(如果相机与de floor平齐,则为直线)。不必在场景中跟踪他们,只是在他们进入或离开时注意他们,尽管您会遇到一些问题,例如,人们在场景中自行进入并成对或成组离开。 ..祝你好运:)

0

这真的取决于相机的位置。假设您可以获得图像中人物的正面轮廓:

此问题基本上是人脸检测和识别。

寻找面孔的方法有很多,但这是我稍微熟悉的方法。

对于人脸检测,您需要对肤色进行图像分割。这将提取皮肤区域。 [手臂,胸部(适合那些穿V字形上衣的人),脸部,腿部等]然后,您需要将皮肤区域的轮廓与训练过的脸部轮廓对齐。

[你需要使用特征脸创造一个什么样的脸看起来像普通的资料]

如果皮肤区域排队,不从配置文件太远devate,那么它被认为是一个面对。一旦脸部被确认,然后将其添加到特征脸数据存储[用于识别]。为了节省处理时间,如果您正在查找以前的脸部,您可能需要考虑限制搜索区域。 [鉴于帧速率和上次看到此人的时间]

如果您指的是“人群流量”,我认为您只是指人群中人脸的密度。

现在您已确认视频中的移动对象是一个人。现在你只需要注意一下,然后确保你不再把它们视为一个新的人。

这种方法:真的取决于您检测人脸区域的能力。如果视频中的人看不起,不适合训练的数据等等,那么这可能不起作用。如果有人在视频中戴太阳镜,也可能会产生影响。 [可能会被认为是一个“新面孔”]

0

我认为如果你有很多闭塞的密集人群,你必须使用一些机器学习算法,例如你可以使用隐式形状模型来获取特征。