如何去除相机畸变

假设小伙伴们对相机的内参比较熟悉的情况下,可以快速理解,如有疑问,可先移步内外参链接:还没写,度娘都有的

第一步:将图像坐标系坐标转换到摄像机坐标系坐标,根据内参模型,有:
X[i]=(x[i]-principal[0])/focal[0];
Y[i]=(y[i]-principal[1])/focal[1];
其中,X[i]、Y[i]为摄像机去畸变前坐标,x[i]、y[i]为图像坐标系坐标,剩余的就不多说了
第二步:去除耦合系数skew影响,有:
X[i]=X[i]-Y[i]skew;
第三步:利用畸变系数k1、k2、k3、p1、p2去除径向畸变和切向畸变,有:
径向畸变计算:
temp=X_new[i]X_new[i]+Y_new[i]Y_new[i];
tempKr=1+k1
temp+k2
temp
temp+k3temptemptemp;
切向畸变计算:
deltax=2
p1X_new[i]Y_new[i]+p2(temp+2X_new[i]X_new[i]);
deltay=2
p1X_new[i]Y_new[i]+p2(temp+2Y_new[i]*Y_new[i]);
畸变校正
X_new[i]=(X[i]-deltax)/tempKr;
Y_new[i]=(Y[i]-deltay)/tempKr;
重复以上步骤n次(一般取20左右)
第四步:将摄像机坐标系再转换到图像坐标系
X_new[i]=X_new[i]*focal[0]+principal[0];
Y_new[i]=Y_new[i]*focal[1]+principal[1];
大功告成。仔细的小伙伴一定会提出疑问,怎么第三步在用X_new[i]计算X_new[i],bingo,在矫正前需要给X_new[i]赋初值为X[i]。

你可能感兴趣的:(双目视觉)