首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >三维重建

三维重建
EN

Stack Overflow用户
提问于 2013-12-24 12:12:31
回答 1查看 2.1K关注 0票数 1

我有来自同一台相机的图像A和图像B。

图像A中的点

代码语言:javascript
复制
    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中的点

代码语言:javascript
复制
  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);

代码语言:javascript
复制
F=[ 5.12243654806919e-009    -5.65511649689218e-008    -3.90901140383986e-006
 9.48853562184938e-008     4.56036186476569e-008      -0.00133231474573608
 -0.000178137312702315       0.00112651242300972          1.10421882784367]

摄象机档案

代码语言:javascript
复制
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

单形

代码语言:javascript
复制
H = vgg_H_from_x_lin(x1,x2)

**问题A=我想要回来,PointsB

例如,PointsB(:,1)==H*x1(:,1)

的结果是错误的,为什么,任何东西缺少

代码语言:javascript
复制
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=,我如何从上面的信息中得到三维点。

任何链接或matlab代码都会有帮助。

我怎么才能用

从图像投影和摄像机中得到的lin.m 3D点线性 X= vgg_X_from_xP_lin(u,P,imsize) %什么是u

EN

回答 1

Stack Overflow用户

发布于 2013-12-24 14:32:34

这两张照片是用同一台相机拍摄的吗?

问题A:你要找的是这两幅图像之间的点对应。寻找对应点的一种方法是使用局部特征匹配。兴趣点的检测和特征分解的算法有很多,如SIFT算法、活泼算法、异常算法等。

问题B:你可以使用三角剖分获得3D点。也见Hartley和Zisserman在计算机视觉中的多视图几何中的直接线性变换。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20760752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档