Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用OpenCV的期望最大化的人身上画椭圆_Opencv_Computer Vision_Extract_Gaussian_Expectation Maximization - Fatal编程技术网

在使用OpenCV的期望最大化的人身上画椭圆

在使用OpenCV的期望最大化的人身上画椭圆,opencv,computer-vision,extract,gaussian,expectation-maximization,Opencv,Computer Vision,Extract,Gaussian,Expectation Maximization,我对如何实现我的目标有些怀疑。我有一个外部摄像机,它正在记录人们,我想在每个人身上画一个椭圆 现在,我要做的是从帧中获取人物的特征点(我使用遮罩获取人物的特征点),设置EM算法,并使用我的样本(提取的特征点)对其进行训练。集群的数量是图像中人数的两倍(我在使用其他方法(如使用码本进行像素计数)启动EM算法之前获得) 我的问题是 (a) 我是否必须只针对第一帧进行训练,然后在接下来的帧中使用predict?或者 (b) 在每帧中使用具有特征点的train 现在我正在做选项b)(我不使用预测),

我对如何实现我的目标有些怀疑。我有一个外部摄像机,它正在记录人们,我想在每个人身上画一个椭圆

现在,我要做的是从帧中获取人物的特征点(我使用遮罩获取人物的特征点),设置EM算法,并使用我的样本(提取的特征点)对其进行训练。集群的数量是图像中人数的两倍(我在使用其他方法(如使用码本进行像素计数)启动EM算法之前获得)

我的问题是

  • (a) 我是否必须只针对第一帧进行训练,然后在接下来的帧中使用predict?或者
  • (b) 在每帧中使用具有特征点的train
现在我正在做选项b)(我不使用预测),因为我真的不知道如何使用预测

如果我做a),你能帮我做吗?然后怎么画椭圆?。如果我做b),你能帮我为每个人画一个椭圆吗?因为我知道,我用cov、mean等为同一个人得到了不同的省略号(例如手臂)


我想要实现的是本文使用高斯模型:

如果你想画边界框,而不是椭圆,你可以使用函数grouprectangles来合并不同的边界框

但是,更重要的是,对于人员检测,您可以简单地将openCV的人员检测器(基于HOG)或潜在svm检测器与人员模型一起使用。

无论如何,您应该执行b)操作,否则您将尝试将关键点与第一帧中的群集(人员)相匹配。几秒钟后,这将不相关

似乎可以合理地假设,从一帧到另一帧的变化不会是压倒性的,因此重用帧N-1上的训练结果是在帧N上训练的好种子,可能比在每一帧上从头开始运行EM收敛得更快

为了绘制椭圆,您可以利用python绑定中的高斯混合示例:


注意:如果使用对角协方差矩阵,椭圆将“笔直”对齐,其自身的轴与帧的X轴和Y轴对齐,如果要绘制边界框,而不是椭圆,则可以跳过椭圆角度的计算,可以使用函数GroupRectangles合并不同的边界框。但是,更重要的是,为什么不在人物模型中使用openCV的人物检测器(基于HOG)或潜在svm检测器呢?谢谢您的回复。我真的不知道这些术语是什么,但我一定会调查的。使用我上面解释的方法的意义在于,我将在非常拥挤的环境(如购物中心、时代广场等)中检测人群,在获得特征点后,我将只绘制穿过这些特征点的垂直椭圆。如果我不明白你说的话,我会回来的,谢谢,所以我会更正我的评论作为回答。嗯,这是一个回答,看看其他的选择,但不是我问的,无意冒犯,呵呵。我需要有人帮我解决这个问题@GilLevi,我已经看过svm检测器了,但对于现场视频来说速度非常慢。HOG一号可能更好,但在我的视频中,人非常小(约20x25像素),HOG不会检测到他们,这就是为什么我使用特征点,然后用EM对这些点进行聚类,但我真的不知道如何完成它。感谢您的帮助尝试对图像进行采样,然后应用HOG检测器。