我发现了一个article这是关于对极几何的。
我计算了基本矩阵。现在我试图找到对应点所在的线,如文章中所述:
我计算了齐次坐标中的线。我怎样才能像示例中那样将这条线绘制到图片中?我考虑过将直线从齐次坐标转换为非齐次坐标。我认为这可以通过将x
和y
除以z
例如同质:
x=0.0295
y=0.9996
z=-265.1531
不均匀:
x=0.0295/-265.1531
y=0.9996/-265.1531
所以:
x=-0.0001112564778612809
y=0.0037698974667842843
这些数字对我来说似乎是错误的,因为它们太小了。这是正确的方法吗? 如何将结果绘制到图像中?
最佳答案
您拥有的x
、y
和z
是“极线”方程的参数,它们出现在“线中的线”下image”公式在幻灯片中,但分别标记为 a
、b
和 c
,即:
au + bv + c = 0
这个问题的解决方案是线上的点。例如在Python中,我将a
定义为图片x轴上的一些点,并求解b
:
import numpy as np
F = np.array([
[-0.00310695, -0.0025646, 2.96584],
[-0.028094, -0.00771621, 56.3813],
[13.1905, -29.2007, -9999.79],
])
p_l = np.array([
[343.53],
[221.70],
[ 1.0],
])
lt = F @ p_l
# if you want to normalise
lt /= np.sqrt(sum(lt[:2] ** 2))
# should give your values [0.0295, 0.9996, -265.2]
print(lt)
a, b, c = lt.ravel()
x = np.array([0, 400])
y = -(x*a + c) / b
然后在这些点之间画一条线
关于Python同质与非同质绘图线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58219007/