在使用OpenCV的期望最大化的人身上画椭圆
我对如何实现我的目标有些怀疑。我有一个外部摄像机,它正在记录人们,我想在每个人身上画一个椭圆 现在,我要做的是从帧中获取人物的特征点(我使用遮罩获取人物的特征点),设置EM算法,并使用我的样本(提取的特征点)对其进行训练。集群的数量是图像中人数的两倍(我在使用其他方法(如使用码本进行像素计数)启动EM算法之前获得) 我的问题是在使用OpenCV的期望最大化的人身上画椭圆,opencv,computer-vision,extract,gaussian,expectation-maximization,Opencv,Computer Vision,Extract,Gaussian,Expectation Maximization,我对如何实现我的目标有些怀疑。我有一个外部摄像机,它正在记录人们,我想在每个人身上画一个椭圆 现在,我要做的是从帧中获取人物的特征点(我使用遮罩获取人物的特征点),设置EM算法,并使用我的样本(提取的特征点)对其进行训练。集群的数量是图像中人数的两倍(我在使用其他方法(如使用码本进行像素计数)启动EM算法之前获得) 我的问题是 (a) 我是否必须只针对第一帧进行训练,然后在接下来的帧中使用predict?或者 (b) 在每帧中使用具有特征点的train 现在我正在做选项b)(我不使用预测),
- (a) 我是否必须只针对第一帧进行训练,然后在接下来的帧中使用predict?或者
- (b) 在每帧中使用具有特征点的train李>
我想要实现的是本文使用高斯模型:如果你想画边界框,而不是椭圆,你可以使用函数grouprectangles来合并不同的边界框 但是,更重要的是,对于人员检测,您可以简单地将openCV的人员检测器(基于HOG)或潜在svm检测器与人员模型一起使用。无论如何,您应该执行b)操作,否则您将尝试将关键点与第一帧中的群集(人员)相匹配。几秒钟后,这将不相关 似乎可以合理地假设,从一帧到另一帧的变化不会是压倒性的,因此重用帧N-1上的训练结果是在帧N上训练的好种子,可能比在每一帧上从头开始运行EM收敛得更快 为了绘制椭圆,您可以利用python绑定中的高斯混合示例:
注意:如果使用对角协方差矩阵,椭圆将“笔直”对齐,其自身的轴与帧的X轴和Y轴对齐,如果要绘制边界框,而不是椭圆,则可以跳过椭圆角度的计算,可以使用函数GroupRectangles合并不同的边界框。但是,更重要的是,为什么不在人物模型中使用openCV的人物检测器(基于HOG)或潜在svm检测器呢?谢谢您的回复。我真的不知道这些术语是什么,但我一定会调查的。使用我上面解释的方法的意义在于,我将在非常拥挤的环境(如购物中心、时代广场等)中检测人群,在获得特征点后,我将只绘制穿过这些特征点的垂直椭圆。如果我不明白你说的话,我会回来的,谢谢,所以我会更正我的评论作为回答。嗯,这是一个回答,看看其他的选择,但不是我问的,无意冒犯,呵呵。我需要有人帮我解决这个问题@GilLevi,我已经看过svm检测器了,但对于现场视频来说速度非常慢。HOG一号可能更好,但在我的视频中,人非常小(约20x25像素),HOG不会检测到他们,这就是为什么我使用特征点,然后用EM对这些点进行聚类,但我真的不知道如何完成它。感谢您的帮助尝试对图像进行采样,然后应用HOG检测器。