相机标定详解

在使用相机的视觉任务中,我们总是听到相机标定这个词, 那么相机标定到底是干什么, 为什么要进行相机标定呢? 常用的相机标定方法又有哪些呢? 本文试图从这几个方面来详细解释相机标定。 与其他的文章不同, 本文抛开繁琐的数学公式以及成像几何原理, 用通俗易懂的方式来解释。

1 相机标定是什么

相机标定简单地说就是为了计算出相对准确的相机参数, 通常包括内参和外参。 内参就是相机本身的一些参数, 如焦距, 畸变等。 外参就是跟场景相关的一些参数, 比如相机相对于某一参考坐标系平移, 旋转了多少。

2 为什么要标定

上面说了, 标定主要是为了计算出内参和外参。
内参通常相机生产出来就固定了, 但是通常都是有误差的, 这个误差来源很多, 如装配误差, 器件的不一致性等等。 有时这个误差会很大, 因此在使用前非常有必要进行标定。

外参标定通常跟使用场景有关, 比如用视觉定位的时候, 就需要知道相机坐标系与世界坐标系之间的映射关系, 那么这个时候就需要进行外参的标定。

3 怎么标定

相信大家看到最多的标定方式就是棋盘格标定了。 没错, 这个标定方式确实是当前最常用, 也很强大的标定方法了。

那么这个标定方法具体是怎么做的呢?
其实操作起来也很简单:

  • 首先, 准备一个标定板。 (网上下载一个棋盘格图案打印出来即可)
  • 然后用待标定相机从多个不同位置和角度拍摄多组图片, 10几张通常就足够了。 (当然也可以相机不动, 移动标定板)
  • 最后就是计算了。 得到多组图像后, 标定板上各个点的坐标我们是已知的,通过拍摄的图像我们又知道了像素坐标。 这些点一一对应起来, 实际上就得到了很多的点对。 通过这些点对, 我们就可以计算出相机的内参和外参。 当然这种情况下, 我们更关注的是内参, 因为这个外参是相对的, 标定板换个不同位置这个外参就变了, 实际上没啥用处。 这个计算通常也不需要我们自己写算法, 有很多现成的库都有, 如opencv等等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/10553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业破产重整:从“至暗时刻”到“涅槃重生”

今天我们不谈星辰大海,而是要潜入商业世界的深海区,探索那些濒临绝境的企业是如何借助“破产重整”的神秘力量,实现惊天大逆转的! 一、破产重整,到底是个啥? 想象一下,企业像是一位远航的船长…

【目标检测论文解读复现NO.37】基于改进的 YOLOv8 变电设备红外图像检测

前言 此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文&#xff0c…

C语言基础——循环语句

🌺​🙏🙏🙏欢迎大家观看,写的好的话希望三连感谢🙏🙏🙏🌺 文章目录 一、循环语句的介绍 二、不同循环语句的使用 1.while循环 1.1 while循环的使用方式 1.2 while循环的执…

【免费Java系列】大家好 ,今天是学习面向对象高级的第十二天点赞收藏关注,持续更新作品 !

这是java进阶课面向对象第一天的课程可以坐传送去学习http://t.csdnimg.cn/Lq3io day10-多线程 一、多线程常用方法 下面我们演示一下getName()、setName(String name)、currentThread()、sleep(long time)这些方法的使用效果。 public class MyThread extends Thread{publi…

进入泛型的世界

泛型的理解和好处 泛型的好处 编译时,检查添加元素的类型,提高了安全性减少了类型转换的次数,提高效率 不使用泛型 Dog-加入->Object-取出->Dog(向下转型) Dog放入到ArrayList 会先转成Object,在转…

SpringBoot自定义初始化sql文件 支持多类型数据库

我在resources目录下有init.sql初始化sql语句 指定sql文件的地址 sql内容如下: /*角色表*/ INSERT INTO #{schema}ccc_base_role (id, create_time, create_user_id, is_delete, role_name, status, update_time, update_user_id) VALUES(b89e30d81acb88448d412…

壹资源知识付费系统源码-小程序端+pc端

最新整理优化,含微信小程序和pc网页。内置几款主题,并且可以自己更改主题样式,各区块颜色,文字按钮等。 适用于知识付费类资源类行业。如:项目类,小吃技术类,图书类,考研资料类&…

react配置@指向src目录

一、在vite.config.ts中添加配置 import path from "path";// https://vitejs.dev/config/ export default defineConfig({plugins: [react()],resolve: {alias: {"": path.resolve(__dirname, "./src")}} });这时候引入的会path模块报红&#…

漫谈AI时代的手机

以chatGPT 为代表的大语言的横空出世使人们感受到AI 时代的到来,大语言模型技术的最大特点是机器能”懂人话“,”说人话“了。如同历史上任何一个革命性工具的出现一样,它必将对人类生活和工作产生巨大的影响。 在这里。我们不妨畅想一下啊AI…

在线教育系统营销,培训机构的办学特色有哪些?如何突出?

随着大家对教育的重视,市场上的培训机构也越来越多,同行之间的竞争也越发激烈,很多创业者也想加入到培训机构,那培训机构办学特色有哪些?如何突出? 不同的培训机构特色是不同的,有艺术类、学科类…

IM是什么意思?

IM(即时通讯)作为现代通讯领域的重要且普遍应用,已成为人们日常生活和工作中不可或缺的通信方式。随着科技的不断发展和互联网的普及,IM工具通过实时信息传递,将沟通变得更加迅速、便捷、高效。 IM的诞生极大地改变了…

HarmonyOS NEXT星河版之模拟图片选择器(下)---使用Swiper实现图片滑动预览

文章目录 一、目标二、开撸2.1 改造图片预览Dialog2.2 改造主页面2.3 主页面完整代码 三、小结 一、目标 在前面的介绍中,查看选中的图片都是单张预览,接下来要改造成多张可滑动预览,如下: 二、开撸 2.1 改造图片预览Dialog …

刷t2、、、

、、 public class ThisTest {public static void main(String args[]) {int i;for (;;) {System.out.println(1);}} } while()的循环条件等于for中循环条件。循环体会有一个条件改变等于for中类似自增条件。while()判断条件一般在while前面会初始化跟for中初始化一样。这样 w…

CSS滑动门

CSS滑动门使各种特殊形状的背景能够自动拉伸滑动,以适应元素内部的文本内容,其原理是:利用CSS精灵和盒子撑开宽度适应不同字数的导航栏。 特点: 1.可以根据导航字数自动调节宽度; 2.可以以简单的背景图实现炫彩的导航条…

十分钟“手撕”内部类+static在内部类的使用

前言: 由于写内部类代码中运用了很多static的知识,所以在代码中书写了大量通俗易懂的关于static使用方法,以及为什么会报错,该怎么调整。耐心看完不仅能熟悉内部类,还会对static有不一样的收获。 一、什么是内部类 内…

CentOS 8.5 安装配置 Tinyproxy 轻量代理服务器 Windows10 系统设置http代理 详细教程

1 下载 下载地址 2 上传服务器并解压 tar zxvf tinyproxy-1.11.2.tar.gz 3 安装配置 #安装依赖软件 yum install automake cd tinyproxy-1.11.2/ #生成configure ./autogen.sh # ./configure --prefix/usr/local/tinyproxy make make install 4 配置环境 vim /etc/prof…

【LAMMPS学习】八、基础知识(6.4)Moltemplate​​​​​​​教程

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各种模拟。 …

Excel快速填充序号的方法

Excel快速填充序号常用的方法。 方法一:填充前面序号后拖拽 特点: 能有规律的填充,排序的行数由拖拽的行数决定。 此方法填充的序号等效于手打的序号,删除一行后下一行不会自动更新排序。 步骤:输入两个初始序号&…

Python | Leetcode Python题解之第83题删除排序链表中的重复元素

题目: 题解: class Solution:def deleteDuplicates(self, head: ListNode) -> ListNode:if not head:return headcur headwhile cur.next:if cur.val cur.next.val:cur.next cur.next.nextelse:cur cur.nextreturn head

matlab使用教程(69)—创建包含多个 x 轴和 y 轴的图

此示例说明如何创建这样一张图,通过坐标区底部和左侧的轴放置第一个绘图,并通过坐标区顶部和右侧的轴放置第二个绘图。 使用 line 函数绘制一个红色线条。将 x 轴和 y 轴的轴线颜色设置为红色。 注意:从 R2014b 开始,您可以使用圆…