Matlab 为什么分解单应矩阵需要摄像机的本质?

Matlab 为什么分解单应矩阵需要摄像机的本质?,matlab,opencv,computer-vision,homography,Matlab,Opencv,Computer Vision,Homography,opencv和matlab都具有分解同形矩阵的功能。这需要单应矩阵H和摄像机的固有特性K。我不明白为什么它需要K 每个函数实现都引用“Malis”()。在第7页,它讨论了内在矩阵K,但从未使用过它。看起来没有必要吗 好吧,为了找到R,T,你必须知道K。参考文献中的公式(1)清楚地显示了这一点(在你的例子中给出了单应性G,你正在寻找相机姿势R,T)。在不知道K的情况下,没有办法解R,T 以后是否使用K取决于您将如何处理该姿势。如果你要将3D地标投影到图像上,你也必须知道K 不确定我是否在告诉您任何

opencv和matlab都具有分解同形矩阵的功能。这需要单应矩阵H和摄像机的固有特性K。我不明白为什么它需要K

每个函数实现都引用“Malis”()。在第7页,它讨论了内在矩阵K,但从未使用过它。看起来没有必要吗


好吧,为了找到R,T,你必须知道K。参考文献中的公式(1)清楚地显示了这一点(在你的例子中给出了单应性G,你正在寻找相机姿势R,T)。在不知道K的情况下,没有办法解R,T

以后是否使用K取决于您将如何处理该姿势。如果你要将3D地标投影到图像上,你也必须知道K


不确定我是否在告诉您任何新的内容…

以下是我对您链接的文档的理解(“对基于视觉控制的单应性分解的深入理解”)。如果我错了,请纠正我

分解同调需要K从射影单应G计算欧氏单应H。

H=K_inv*G*K(公式2)

R、 t和n将根据欧几里德单应矩阵计算(公式3)

Opencv函数分解同调矩阵假设得到一个投影单应矩阵作为输入(非欧几里德)! 请注意,在链接的文档中,投影单应矩阵称为G(不是H!),而欧几里德单应矩阵称为H

投影单应矩阵基于点的向量p-图像坐标计算。(像素)

阿尔法p*p\U c=G*p\U星

欧几里德单应矩阵基于向量m“从相机姿势观察的点的归一化投影坐标”(例如米)计算

阿尔法m*m_c=H*m_星

式中:-c-当前帧_d-期望帧;阿尔法-仅比例因子

图像和投影坐标之间的关系为:

m=K_inv*p

摄像机内参数的K矩阵;K_inv-矩阵K的逆

更清楚地说:

p_c=G*p_星

->K*K_inv*p_c=G*K*K_inv*p_星

->K*m_c=G*K*m_星

->m_c=K_inv*G*K*m_星

->m_c=H*m_星

记住: K_inv*K=I-单位矩阵