计算机视觉系统应能从摄像机获取的图像信息出发,计算得到三维环境下物体的位置、形状等几何信息,并由此测量、识别环境中的物体。图像上每一点的位置与空间物体表面相应点的几何位置有关,这些位置的相互关系由摄像机成像几何模型来决定。该几何模型的参数称为摄像机参数,实验和计算得到这些参数的过程即是摄像机标定。总之,摄像机标定就是对摄像机自身的与几何和光学特性有关的参数(称为摄像机内参数),以及它相对于某一世界坐标系的三维位置和方向(称为摄像机外参数)进行确定。
标定方法主要分为传统标定方法、基于主动视觉的标定方法和自标定方法。
传统的摄像机标定方法是在一定的摄像机模型下,在摄像机前放置标定参照物(靶标),通过建立标定参照物上已知一些点的三维坐标与其图像坐标的对应关系,经过图像处理,利用一系列数学变换和计算方法,求取摄像机模型的内部参数和外部参数。该方法的优点在于可以获得较高的精度,但标定过程复杂,不适用于在线标定和不可能使用标定参照物的场合。Tsai 在 1986 年提出了经典的两步法[166],这种方法算法较简单、精度较高、使用较方便,得到了广泛使用。1992 年 Weng 在 Tsai 的基础上提出了更为全面的标定与畸变修正模型[167],即使在视场范围畸变严重时也能获得较高的精度,这是两步法的重要发展。
第二类方法是基于主动视觉的标定方法,该类方法需要控制摄像机做某些特殊运动,利用这种运动的特殊性可以计算出内参数。该类方法的优点是算法简单,往往能获得线性解,缺点是不能适用于摄像机运动未知或无法控制的场合,如 Hartley 算法[168]和马颂德提出的主动视觉系统自标定方法[169]等。
第三类方法是自标定,它使得在场景未知和摄像机运动任意的一般情形下的摄像机标定成为了可能。从本质上说,所有自标定方法都只是利用了摄像机内参数自身存在的约束,与场景和摄像机运动无关。
20 世纪末和 21 世纪初人们在传统标定方法的基础上研究了利用各种平面模板进行摄像机标定的方法,如 Zhang 提出的平面模板摄像机标定法[170],[171],Bouguet 提出的基于对偶原理的摄像机标定法[172],Zhang 提出的一维标定物进行摄像机标定的方法[173],王亮等提出的基于一维标定物的摄像机标定[174],祝海江等提出的基于两条平行线段的摄像机标定[175],这些方法相对传统标定方法简单、容易实现,同时精度也较高。
摄像机标定是建立在一定摄像机模型的基础上的。在非广角镜头情况下,传统透视模型可近似用针孔模型来作为摄像机模型。
目前用的摄像机多为透镜摄像机,理想的透镜成像模型是针孔模型,物像之间满足三角几何关系,原理如图 3.12 所示,其中f为焦距,v是透镜的像距,u为透镜的物距。
加载中...
图 3.12 摄像机透镜模型示意图
透镜模型满足等式
加载中...
当u远大于f时,得到v≈f,即将透视模型近似为针孔模型。针孔模型下,以孔心为坐标原点的坐标系下空间点的坐标与图像上点的坐标之间满足线性关系。针孔模型为完全线性模型。
实际上,由于实际的镜头并不是理想的透视成像,而是带有不同程度的畸变,使得空间点所成的像并不完全满足上述所描述的线性针孔模型,设线性条件下得到的像素点坐标为(X,Y),而受到镜头失真影响偏移的实际像平面坐标为(X′,Y′),有
加载中...
其中,δX和δY是线性畸变,它与图像点在图像中的位置有关。理论上,镜头会同时存在径向畸变和切向畸变。但一般来讲切向畸变比较小,径向畸变的修正量由距图像中心的径向距离的偶次幂多项式模型来表示,即
加载中...
其中,(u0,v0)是主点位置坐标的精确值,而
加载中...
上式表明,X方向与Y方向的畸变相对值(δX/X,δY/Y)与径向半径的平方成正比,即在图像边缘处的畸变较大。对一般计算机视觉,径向畸变已足够描述非线性畸变,这时可写成
加载中...
线性模型参数αx,αy,u0,v0与非线性畸变参数k1和k2一起构成了非线性模型的摄像机内部参数。此模型即为摄像机的非线性模型。
首先定义摄像机坐标系。如图 3.13 所示,焦平面上过中心点建立摄像机坐标系,成像平面与焦平面平行,并且两平面距离为焦距f,由于小孔成像为倒像,因此建立两坐标系xoy平面相差逆时针 180 度。
加载中...
图 3.13 摄像机坐标系与图像坐标系
由线性关系和相似三角形等几何知识易得
加载中...
加载中...
用齐次坐标和矩阵来表示上述关系式,即为
加载中...
摄像机的位置在空间坐标系下是可以任意改变的。当摄像机固定后,摄像机坐标系相对于世界坐标系的相对位置也就确定了。不难考虑到,摄像机坐标系和世界坐标系均有着XYZ三维方向矢量,因此,两坐标系之间的关系应该是两个三维坐标系之间的关系。由空间几何知识和线性代数相关知识可知,两个三维空间之间的关系可用一个旋转矩阵和平移矢量来表示。旋转矩阵表示两个坐标系之间的角度关系,平移矢量表示两个坐标系之间的位置关系,如图 3.14 所示。
加载中...
图 3.14 摄像机坐标系和世界坐标系
用齐次矩阵的形式来表示这种转换关系,设p点在世界坐标系和摄像机坐标系下的齐次坐标分别为(Xw,Yw,Zw,1)和(Xc,Yc,Zc,1)有
加载中...
其中,R为 3×3 正交单位矩阵,t为三维平移向量,0=(0,0,0)T,M1为 4×4 矩阵。
摄像机采集的图像以二维数组的形式存储于计算机内。设每幅数字图像在计算机内为M×N的二维数组,M行N列的图像中的每一个元素(称为像素,pixel)的数值即是图像点的亮度(或称灰度)。
如图 3.15 所示,在图像上定义直角坐标系u,v,每一像素的坐标(u,v)分别是该像素在数组中的列数和行数,所以,(u,v)是以像素为单位的图像坐标系坐标。由于(u,v)只表示像素位于数组中的列数与行数,并没有用物理单位表示出该像素在图像中的位置,因此,需要再建立以物理单位(如 mm)表示的图像坐标系。
加载中...
图 3.15 图像坐标系与像素坐标系
该坐标系以图像内某一点O1为原点,X轴与Y轴分别与u,v轴平行。
其中,(u,v)表示以像素为单位的图像坐标系的坐标,(X,Y)表示以 mm 为单位的图像坐标系坐标。在X,Y坐标系中,原点O1定义在摄像机光轴与图像平面的交点,该点一般位于图像中心处,但由于某些原因,也会有些偏离,若O1在u,v坐标系中的坐标为(u0,v0),每一个像素在X轴与Y轴方向上的物理尺寸为dX,dY,则图像中任意一个像素在两个坐标系下的坐标有如下关系:
原网址: 访问
创建于: 2024-04-12 15:10:07
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论