DLT 与单应性估计
DLT vs Homography Estimation
我对 here and the homography estimation described here 中描述的 DLT 算法之间的区别有点困惑。在这两种技术中,我们都试图通过使用至少 4 个点对应来求解 3x3 矩阵的条目。在这两种方法中,我们都建立了一个系统,其中我们有一个 "measurement" 矩阵,我们使用 SVD 来求解构成 H 的元素向量。我想知道为什么有两种技术似乎做同样的事情,以及为什么其中一个可能被用于另一个。
您有左右图像对应 {p_i} <-> {p'_i}
,其中 p_i = (x_i, y_i)
,等等
将它们标准化为单位平方意味着计算两个位移 m=(mx, my)
、m'=(mx', my')
和两个尺度 s=(sx,sy)
、s'=(sx',sy')
,使得 q_i = (p_i - m) / s
和 q_i' = (p_i' - m') / s'
,并且 {q_i}
和 {q'_i}
变换后的图像点都以 (0,0)
为中心,并且大约包含在单位边长的正方形内。一点数学表明,对于 m 项来说,一个不错的选择是每组图像点中 x、y 坐标的平均值,对于 s 项,您可以使用标准差(或标准差的两倍)乘以 1/sqrt( 2).
你可以用矩阵形式表达这个归一化变换:q = T p
,
其中 T = [[1/sx, 0, -mx/sx], [0, 1/sy, -my/sy], [0, 0, 1]]
,同样 q' = T' p'
.
然后计算 {q_i}
和 {q'_i}
点之间的单应性 K
:q_i' = K q_i
.
最后,您将 K
非规范化为原始(非规范化)坐标,因此:H = inv(T') K T
,而 H
是将 {p}
映射到 {p'}
.
我对 here and the homography estimation described here 中描述的 DLT 算法之间的区别有点困惑。在这两种技术中,我们都试图通过使用至少 4 个点对应来求解 3x3 矩阵的条目。在这两种方法中,我们都建立了一个系统,其中我们有一个 "measurement" 矩阵,我们使用 SVD 来求解构成 H 的元素向量。我想知道为什么有两种技术似乎做同样的事情,以及为什么其中一个可能被用于另一个。
您有左右图像对应 {p_i} <-> {p'_i}
,其中 p_i = (x_i, y_i)
,等等
将它们标准化为单位平方意味着计算两个位移 m=(mx, my)
、m'=(mx', my')
和两个尺度 s=(sx,sy)
、s'=(sx',sy')
,使得 q_i = (p_i - m) / s
和 q_i' = (p_i' - m') / s'
,并且 {q_i}
和 {q'_i}
变换后的图像点都以 (0,0)
为中心,并且大约包含在单位边长的正方形内。一点数学表明,对于 m 项来说,一个不错的选择是每组图像点中 x、y 坐标的平均值,对于 s 项,您可以使用标准差(或标准差的两倍)乘以 1/sqrt( 2).
你可以用矩阵形式表达这个归一化变换:q = T p
,
其中 T = [[1/sx, 0, -mx/sx], [0, 1/sy, -my/sy], [0, 0, 1]]
,同样 q' = T' p'
.
然后计算 {q_i}
和 {q'_i}
点之间的单应性 K
:q_i' = K q_i
.
最后,您将 K
非规范化为原始(非规范化)坐标,因此:H = inv(T') K T
,而 H
是将 {p}
映射到 {p'}
.