在OpenCV中用cvCalibrateCamera2进行相机标定(附程序)

opencv标定程序 一. 标定原理摄像机在成像的过程中会在边缘产生显著的畸变,对于普通的摄像机拍摄的图像,会产生径向畸变,切向畸变和其他类型的畸变,我们需要对图像进行矫正处理。使用opencv对图像进行标定。 阅读详情

 本文整理于,Opencv 中文论坛,做下备份,有兴趣的朋友,可看原讨论http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=4603&start=0。

 

看到论坛里有不少人在用OpenCV中的标定函数cvCalibrateCamera2 进行相机标定时遇到不少问题,说一些自己的看法。


1)因为cvCalibrateCamera2 函数主要是用张正友的平面标定方法的,所以首先我建议大家看一下张正友的那篇经典的论文
完整版 22页 里面分析的非常详细《A Flexible New Technique for Camera Calibration.rar》( http://research.microsoft.com/~zhang/Papers/TR98-71.pdf)
精简版 8页《Flexible Camera Calibration by Viewing a Plane from Unknown Orientations》 - Zhang, ICCV99,
( http://www.vision.caltech.edu/bouguetj/ ... zhan99.pdf)

2)至于不少人说OpenCV中用cvCalibrateCamera2 进行相机标定的精度差,标定结果不稳定,我想可能的原因有:

原因之一)可能是在标定的时候标定板所在平面与成像平面(image plane)之间的夹角太小,张正友论文里的仿真数据(有噪声的数据)说明当两者夹角太小误差
会很大, 从张正友的论文里给出的5幅图中(http://research.microsoft.com/~zhang/Calib/)其中标定平面与成像平面的夹角分别为:
8.8947 11.2325 24.4875 10.8535 9.5829(单位:度)。
而且张正友的论文中也提到两幅标定板之间的位置平行放置的话,相关相当于一幅 因此在实际标定中平行放置的情况最好避免,可能有时你无形之中就犯了这
个错误。

原因之二)标定时拍摄的图片太少,虽然张正友的论文里只用了5幅图片,但是我建议搞个10来幅左右还是必要的,因为我们实际中可能标定板用A4的纸打印出
来贴在一块板上的,标定板上的世界坐标精度就不是特别高,多拍摄几幅图像能减少这方面带来的误差,而且多个角度拍摄也可能解决了问题一:标定板和成像
平面夹角小的问题。这个家伙用20幅来标定( http://www.vision.caltech.edu/bouguetj/ ... ample.html)

原因之三)图像上角点提取的不准确,我认为用cvFindChessboardCorners函数找角点不是很好,假如拍到的图像不是完整的棋盘格的时候肯定会有问题的,而
且也不少人反应用这个函数提取不出角点,建议可以用其他工具 比如:
OpenCV and MatLab Camera Calibration Toolboxes Enhancement(http://graphics.cs.msu.ru/en/research/calibration/)
Camera Calibration Toolbox for Matlab(http://www.vision.caltech.edu/bouguetj/calib_doc/htmls/example.html)★★★★★强烈推荐

当然还有可能其他人为的什么原因。


3)建议用其他方法比如Tsai的标定方法或其他的标定工具进行标定
★★★★★强烈推荐 用这个matlab标定工具箱来进行标定,可以和OpenCV做个对比嘛 ,它也是基于张正友的平面标定方法的,做得非常人性化,呵呵,
有误差分析、标定结果三维重建、重投影计算角点等功能 。
Camera Calibration Toolbox for Matlab(http://www.vision.caltech.edu/bouguetj/calib_doc/)

4)三个OpenCV下的标定程序

程序1)《基于OpenCV的计算机视觉技术实现》( http://www.sciencep.com/s_single.php?id=14881)这本书上的相机标定程序 (有标定图片 改下参数 可以直接运行)
from《基于OpenCV的计算机视觉技术实现 》.rar
摄像机定标from《基于OpenCV的计算机视觉技术实现 》.rar
(525.67 KiB) 被下载 13856 次

程序2) 自己写的一个简单的标定程序:plane_calibration_opencv(要先准备好 角点的图像坐标和对应的世界坐标 )
download/file.php?id=284

程序3)http://www.opencv.org.cn主页上的例子
http://www.opencv.org.cn/index.php?titl ... iant=zh-tw
附件
plane_calibration_opencv.rar
plane_calibration_opencv
(23.06 KiB) 被下载 3416 次
opencv中cvCalibrateCamera2()的函数细解 在标定摄像机的过程中,我们通常是要计算出摄像机的内参数矩阵和畸变系数,以便后来对图像进行校正和重构出图像的三维场景。      在opencv中提供了一个cvCalibrateCamera2()函数,使用该函数,我们可以一次性得到摄像机内参数矩阵,畸变系数,旋转向量和平移矩阵。 阅读详情

相关推荐

相机标定--双像三维建模小软件开发实例(二)

本程序的执行界面如下图所示,只需要输入标定板影像路径,即可全自动完成相机的标定,得出相机的焦距和畸变稀疏。 下面首先简略介绍相机标定的原理,然后简略介绍OpenCV的实现思路,最后详细介绍带UI的相机标定程序的开发方法。 一,相机标定的原理   二,OpenCV对相机标定的实现思路 三,带UI的相机标定程序的开发方法

VisualMan_whu的专栏 5079

opencv 相机内参标定函数cameraCalibrate

在做相机方面的工作,需要进行内参标定,之前一直是在用matlab中camera_calibrate做的,需要拍摄多张标定板图片另外还需要安装matlab软件,工程操作有误可能带来后续计算位姿误差,因此在做内参标定优化,发现内参标定原理一直理解不够深,就去找了下opencv中cameraCalibrate函数的源码来看下,做个记录 函数定义在opencv\opencv-master\opencv-master\modules\calib3d\src\calibration.cpp中,...

weixin_38430719的博客 2306

一分钟探究OpenCV中的相机标定函数calibrateCamera

通过这个函数,我们可以利用已知的三维空间点与其在图像上的对应关系来估计相机的内参和外参。相机标定是计算机视觉中一个重要的任务,用于估计相机的内参(intrinsic parameters)和外参(extrinsic parameters)。OpenCV是一个流行的计算机视觉库,提供了丰富的函数用于相机标定。相机标定的目的是通过一些已知的三维空间点与其在图像上对应的二维像素点之间的对应关系,来估计相机的内参和外参。创建标定板的三维坐标:对于已知的棋盘格,我们需要创建相应的三维空间坐标。

TechProX的博客 1200

c++ opencv相机标定源代码

它首先通过 3D 点坐标和 2D 像素坐标计算相机在 3D 空间中的旋转向量和平移向量的初值,然后利用迭代优化方法,对旋转向量和平移向量进行逐步优化,最终得到最优的结果。问题:求解最佳旋转矩阵R来近似一个给定的3×3矩阵Q。问题:求解最佳旋转矩阵R来近似一个给定的3×3矩阵Q。函数来计算每个点的投影位置,并将投影位置与真实的 2D 像素坐标之间的误差作为优化的目标函数。因此,在我们求出一个旋转矩阵Q后,可以通过上式得到标准旋转矩阵。因此,在我们求出一个旋转矩阵Q后,可以通过上式得到标准旋转矩阵。

Lee_Mon_Tree的博客 1392

基于PID的定速巡航控制系统设计【MATLAB源码+Word文档】

本文详细介绍了定速巡航控制是一种车辆驾驶辅助系统,它能让驾驶者在高速或长途驾驶时,设定一个固定的车速,然后车辆会自动维持这个速度行驶,无需驾驶者持续踩油门。这大大减轻了驾驶者的疲劳,同时也提高了行驶的安全性。PID定速巡航控制系统是一种利用比例(Proportional)、积分(Integral)和微分(Derivative)控制算法来实现车辆定速巡航的先进系统。这种系统能够根据设定的速度,自动调整油门开度或制动力度,使车辆保持恒定的速度行驶。这种控制系统具有响应速度快、控制精度高、稳定性好等优点。

weixin_761237174的博客 1668

R语言分布式滞后非线性模型DLNM实战:空气污染与健康数据的动态效应可视化与政策启示

本文详细介绍了R语言中分布式滞后非线性模型(DLNM)的应用,特别关注空气污染与健康数据的动态效应可视化。通过dlnm包实现PM2.5等污染物的滞后效应分析,提供从数据预处理、模型构建到结果可视化的完整流程,并探讨了其在公共卫生政策制定中的实际应用价值。

weixin_29079643的博客 514

转 在OpenCV中用cvCalibrateCamera2进行相机标定(附程序)

http://www.opencv.org.cn/forum/viewtopic.php?t=4603

weixin_34038652的博客 206

深入解析SSD报错“READ FPDMA QUEUED”:从诊断到修复全流程

本文深入解析了SSD报错“READ FPDMA QUEUED”的含义、成因与全流程解决方案。该错误通常指示硬盘硬件或健康状态问题。文章详细介绍了如何通过系统日志定位错误、解读关键的S.M.A.R.T.健康报告(重点关注重分配扇区计数等指标),并逐步进行硬件排查(如更换SATA数据线)、软件修复与数据抢救,最终指导用户根据诊断结果做出维修或更换SSD的决策。

weixin_29233333的博客 398

在OpenCV中用cvCalibrateCamera2进行相机标定

看到论坛里有不少人在用OpenCV中的标定函数cvCalibrateCamera2 进行相机标定时遇到不少问题,说一些自己的看法。 1)因为cvCalibrateCamera2 函数主要是用张正友的平面标定方法的,所以首先我建议大家看一下张正友的那篇经典的论文 完整版 22页 里面分析的非常详细《A Flexible New Technique for Camera Calibrati

zhubo22的专栏 5207

Ubuntu更新后VirtualBox报错rc=-1908?手把手教你修复Kernel driver not installed

本文详细解析了Ubuntu更新后VirtualBox报错rc=-1908的原因,并提供了完整的修复方案。通过重新安装VirtualBox、处理DKMS内核模块以及解决Secure Boot问题,帮助用户快速恢复虚拟机功能。特别针对Kernel driver not installed错误,给出了从诊断到修复的详细步骤。

weixin_42519781的博客 339

【软件系统架构】系列六:MBSE(基于模型的系统工程)

基于模型的系统工程(MBSE)是一种以模型为核心的系统工程方法论,通过结构化、可视化的模型取代传统文档,实现从需求到验证的全生命周期管理。MBSE采用SysML建模语言,包含需求、功能、架构和验证四大要素,支持自动追踪、仿真分析和代码生成。相比文档式工程,MBSE具有变更影响自动分析、跨团队协作和高可视化等优势,广泛应用于航空航天、汽车电子等领域。典型开发流程包括需求建模、行为建模、架构建模等阶段,配合MagicDraw、Cameo等工具链实现。MBSE正与数字孪生、AI技术融合,推动自动化建模和智能验证的

moton2017的博客 2783

摄像机标定程序中用到的OpenCV函数

FindChessboardCorners 寻找棋盘图的内角点位置   int cvFindChessboardCorners( const void*image, CvSize pattern_size, CvPoint2D32f* corners,int* corner

小宝的电机驱动站 1万+

【教培管家】小程序实战(五):体验课预约——从流量到转化的闭环

本节我们通过变量状态管理和数据联动,实现了孩子选择和日期选定。下一篇我们继续讲解预约页面,根据选择的日期来筛选排课,供用户进行预约。

低代码布道师的博客 1562

OpenCV相机标定

OpenCV相机标定

凌风探梅的专栏 3969

《SAP FICO系统配置从入门到精通共40篇》030、集成配置:FI与生产计划(PP)的自动科目确定

FI和PP的自动科目确定,本质上是把生产业务翻译成会计语言。翻译规则就藏在那些配置表里。配的时候多想一步:这个业务动作,在财务眼里是什么?是材料消耗?是产出入库?还是工费分摊?想清楚这个,再看配置界面,那些代码就不是天书了。最好的测试方式,是月底关账前,让生产部门跑一遍所有类型的生产订单。配置对不对,业务最知道。

985大学毕业,前某大厂员工,啥都会点的程序员! 573

JavaFX 表视图

我们可以使用来自 JavaFX API 的 TableView,TableColumn 和 TableCell 类以表格形式表示数据。通过实现数据模型和应用单元工厂来填充表中的数据。表类可以按列排序数据,并在必要时调整列大小。

2012年开始工作,全栈开发老兵,目前已是一个老师,分享这么多年的心得体会 404

OpenCV相机标定实战:从原理到代码实现与调试技巧

相机标定是计算机视觉中的基础技术,用于确定相机的内部参数和镜头畸变系数,其核心原理是通过建立三维世界点与二维图像点之间的对应关系,利用张正友标定法等优化算法求解相机模型。这项技术的价值在于为后续的立体视觉、三维重建、机器人导航等应用提供精确的几何约束,是确保测量精度的关键前提。在工业检测、自动驾驶、增强现实等场景中,准确的标定结果直接影响系统性能。本文以OpenCV库为基础,深入解析标定流程,涵盖角点检测、亚像素精化等关键步骤,并针对实际开发中常见的参数设置、内存管理等问题提供解决方案,帮助开发者从底层理解

weixin_30855099的博客 403

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

matlab与opencv双目相机标定对比

之前听前辈说matlab标定更稳定,结果更准确,就分别用matlab和opencv标定了相机。 matlab标定过程比较麻烦,左右相机各24张图片,提取角点时一张图片点四次,还要比较小心,自己体会。。。 matlab的标定结果如下: opencv标定先使用cvCalibrateCamera2()函数对左右相机分别进行标定,再使用cvStereoCalibrate()函数进行立体标定。

minghui_的博客 7463

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

相机模型与标定(十四)--误差分析

原文: http://blog.sina.com.cn/s/blog_a492c33d0101d97n.html  看到论坛里有不少人在用OpenCV中的标定函数cvCalibrateCamera2 进行相机标定时遇到不少问题,说一些自己的看法。     1)因为cvCalibrateCamera2 函数主要是用张正友的平面标定方法的,所以首先我建议大家看一下张正友的那篇经典的论文完

工作笔记 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: 图像校正/配准
下一篇: 三维重建 - 摄像机标定和立体匹配中极线约束方法
SevenColorFish
博客等级 码龄22年 53粉丝 8原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值