回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在尝试从多个2d图像重建3d形状。
我已经计算了一个基本矩阵,但现在我不知道该怎么处理它。你知道吗</p>
<p>我在书堆溢出和学术论文中发现了多个相互矛盾的答案。
例如,<a href="https://stackoverflow.com/questions/13065082/determining-camera-motion-with-fundamental-matrix-opencv">Here</a>表示需要从基本矩阵计算旋转和平移矩阵。你知道吗</p>
<p><a href="https://stackoverflow.com/questions/2189107/3d-correspondences-from-fundamental-matrix">Here</a>说你需要找到摄像机矩阵。你知道吗</p>
<p><a href="https://stackoverflow.com/questions/10192552/rectification-of-uncalibrated-cameras-via-fundamental-matrix">Here</a>说你需要找到同音字。你知道吗</p>
<p><a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.6.1107&rep=rep1&type=pdf" rel="nofollow noreferrer">Here</a>说你需要找到极线。你知道吗</p>
<p>是哪个??(我该怎么做?我读过<a href="http://cvrs.whu.edu.cn/downloads/ebooks/Multiple%20View%20Geometry%20in%20Computer%20Vision%20(Second%20Edition).pdf" rel="nofollow noreferrer">the H&Z book</a>,但不明白。上面说我可以‘轻松地’使用结果9.14中的‘直接公式’,但结果9.14既不容易也不容易理解。)</p>
<p>堆栈溢出需要代码,以下是我到目前为止得到的:</p>
<pre><code> # let's create some sample data
Wpts = np.array([[1, 1, 1, 1], # A Cube in world points
[1, 2, 1, 1],
[2, 1, 1, 1],
[2, 2, 1, 1],
[1, 1, 2, 1],
[1, 2, 2, 1],
[2, 1, 2, 1],
[2, 2, 2, 1]])
Cpts = np.array([[0, 4, 0, 1], #slightly up
[4, 0, 0, 1],
[-4, 0, 0, 1],
[0, -4, 0, 1]])
Cangles = np.array([[0, -1, 0], #slightly looking down
[-1, 0, 0],
[1, 0, 0],
[0,1,0]])
views = []
transforms = []
clen = len(Cpts)
for i in range(clen):
cangle = Cangles[i]
cpt = Cpts[i]
transform = cameraTransformMatrix(cangle, cpt)
transforms.append(transform)
newpts = np.dot(Wpts, transform.T)
view = cameraView(newpts)
views.append(view)
H = cv2.findFundamentalMat(views[0], views[1])[0]
## now what??? How do I recover the cube shape?
</code></pre>
<p>编辑:我不知道相机参数</p>