Bar*_*osz 10 c++ opencv computer-vision
Probabilistic Occupancy Map是一款多摄像头人体检测程序,其c ++实现可在以下网站免费获取:http: //cvlab.epfl.ch/software/pom
为了利用这个方便的软件,需要:
POM附带一组示例视频帧和相关配置文件.
我的问题可以说如下:给定一系列同步视频(例如来自http://cvlab.epfl.ch/data/pom)如何生成POM所需的配置文件?特别是我RECTANGLE对配置的标签感兴趣.自述文件指出:
RECTANGLE [摄像机编号] [位置编号]不可见| [xmin] [ymin] [xmax] [ymax]
定义某个矩形的参数,代表从某个摄像机查看的特定位置的个人.默认情况下,所有未指定的矩形都"不可见".
根据我的理解,它定义了一个人的边界矩形在某个摄像机看到的特定位置的样子.必须为每个摄像机的每个(网格)位置定义(假设位置在摄像机的视野中 - 如果不是,则使用不可见或矩形可能未定).
手工完成并非不可能,但肯定是不切实际的.总结一下:如果我有一组来自多个摄像头的视频,如何生成POM配置文件?
在相关的出版物中,作者提到他们使用相机校准来生成网格中每个位置的人体轮廓的矩形.似乎完成此操作的代码不包含在源文件中,在这种情况下,您必须自己编写它.
在他们的数据集的校准数据中,您可以看到他们使用每个摄像头的两个单应性,头部平面单应性和地平面单应性.您可以使用它快速获取所需的矩形.
头平面单应性是一个3x3矩阵,描述了从一个平面到另一个平面的映射.在这种情况下,它描述了从2D房间坐标(头部水平)到2D图像坐标的映射.您可以使用opencv中的函数findHomography为您自己的相机确定此单应性.您需要做的就是测量房间地面上四个点的坐标,并在这些标记上竖立一根直立杆.杆子应该与您想要跟踪的普通人一样长.您现在可以编写一个小程序,允许您在每个摄像机视图中单击极点的顶部.您现在有四个世界点(在房间中测量的坐标)和每个摄像机四个图像点(您点击的点).使用findHomography,您可以确定单应性.对没有杆子的地面上的标记也一样,每个摄像头有两个单应性.
现在,您可以使用单应性将位于房间任何位置的矩形的8个角点投影到每个摄像机的图像坐标上.在所有8个点的边界框中,您可以获得该房间位置和该相机的矩形.
该方法的作者提到使用人体轮廓,这表明他们的方法可能比使用长方体更准确.然而,没有移动人物的轮廓,所以具有长方体的解决方案可能是完全可行的.
归档时间: |
|
查看次数: |
1579 次 |
最近记录: |