我对相机校准技术完全不了解......我正在使用OpenCV棋盘技术...我正在使用Quantum的网络摄像头......
这是我的观察和步骤..
我下面的C代码学习OpenCV的由Bradski用于校准.我的校准代码是
cvCalibrateCamera2(object_points,image_points,point_counts,cvSize(640,480),intrinsic_matrix,distortion_coeffs,NULL,NULL,CV_CALIB_FIX_ASPECT_RATIO);
Run Code Online (Sandbox Code Playgroud)在调用此函数之前,我将沿着内部矩阵的对角线的第一个和第二个元素作为一个,以保持焦距的比率恒定并使用 CV_CALIB_FIX_ASPECT_RATIO
随着棋盘距离的变化fx和fy变化fx:fy几乎等于1.有200到400的数量级cx和cy值.当我改变距离时fx,fy它们在300到700的数量级.
目前我把所有的失真系数都归零,因为我没有得到包括失真系数在内的好结果.我的原始图像看起来比未失真的图像更漂亮!!
我正确地进行了校准吗?我应该使用除CV_CALIB_FIX_ASPECT_RATIO?之外的任何其他选项吗?如果是的话,哪一个?
这些值之间是否存在数学关系?如果我知道hFOV和vFOV可以计算对角线FOV而不涉及焦距等其他值吗?
我的第一个想法是使用毕达哥拉斯定理,但也许这是错误的.
我有一个三维点的3x3协方差矩阵,我想知道相当于2D协方差(为U,V图像平面)给出的图像姿势,[Xc,Yc,Zc,q0,q1,q2,q3],
有一种很长的(几何)方式,即3d协方差可以是3d椭圆,然后将其投影到平面中可以得到2d椭圆,最后将椭圆转换为2d矩阵,但这很长,
任何直接方式,以代数方式解决都将有所帮助
P. S:任何线索或对解决方案的引用(无需代码)也将有所帮助,我将用代码重写答案(在c ++中)
我也标记了卡尔曼过滤器,因为我认为它与此有关