相机模型-计算机视觉

2023-11-08

摄像机的基本成像模型, 通常称为针孔模型(pinhole model), 由三维空间到像平面的中心投影变换给出.

如上图(a)所示, 空间点Oc是投影中心, 它到平面π的距离为f. 空间点Xc在平面π上的投影(像)是以点Oc为端点并经过Xc的射线与平面π的交点.

平面π称为摄像机的像平面(image plane), 点Oc称为摄像机的光心(optical center), f称为摄像机的焦距(focus), 以点Oc为端点且垂直于像平面的射线称为光轴主轴(principal axis), 主轴与像平面的交点p称为摄像机的主点(principal point).

为了从代数上描述这种投影关系, 需要建立摄像机坐标系图像平面坐标系. 如上图(b)所示, 在图像平面上, 以主点p为图像平面坐标系的原点o, 以水平线和铅直线分别为x轴和y轴, 建立图像坐标系o-xy; 在空间中, 以摄像机光心Oc为摄像机坐标系的原点, 以主轴为zc轴, 以平行于x轴且通过光心Oc的直线为xc轴, 以平行于y轴且通过光心Oc的直线为yc轴,建立摄像机坐标系Oc-xcyczc.

空间点Xc在摄像机坐标系中的欧氏坐标记为, 它的像点m在图像坐标系中的坐标记为. 从上图(b)中, 根据三角形相似原理, 可推知空间点Xc与它的像点m满足下列关系:

 (1)

上式可表达为下列矩阵形式:

 (2)

其中, 分别为空间点和图像点的齐次坐标. 它是从空间到像平面的一个齐次线性变换. 如果记

 (3)

则这个齐次线性变换可表示为更为简洁的形式:

 (4)

其中, 矩阵P是一个3x4矩阵, 通常称为摄像机矩阵(camera matrix). 这就是基本成像模型的代数表示.

注意, (4)是一个齐次等式, 表示在相差一个非零常数因子(zc)的意义下相等.

考虑到主点偏离图像中心的情况

在实际应用中, 事先不知道主点的确切位置, 因此通常都是以图像中心或者图像左上角作为图像坐标系原点来建立图像坐标系(在本文中, 除非特别说明, 都以图像中心作为图像坐标系原点). 在此坐标系下, 由于主点可能不是图像坐标系的原点, 因此摄像机矩阵不再可能具有(3)的形式.

若主点在图像坐标系下的坐标p=(x0y0z0)T, 则摄像机的投影关系变为(可自行证明):

 (5)

摄像机矩阵的形式为P=K(I, 0), 其中,

 (6)

并称它为摄像机内参数矩阵(intrinsic parameters matrix).

考虑到像素不是正方形的情况

用于计算机处理的图像通常都是用CCD摄像机获取的数字图像, 或者由模拟信号摄像机获取的图像再经过特别设备进行数字离散化的数字图像. 一般地, CCD内参数矩阵不再具有(6)的形式. 为了得到CCD摄像机的模型, 必须刻划CCD摄像机的数字离散化过程.

假定CCD摄像机数字离散化后的像素是一个矩形, 矩形的长和宽分别是dxdy. 设图像点(xy, 1)T在离散化后的坐标为(uv, 1)T, 则必有:

 (7)

如果离散化后的图像坐标仍用m表示, 则摄像机的投影关系可以写成:

 (8)

其中

 (9)

矩阵K称为CCD摄像机的内参数矩阵fx=f/dxfy=f/dy, 称为CCD摄像机在u轴和v轴上方向上的尺度因子, (u0v0)T=(x0/dxy0/dy)T, 称为CCD摄像机的主点.

考虑到像素是平行四边形的情况

由于制造工艺的限制, 一般情况下, CCD摄像机数字离散化后的像素不是一个矩形, 而是一个平行四边形. 平行四边形的一边平行于u轴, 而另一边与u轴形成一个θ(见下图).

令平行四边形两边长分别为dxdy, 图像点(xy, 1)T离散化后的坐标为(uv, 1)T, 则必有

 (10)

结合(5)式, 可得到:

 (11)

如果离散化后的图像坐标仍然用m表示, 则上式可写成:

 (12)

其中,

 (13)

是摄像机内参数矩阵fx=f/dxfyf/sinθdy, 称为一般CCD摄像机在u轴和v轴方向上的尺度因子, (u0v0)T =(( x0-y0cotθ)/dxy0/sinθdy)T称为一般CCD摄像机的主点, 而s=-fcotθ/dx称为一般CCD摄像机的倾斜因子(skew factor).

考虑到世界坐标系的情况

上面介绍的摄像机矩阵是在摄像机坐标系下的结果. 由于摄像机的中心和主轴等事先都是未知的, 因此在这个坐标系下不能给出空间点的准确坐标值; 另外摄像机可安放在环境中的任何位置, 所以需要一个基准坐标系来描述空间点和摄像机的位置. 这个基准坐标系通常称为世界坐标系(world coordinate system)或者物体坐标系(object coordinate system).

世界坐标系与摄像机坐标系之间的关系可以用旋转矩阵和平移向量来描述, 如下图所示.

令空间点在世界坐标系和摄像机的坐标分别为X=(xyz, 1)TXc=(xcyczc, 1)T, 则它们之间的关系为:

 (14)

其中, 表示光心在世界坐标系中的非齐次坐标. 以后, 点X的非齐次坐标总用表示. 将(14)式代入(12)式, 则有:

 (15)

这样, 得到摄像机矩阵的一般形式:

 (16)

矩阵称为摄像机的外参数矩阵(extrinsic parameters matrix). 有时, 也用来描述世界坐标系和摄像机坐标系之间的关系, 此时摄像机矩阵为:

 (17)

其中, .

摄像机矩阵是一个秩为3的3x4矩阵. 因为它的前三列所构成的子矩阵是一个可逆矩阵. 另外, 由于摄像机矩阵的齐次性, 所以它仅有11个独立元素.

在经典立体视觉中, 需要在欧氏坐标系下估计摄像机矩阵(camera matrix), 才能完成立体视觉系统的标定. 常用的方法是根据一些空间点在欧氏坐标系下的坐标与其图像坐标之间的对应关系, 建立关于摄像机矩阵的约束方程, 从而确定摄像机矩阵. 在实践中, 为了得到一些空间点的欧氏坐标, 需要制作一个标定参考物, 在标定参考物上经过精确测量的特征点作为估计摄像机矩阵时所需要的空间点.

记摄像机矩阵为

 (1)

其中为矩阵P的第j行向量. 令Xj=(xjyjzj, 1)T是特征点在世界坐标系下的坐标, 对应的图像点坐标为mj=(ujvj, 1)T, 于是根据摄像机的投影关系, 得到

 (2)

因此, 消去上式中常数因子sj后, 可得到下述方程:

 (3)

在这个方程组中, 第三个方程可由前两个方程线性表示, 因此只有两个方程是线性独立的. 因此, 给定N6个以上的特征点与其图像点的对应, 可线性求解摄像机矩阵P.

最小二乘解

当图像数据存在测量误差时, 方程组(3)一般不存在非零解. 此时, 通常以它的最小二乘解作为摄像机矩阵的估计. 对每一个点对应, 记

 (4)

它是一个3x12的矩阵Aj. 给定n个点对应, 得到n个形如这样的矩阵, 再将这n个矩阵组合起来得到一个3nx12的矩阵, 对A做奇异值分解(SVD), A=UDVT, 则V的最后一个列向量p=v12是方程Ap=0的最小二乘解, 再将p写成矩阵的形式就得到摄像机矩阵P.

注: 由于摄像机矩阵是齐次的, 所以我们只能在相差一个非零常数因子的意义下求解, 即所得到的摄像机矩阵P与它的标准形式K(Rt)相差一个非零常数因子.



正向投影

空间点X通过摄像机P投影到图像平面的图像点m=PX, 这种投影关系称为摄像机的正向投影, 简称投影(projection).

反向投影

反向投影是针对图像平面的基本几何元素而言的. 图像平面点m反投影(back projection)是指在摄像机P的作用下具有像点m的所有空间点的集合, 即

 (1)

在几何上, 不难看出图像点m的反投影是从摄像机中心(光心)出发并通过图像点m的一条射线, 如下图所示.

下面考虑图像点m的反投影lb在在世界坐标系下的方程. 这是非常重要的, 因为在计算机视觉中, 从多幅图像的对应点的反投影射线可以恢复空间点的三维坐标. 由于两点确定一条直线, 所以如果能够确定摄像机中心C和射线lb上另一点的空间坐标, 就可以得到射线lb在空间中的方程. 下边先来计算摄像机中心C在世界坐标系中的坐标. 令C是摄像机中心在世界坐标系中的齐次坐标, 是非齐次坐标, 即, 则

 (2)

可知, 摄像机中心C是方程PC=0的一个解. 另一方面, P仅有一维右零空间, 因为它的秩等于3. 于是, 摄像机中心的齐次坐标构成了P的右零空间. 在已知摄像机矩阵P的情况下, 可以通过求解PX=0得到摄像机中心在世界坐标系中的坐标. 事实上, 如果令P=(Hp4), 其中HP的前三列所构成的3x3矩阵, p4P的第4个列向量, 则从方程PX=0可得到摄像机中心的世界坐标为

 (3)

再考虑射线lb上的另一个空间点. 令P(3x4矩阵)的广义逆P+=PT(PPT)-1, 看看空间点P+m的情况. 将其代入投影公式,P(P+m)= (PPT)(PPT)-1m=m, 因此可以断定P+m必定在射线lb上. 于是, 根据lb上的两个点CP+m, 就能得到lb的下述参数方程:

 (4)



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

相机模型-计算机视觉 的相关文章

  • flutter 点击事件写法

    onTapUp onTapDown void onTapDown TapUpDetails details async 或者是 onTapDown e selectCommonWordIndex index mySetState

随机推荐

  • vue-入门篇

    1 目标 了解什么是VUE 2 vue基础 2 1 概述 官网 https cn vuejs org Vue js是一套构建用户界面的渐进式框架 Vue 采用自底向上增量开发的设计 Vue 的核心库只关注视图层 它不仅易于上手 还便于与第三
  • MySQL - 表索引概述

    索引概述 基本概念 日常生活中 我们经常会在电话号码簿中查阅 某人 的电话号码 按姓查询或者按字母排序查询 在字典中查阅 某个词 的读音和含义等等 以快速的找到特定记录 在这里 姓 和 字母 都可看作是索引 而按 姓 或者 字母 查询则是按
  • 进程控制一之进程创建、进程终止、进程等待

    进程创建 创建子进程使用fork函数 fork有两个返回值 pid t fork void pid t相当于int 失败 返回小于0的值 成功 0 返回给子进程 大于0 返回子进程的pid给父进程 fork失败原因 内存不足 创建PCB是需
  • 程序员编程艺术PDF

    程序员编程艺术 链接 https pan baidu com s 1XWk E2DIJwYRlXNGwB LHA 提取码 nptd
  • Java基础(24)——异常、处理异常的方式详解及示例

    Java基础 24 异常详解 版权声明 一 异常体系 1 概述 2 异常的根类 Throwable 3 错误 Error 4 Exception 二 异常的处理方式 1 默认的异常处理方式 2 try catch方式 1 基本知识 2 使用
  • boost::sort::block_indirect_sort相关的测试程序

    boost sort block indirect sort是Boost库中的一个排序算法 它在排序大型数据集时表现出色 本文将介绍如何使用Boost库中的block indirect sort算法 并提供一个相关的测试程序 首先 确保已经
  • 帆软设置参数框样式

    修改前 修改后 ps 取消掉参数面板的 常用参数组合 自定义初始化控件后点击文本框会弹出对应的显示框 each this options form name widgets function i item console info item
  • android.util.AndroidRuntimeException: You cannot combine custom titles with other title features

    在做项目的时候自定义一个TitleBar 但是 其中是用到TabHost ActivityGroup 左右滑动的时候 由于TabHost中有个默认的titleBar 而在哪个自己的主界面也有一个titlebar 两个冲突了所以会报错andr
  • 【算法竞赛宝典】语言之争

    算法竞赛宝典 语言之争 题目描述 代码展示 题目描述 代码展示 语言之争 include
  • linux下查看系统安装时间,Linux下如何查看系统启动时间和运行时间以及安装时间...

    1 uptime命令 输出 16 11 40 up 59 days 4 21 2 users load average 0 00 0 01 0 00 2 查看 proc uptime文件计算系统启动时间 cat proc uptime 输出
  • 数值计算笔记之插值(三) 分段线性插值

    0 回顾 对于 拉格朗日插值多项式与牛顿插值多项式的统一 次拉格朗日插值多项式为 其中 牛顿插值公式 在插值节点 插值条件相同的情况下 二者本质一样 只是计算过程不一样 牛顿插值适合需要增加节点 提高精度的情况 不需要重新开始计算 可以利用
  • dfs和bfs求二叉树的深度

    方法一 后序遍历 DFS 树的后序遍历 深度优先搜索往往利用 递归 或 栈 实现 本文使用递归实现 关键点 此树的深度和其左 右 子树的深度之间的关系 显然 此树的深度 等于 左子树的深度 与 右子树的深度 中的 最大值 1 终止条件 当
  • 数据结构_43

    主要内容 背包问题 关键路径 一 背包问题 给定空间 给定物品 选取最符合条件的物品 0 1背包 完全背包 多重背包 二 关键路径 AOV网中完成所有事件需要的最短时间 最长路径 关键活动所在的路径 AOV网 有向带权图 起点 入度为零 终
  • 机械革命旷世e win10 ubuntu20双系统(安装与删除)

    参考 https www bilibili com video BV1554y1n7zv 这里面把整体性的东西说的很清楚 这里我主要记录对这个机型的一些特别不一样的地方 注意事项 1 一定要先解决磁盘的bitlocker状态 那个有影响 2
  • FISCO BCOS(十九)———新开虚拟机在搭建区块链平台时的部分问题及解决办法

    1 新开虚拟机的密码认证问题 2 网卡固定问题 root wyg virtual machine vim etc netplan 01 network manager all yaml 3 ubuntu远程连接的问题 4 无法解析域名 cn
  • 魔兽世界怀旧服哪个服务器金价稳定,魔兽世界怀旧服 金价到底会跌到多少的分析...

    原标题 魔兽世界怀旧服 金价到底会跌到多少的分析 魔兽世界怀旧服有一个特点 大家对金价的敏感程度堪比外汇买家 在外汇交流群都没见过如此频率的价格关注与分析 在魔兽怀旧服 几乎人人都是满仓炒家 每次金价下跌一片哀嚎的景象 还真是MMORPG里
  • adb push&pull文件方法

    adb push命令 从电脑上传送文件到设备 adb pull命令 从手机传送文件到电脑 pull命令 从手机传送文件到电脑 a cmd 控制台 adb connect ip 连接设备 b adb devices查看设备连接情况 c 将设备
  • 【VS2010学习笔记】【函数学习】一(VC6.0和VS2010主函数的不同)

    问题 为什么VC6 0中主函数为main 而VS2010中为 tmain 1 Main是所有c或c 的程序执行的起点 tmain是main为了支持unicode所使用的main的别名 tmain 不过是unicode版本的的main 2 t
  • 题目 1052: [编程入门]链表合并

    已有a b两个链表 每个链表中的结点包括学号 成绩 要求把两个链表合并 按学号升序排列 输入格式 第一行 a b两个链表元素的数量N M 用空格隔开 接下来N行是a的数据 然后M行是b的数据 每行数据由学号和成绩两部分组成 输出格式 按照学
  • 相机模型-计算机视觉

    摄像机的基本成像模型 通常称为针孔模型 pinhole model 由三维空间到像平面的中心投影变换给出 如上图 a 所示 空间点Oc是投影中心 它到平面 的距离为f 空间点Xc在平面 上的投影 像 是以点Oc为端点并经过Xc的射线与平面