连续视频帧线的同位素估计给出了不好的结果

时间:2014-12-05 19:51:41

标签: image-processing geometry computer-vision matlab-cvst

我正在尝试建立一个能够检测足球视频序列越位情况的程序。为了追踪更好的球员和球,我需要估计连续帧之间的单应性。我在Matlab做这个项目。 我能够在帧之间找到足够的相应线条,但在我看来,由此产生的单应性不正确。

我从以下情况开始,我有这两个处理过的图像(1280x720像素)和相应的行: image 1image 2

线来自霍夫变换并且具有cross(P1, P2)形式,其中P(i)是[x y 1]',其中0 <0。 x,y&lt; 1(由图像宽度和高度分开)。线也被归一化,由第三个分量划分。)

在线规范化之前(刚交叉产品之后)我有:

第1帧的行(每行一行)。

[ -0.9986 -0.2992 0.6792 -0.9986 -0.4305 0.5686 -0.8000 -0.4500 0.3613 -0.9986 -0.1609 0.7890 -0.9986 -0.0344 0.9074 -0.2500 -0.2164 0.0546]

这些是第2帧的行:

[-0.9986 -0.2984 0.6760 -0.9986 -0.4313 0.5678 -0.7903 -0.4523 0.3587 -0.9986 -0.1609 0.7890 -0.9986 -0.0391 0.9066 -0.2486 -0.2148 0.0539]

对每个数学线进行归一化(在这种情况下所有行都对应)我创建矩阵A(j) [-u 0 u*x -v 0 v*x -1 0 x]; [0 -u u*y 0 -v v*y 0 -1 y]; 其中line(j)_1是[x y 1]'而line(j)_2是[u v 1]'。然后我形成整个矩阵A并计算SVD [~,~,V] = svd(A);。将V的最后一列重新排列为3x3矩阵将使H为:

[0.4234 0.0024 -0.3962 -0.3750 -0.0030 0.3503 0.4622 0.0029 -0.4322]

这个单应矩阵对于上面的平行线和消失点(这些线的交点)非常有效,但它在其他地方做得很糟糕。例如,一个消失点在未缩放的坐标(1194.2,-607.4)中,它应该保持在那里,实际上将映射几个像素(5~10px)。但是,如果我在(300,300)中随机点,将转到(1174.1,-582.7)!

我无法看到我是否犯了一些大错误,或者是因为测量中的噪音。你能救我吗?

2 个答案:

答案 0 :(得分:1)

好吧,你计算了一个单应线映射到行。如果你想要相应的逐点单应性,你需要反转并转置它。例如,参见Hartley和Zisserman&#34;多视图几何&#34;的第1.3.1章。

答案 1 :(得分:0)

根据您发布的图像,您正在考虑的线条在场景中看起来都是相互平行的。然后问题是不适定的,因为有无数的单应性来解释由此产生的对应关系。尝试添加到具有其他方向的通信行。