我有来自同一相机的图像A和图像B.
图像A中的点
PA=[
1 2172 998.9
2 2405 225.2
3 1480 1420
4 1045 1342
5 3039 1789
6 3727 968.7
7 1038 443.1
8 3606 856.6
9 1248 520.1
10 2189 976.8
]
图像B中的要点
PB=[
1 2363 1598
2 2551 840.7
3 1768 2045
4 1404 1985
5 3040 2335
6 3636 1485
7 1393 1142
8 3514 1379
9 1550 1199
10 2378 1575]
T = 1E-4;
[F,inliers] = ransacfitfundmatrix(x1,x2,t);
F=[ 5.12243654806919e-009 -5.65511649689218e-008 -3.90901140383986e-006
9.48853562184938e-008 4.56036186476569e-008 -0.00133231474573608
-0.000178137312702315 0.00112651242300972 1.10421882784367]
相机文件
focallength =18.6188 mm
format size
width =22.6791 mm
height=15.1130 mm
Image size
5184*3456 pixel
Principle point
x0=11.5399 mm
y0=07.8574 mm
lens distortion (ideal)
K1=0 mm
K2=0 mm
K3=0
P1=0mm
P2=0 mm
H = vgg_H_from_x_lin(x1,x2)
**问题A =我想回到PointsB
如, PointsB(:,1)== H * X1(:,1)
结果是错误的,为什么,任何遗漏
More detail:
x2(:,1)'*F*x1(:,1)= -0.000644154818346676 % I guess its OK.
PointsB(:,1)==H*x1(:,1)= [ 2240.66095080911
1522.92361373263
0.953866074561989] %%%%%% WHY not 1
PB=[ 1 2363 1598]; SHOULD BE
问题B =我如何从上面的信息中获得3D点。
任何链接或matlab代码都会有所帮助。
我该如何使用
vgg_X_from_xP_lin.m 3D point from image projections and cameras, 线性
X = vgg_X_from_xP_lin(u,P,imsize)%你是什么
答案 0 :(得分:2)
这两张照片是用同一台相机拍摄的吗?
问题A:你要找的是两张图像之间的点对应关系。找到对应点的一种方法是使用局部特征匹配。有许多算法可以检测兴趣点并找到特征描述符,如SIFT,SURF,BRISK,FREAK等。
问题B:您可以使用triangulation获取3D点数。另请参阅Hartley和Zisserman在计算机视觉中的多视图几何中的直接线性变换。