我试图计算左、右图像中的视差(像素差)。假设图像被校正(行对齐),主点被称为cx,cy (左、右相机的注意原则点不同)。
如果我们在左边的图像中有一个像素,x_l在右边的图像x_r中有相应的像素,如果我们使用原点为cx和cy的图像坐标,那么两个像素的差就是: disp = x_l - x_r。
但是,如果图像坐标的原点位于图像的左上角(即定义在OpenCV中),那么在计算视差时是否需要考虑这个偏移量(cx)?或者我还能用disp = x_l - x_r来得到正确的视差吗?
这似乎有点愚蠢,但我确实感到困惑。谢谢。
发布于 2014-09-12 19:04:26
这真的取决于你用视差计算深度的方式。
两个校正图像的投影矩阵(在图像左上角具有坐标原点)为下列形式:
[ fx 0 cx_l 0 ]
P_l = [ 0 fy cy 0 ]
[ 0 0 1 0 ]
[ fx 0 cx_r -B ]
P_r = [ 0 fy cy 0 ]
[ 0 0 1 0 ]其中B为基线,fx为普通水平焦距。如果在这两幅图像中投影相同的3D点M = [X; Y; Z; 1],则得到以下关系:
u_l-u_r = fx*B/Z + cx_l-cx_rP_l*M = Z*[u_l; v; 1]和P_r*M = Z*[u_r; v; 1]。这种关系可以重构为
Z = fx * B / (u_l-u_r-cx_l+cx_r)
= fx * B / (disp_1-cx_l+cx_r)
= fx * B / disp_2使用
disp_1 = u_l-u_r
disp_2 = u_l-u_r-cx_l+cx_r因此,你可以选择计算你喜欢的视差,只要你在使用视差计算深度时考虑这两个不同的原理点。
https://stackoverflow.com/questions/25793308
复制相似问题