美好的一天,伙计们,
我正在尝试用镜筒畸变进行模拟和成像。我创建一个虚拟棋盘(仅角落),然后使用 OpenCV 将其投影到我的图像平面上。这个想法是用已知的畸变系数来投影这些点,然后尝试镜头畸变校准(用calibrateCamera),并查看是否获得相同的系数。
我的问题是关于作为输入projectPoints的函数distCoeffs。这些系数是否与必须用于使图像不失真calibrateCamera( 的输出)相同?这意味着该函数必须计算该运算的逆运算。或者,它是否使用这些系数直接扭曲物点?这意味着 与 例如 的输出根本不相关calibrateCamera。
我之所以这么问,是因为我注意到当我期望桶形失真时,我的模拟会产生枕形失真,反之亦然。这似乎与我想象的相反。
我用来模拟图像的最小工作代码(Python):
# The distortion matrix that I vary
distortion = np.array([0.3, 0.001, 0.0, 0.0, 0.01])
# Generate Grid of Object Points
grid_size, square_size = [20, 20], 0.2
object_points = np.zeros([grid_size[0] * grid_size[1], 3])
mx, my = [(grid_size[0] - 1) * square_size / 2, (grid_size[1] - 1) * square_size / 2]
for i in range(grid_size[0]):
for j in range(grid_size[1]): …Run Code Online (Sandbox Code Playgroud)