我知道您可以使用“完美模型”和图像点之间的对应点来计算从图像到相机平面的单应性。

我正在为足球场/场地做这件事,并且已经使用了边缘检测来查找音高中的白线。

但是相机无法(始终)覆盖所有音高,所以我看不到所有的角...而我只有角是100模型中已知点的百分比(没有其他可区分的点)。

所以问题是,除非这条线与另一条线相交并形成一个角,否则我只知道该线的图像点,而不是模型中相应的“完美/真实世界”坐标。

是否有某种方法可以使用检测到的线来计算单应性,甚至只是一组候选单应性,即使检测到的线也是如此不会相交并创建一个角?

示例图像,其中显示了音高,我们的视野以及我可以知道对应位置的音高点ng真实世界/模型坐标(绿色圆圈),以及可能完全无用的2条线的示例,因为在我们的视野中,我不知道它们确切地在对应的真实世界/模型的音高/模型上的哪一点开始或结束:


红线是我要使用的线的示例,但我不知道它们的真实坐标,很难估计它们,因为取决于相机姿势,对应点可以在“任何地方”。

评论

你有一些示例图片吗?还是至少有可能进行线路检测的草图?我认为您的问题的简短答案是“是的,您可以”,但是您提供的更多详细信息将有助于给出更详细的答案:)

您能否提供示例图片?您是说检测到的线段不相交,还是尝试将检测到的线段扩展到线,然后尝试找到相交点?

我在问题中添加了示例图片

你有没有解决这个问题?我也对结果感兴趣。

#1 楼

我将解释两种方法:

1)
一种方法将需要行匹配算法。匹配线之后,您可以简单地使用线的端点来计算单应性。为了实现这一点,最近在OpenCV中提出了基于EDLine或LSD的描述符。此外,还实现了它们的哈希和快速匹配。在此处查看视频:

http://www.youtube.com/watch?v=MqMjvSkM39k

http://www.youtube.com/watch?v = naSWTlbg3To

最近的opencv_contrib存储库包含这些方法的源代码。

如果线端点嘈杂,则可以直接利用线来计算单应性。这样的论文将是:


内部报告:2005-V04从图像对中的三行或
点计算同形异象
俄勒冈州格雷罗Pellejero,C. Sagues

内部报告:2003-V01鲁棒的线匹配和单应估计同时进行G. Lopez-Nicolas

同形的线概率匹配Taemin Kim胡智焕(Jihwan Woo)和In So Kweon



2)这里给出了一种特定于字段的方法:广播曲棍球视频的纠正功能。”,Gupta,Ankur,James J. Little和Robert J. Woodham
计算机和机器人视觉(CRV),2011年加拿大会议。 IEEE,
2011。罗伯特·伍德汉姆国际视觉计算研讨会。施普林格·柏林·海德堡(Springer Berlin Heidelberg),2008年。


思路如下:由其系数$ \ mathbf {l} _i =(u,v,1)^ T $映射的任何行到$ \ mathbf {l} _i ^ {'} = {x,y,1)^ T $在另一个图像中使用:

$$
\ mathbf {l} _i ^ {'} = \ mathbf {H} ^ T \ mathbf {l} _i
$$

这种形式的方程式可以直接插入DLT方法中: -v&0&vx&-1&0&x \\
0&-u&uy&0&-v&vy&0&-1&y
\ end {bmatrix}
$$

唯一的区别是归一化,您可以在上面的引用中找到它。

添加椭圆:
如果$ x ^ TCx = 0 $,则任何点$ x $都位于圆锥曲线$ C $上。这产生了转换关系:

$$
C'= H ^ {-T} CH ^ {-1}
$$

上面的参考资料还解释了如何将此约束插入DLT算法。

使用椭圆和直线,可以得出可靠的投影关系。

#2 楼

如果线不平行,则可以计算它们的相交点并将其用作参考点。在您的绘画中,也可以使用紫色的点:



顺便说一句,线的交点不必在图像中。只要直线是平行的

,如果直线是平行的,则可以使用它们来获取其他约束。例如,如果您有N <4个点和K条线,则可以估计变换

回想一下,投影变换的等式为:

$ x'= \ frac {\ left(a_ {11} x + a_ {12} y + a_ {13} \ right)}
{\ left(a_ {31} x + a_ {32} y + 1 \ right}}
\\
y'= \ frac {\ left(a_ {21} x + a_ {22} y + a_ {23} \ right)}
{\ left(a_ {31 } x + a_ {32} y + 1 \ right}} $

您的目标是找到系数$ a_ {11},a_ {12},a_ {13},a_ {21} ,a_ {22},a_ {23},a_ {31},a_ {32} \\ $

因此,如果存在映射到的行$ ax + by + c = 0 $ $ Ax'+ By'+ C $,然后:

$$ Ax'+ By'+ C = 0 \ implies \\ A(a_ {21} x + a_ {22} y + a_ { 23})+ B(a_ {21} x + a_ {22} y + a_ {23})+ C(a_ {31} x + a_ {32} y + 1)= 0 $

可以重写为:

$
\ left(\ begin {array} {ccc}
Ax&Ay&A&Bx&By&B&Cx &Cy \\
\ end {array} \ right)
\ left(\ begin {array} {ccc}
a_ {11} \\
a_ {12} \ \
a_ {13} \\
a_ {21} \\
a_ {22} \\
a_ {23} \\
a_ {31} \ \
a_ {32} \\
\ end {array} \ right)= -C
$

$ A,B,C $是已知值,因为您已计算线方程。您可以输入$ ax + by + c = 0 $的任意点$(x,y)$,并获得其他约束。将它们与从点获得的约束结合起来,您可能会获得更多信息。
请注意,从两个以上的点将不会获得更多信息,因为任何第三点都会将线性相关线添加到约束。

其他参考文献“ Elan Dubrovsky的单应性估计”-参见第2.3.1部分,根据直线的单应性估计。