我取了视频的两个连续帧的差异。除了移动的物体,我得到的(如你所知)一个黑框。移动的物体是白色的。我想计算帧中白色像素的数量。我的意思是,我想逐行浏览图像,如果第 i 个像素的值大于指定的数字(比如 50),那么它们必须存储在一个数组中。稍后我将使用这个数组来检查是否真的有一个物体或只是一个噪音。例如,如果汽车在视频中移动,那么在帧差分之后,我将逐行检查包含汽车的帧的每个像素,以检测该汽车。因此,当视频中有一辆移动的汽车时,帧差分后的像素值大于 0。知道如何将移动汽车的所有像素求和,这将使我能够确定它是汽车还是噪音。提前致谢 :)
问问题
308 次
2 回答
0
您可以使用斑点检测:http ://www.labbookpages.co.uk/software/imgProc/blobDetection.html 来检测每个“差异图像”中的一团白色像素。一旦你有了斑点,你可以通过找到它们的像素位置的平均值来找到它们的中心。然后,您可以找到这些中心扫过的路径,并根据某些标准对其进行检查。
在不了解您的图像的更多信息的情况下,我无法提出标准,但例如,如果您正在观看它们沿着笔直的道路移动,您可能会期望所有点大致共线。在这种情况下,您可以获取梯度和发现 blob 的点,并使用直线的点梯度形式获得直线方程:
y - y_1 = m(x - x_1)
例如给定一个点 (4, 2) 和梯度 3 你会得到
y - 2 = 3(x - 4)
y = 3x - 2
然后,您可以对照这条线检查所有点,看看它们是否位于这条线上。
于 2012-05-11T05:01:02.793 回答
0
您可能会发现差异并非微不足道。例如,您可能会发现最大的差异在汽车边缘附近,垂直于汽车的运动。这两个边缘之一将具有负值,一个正值。因此,“差异图像”的最大优点是限制了您的搜索区域。单独来看它不是很有用。
那你该怎么办?好吧,在正常图像上使用边缘检测算法,并将在那里找到的边缘与在差异图像中找到的 2 个边缘进行比较。属于汽车的边缘将连接来自差异图像的 2 个边缘。
于 2012-05-11T07:11:10.953 回答