我正在尝试在OpenCV中实现自己的Homography和Pose估计。假设我有一个方形图像作为模型,我想在摄像机的输入框架中找到它。 我的问题是关于如何准备模型数据来计算Homography。
我做了以下程序:
1-I在两个图像中提取了3个相应的集合。
Input features: Model Features:
p1_Input(278,278)---> p1_model(137,273)
p2_Input(317,235)---> p2_model(176,230)
p3_Input(217,204)---> p3_model(76,199) //all in pixel
2-解决P3P问题:
a)使用相机标准化输入点内在参数:
u.x=(p1_Input.x - cx) / fx
u.y=(p1_Input.y - cy) / fy
u.z=1
v.x=(p2_Input.x - cx) / fx
v.y=(p2_Input.y - cy) / fy
v.z=1
w.x=(p3_Input.x - cx) / fx
w.y=(p3_Input.y - cy) / fy
w.z=1
b)规范化长度以获得单位矢量:
d = sqrt(u.x*u.x + u.y*u.y + 1);
u.x=u.x/d;
u.y=u.y/d;
u.z=u.z/d; // and same for v and w
c)通过求解p3p并存储在a,b和c中找到u和相机焦点之间的距离(对v和w相同)
d)计算3D坐标:
A_Input.x=a*u.x;
A_Input.y=a*u.y;
A_Input.z=a*u.z; // same for B_input and C_Input
like:
A_Input:(-0.0899342 ,0.0570672 ,0.976046)
B_Input:(-0.0197703 ,-0.0194311 ,0.955101)
C_Input:(-0.197233 ,-0.0746457 ,0.967379)
3-Computing Homography
我的问题在这里出现。我应该如何准备和修改p1_model,p2_model and p3_model
以便为Homography计算做好准备?
显然A_Input
是具有标准化日期的3D矢量,而p1_model
是像素中的2D矢量。
解决问题后,其余部分如下:
a)找到两组的中心点。
b)使用此公式dot prodoct找到H
4-使用H和SVD找到刚性变换
答案 0 :(得分:0)
就坐标系而言,没有特定的“格式”,你需要把你的观点放在P3P(或PnP)算法中取得好成绩,只需要保持一致。给定p1和p2之间的对应关系的算法寻找的解决方案是
p2 = [resulting_3x4_transform]*p1;
每个通信。出于数值原因,建议不要将任何坐标值设置为非常大或非常小,但除此之外,请随意将您的点放在您喜欢的任何坐标系中。