-
Notifications
You must be signed in to change notification settings - Fork 30
Open
Description
the origin version:
pybullet_env.py
def calIntrinsicMatrix(self):
'''计算相机内参矩阵'''
# 这里的其实是考虑的是无畸变且光心就在画面正中间的情况
# 而且像素尺寸为正方向 fx = fy
# FOV是视场角,单位°
# 注: FOV这里指的是画面对角线对应的视场角。
# FOV视场角的一半: \phi= (FOV/2) * (pi/180°)
# 图像对角线的一半 l = \sqrt((h/2)^2 + (w/2)^2)
# tan(\phi) = l / f f是等效焦距
# f = l / tan(\phi)
# TODO f求错了,不应该/2
# 导致的问题就是FOV跟实际的FOV不匹配,要比预设的FOV大
f = math.sqrt(self.width * self.width / 4.0 + self.height * self.height / 4.0) / 2.0 / math.tan(self.fov / 2.0 / 180.0 * math.pi)
# cx = w/2
# cy = h/2
# TODO 写错了, 这里cx, cy不应该有-0.5
return (f, 0.0, self.width / 2.0 - 0.5, 0.0, f, self.height / 2.0 - 0.5, 0.0, 0.0, 1.0)It is need to be modified as :
def calIntrinsicMatrix(self):
'''计算相机内参矩阵'''
f = math.sqrt(self.width * self.width / 4.0 + self.height * self.height / 4.0) / math.tan(self.fov / 2.0 / 180.0 * math.pi)
# cx = w/2
# cy = h/2
# TODO 写错了, 这里cx, cy不应该有-0.5
return (f, 0.0, self.width / 2.0 , 0.0, f, self.height / 2.0, 0.0, 0.0, 1.0)Metadata
Metadata
Assignees
Labels
No labels