2012-05-10 67 views
1

我拍摄了视频的两个连续帧的差异。我所得到的(如你所知)除了移动物体之外还有一个黑色框架。移动的物体是白色的。我想计算帧中白色像素的数量。我的意思是,我想逐行浏览图像,如果第i个像素的值大于指定的数字(比如50),那么它们必须存储在数组中。稍后我将使用这个数组来检查实际上是否有对象或噪声。例如,如果一辆汽车在视频中移动,那么在帧差异化之后,我将逐行检查包含汽车的车架的每个像素,以检测该车。因此,当视频中存在移动的汽车时,帧差异后像素值大于0。任何想法如何总结移动车的所有像素,这将使我能够决定它是汽车还是噪音。 在此先感谢:)图像的逐行像素检查

+0

计算机视觉问题通常从嵌入式示例图像中受益颇多。 – moooeeeep

回答

0

你可能会发现,这种差异并不是微不足道的。例如,您可能会发现最大的差异是靠近汽车的边缘,与汽车的运动垂直。这两个边缘中的一个将具有负值,一个是正值。因此,“差异图像”的最大优势在于您限制了您的搜索区域。孤立地说它不是很有用。

那么,你应该怎么做?那么,在正常图像上使用边缘检测算法,并将其中找到的边缘与在差异图像中找到的2个边缘进行比较。属于汽车的边缘将连接差分图像的2条边。

+0

谢谢MSalters :)我会尝试这种方式。 –

0

您可以使用斑点检测:http://www.labbookpages.co.uk/software/imgProc/blobDetection.html 来检测每个“差异图像”中的白色像素斑点。一旦你有斑点,你可以找到他们的中心找到他们的像素位置的平均值。然后你可以找到这些中心扫除的路径,并根据一些标准进行检查。

不知道更多关于你的图片我不能建议一个标准,但是例如,如果你正在看他们沿着一条直线前进,你可能期望所有的点大致是共线的。在这种情况下,可以得到其中斑被发现的梯度和一个点并使用的线的点的梯度形式来获得线方程:

y - y_1 = m(x - x_1) 

例如,给定的点(4,2)和梯度3,你会得到

y - 2 = 3(x - 4) 
y = 3x - 2 

就可以检查所有的点反对这条线,看看他们是否一起长眠。