python–OPENCV:Calibratecamera 2重投影错误和自定义计算错误

python–OPENCV:Calibratecamera 2重投影错误和自定义计算错误,第1张

概述我有一个python脚本,使用calibratecamera2方法从棋盘的几个视图校准相机.校准成功后,我会检查所有原始点并做一些绘图并再次计算重新投影误差.令我惊讶的是,opencv和我计算的重投影错误有点不同.我发现它很奇怪.我是以错误的方式计算它的吗?obj_points = []# 3d point in real world space. List

我有一个python脚本,使用calibratecamera2方法从棋盘的几个视图校准相机.校准成功后,我会检查所有原始点并做一些绘图并再次计算重新投影误差.令我惊讶的是,opencv和我计算的重投影错误有点不同.我发现它很奇怪.我是以错误的方式计算它的吗?

obj_points = []# 3d point in real world space. List of arraysimg_points = []# 2d points in image plane. List of arrays...ret,camera_matrix,dist_coeffs,rvecs,tvecs = cv2.calibrateCamera(obj_points,img_points,(w,h),tvecs,calib_flags +cv2.CAliB_USE_INTRINSIC_GUESS,criteria)print "Final reprojection error opencv: ",ret   #Compute mean of reprojection errortot_mean_error=0mean_error_image = 0for i in xrange(len(obj_points)):    reprojected_points,_ = cv2.projectPoints(obj_points[i],rvecs[i],tvecs[i],dist_coeffs)    reprojected_points=reprojected_points.reshape(-1,2)    mean_error_image=np.sum(np.sum(np.abs(img_points[i]-reprojected_points)**2,axis=-1)**(1./2))/np.alen(reprojected_points)    tot_mean_error +=mean_error_imagemean_error=tot_mean_error/len(obj_points)print "Mean reprojection error: ",mean_error

最终重投影错误opencv:0.571030279037

平均重投影错误:0.438696960449

最佳答案我的计算错误/不同.我正在使用这种公式:

但opencv使用这个:

所以,如果有人感兴趣,代码现在看起来像:

#Compute mean of reprojection errortot_error=0total_points=0for i in xrange(len(obj_points)):    reprojected_points,2)    tot_error+=np.sum(np.abs(img_points[i]-reprojected_points)**2)    total_points+=len(obj_points[i])mean_error=np.sqrt(tot_error/total_points)print "Mean reprojection error: ",mean_error

最终重投影错误opencv:0.571030279037

平均重投影错误:0.571030718956

总结

以上是内存溢出为你收集整理的python – OPENCV:Calibratecamera 2重投影错误和自定义计算错误全部内容,希望文章能够帮你解决python – OPENCV:Calibratecamera 2重投影错误和自定义计算错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1207899.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存