def getProjectionMat(self, from_E=True):
ei,eii = self.getEpipoles()
ei = cv2.normalize(ei).flatten()
eii = cv2.normalize(eii).flatten()
if from_E == True:
F21,F31 = self.getFundamentalMat()
H21 = H_from_E(F21)
H31 = H_from_E(F31)
v1 = r_[0.5,0.5,50,1.]
v2 = r_[1.,1.,51,1.]
for H in H21:
ln2 = cross(dot(H,v1)[:3],dot(H,v2)[:3])
pt3 = self.pl_(v1[:3]/v1[3], ln2)
pt3 /= pt3[2]
print pt3
for H2 in H31:
print dot(H2,v1)[:3]/dot(H2,v1)[:3][2]
return H21,H31
else:
Pi = eye(4)
Pi[:3,:3] = array([dot(t,eii) for t in self.T]).T
Pi[:3,3] = ei
# K = cv2.decomposeProjectionMatrix(Pi[:3])[0]
# Pi[:3] = dot(cv2.invert(K)[1],Pi[:3])
return Pi
评论列表
文章目录