相机模型详解

2023-05-16

相机模型

数码相机图像拍摄的过程实际上是一个光学成像的过程。相机的成像过程涉及到四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系以及这四个坐标系的转换。

理想透视模型——针孔成像模型

相机模型是光学成像模型的简化,目前有线性模型和非线性模型两种。实际的成像系统是透镜成像的非线性模型。最基本的透镜成像原理如图所示:


其中 u 为物距, f 为焦距,v 为相距。三者满足关系式:


相机的镜头是一组透镜,当平行于主光轴的光线穿过透镜时,会聚到一点上,这个点叫做焦点,焦点到透镜中心的距离叫做焦距 f。数码相机的镜头相当于一个凸透镜,感光元件就处在这个凸透镜的焦点附近,将焦距近似为凸透镜中心到感光元件的距离时就成为小孔成像模型。小孔成像模型如图所示。


小孔成像模型是相机成像采用最多的模型。在此模型下,物体的空间坐标和图像坐标之间是线性的关系,因而对相机参数的求解就归结到求解线性方程组上。四个坐标系的关系图如下图所示,其中 M 为三维空间点,m 为 M 在图像平面投影成的像点。


世界坐标系:是客观三维世界的绝对坐标系,也称客观坐标系。因为数码相机安放在三维空间中,我们需要世界坐标系这个基准坐标系来描述数码相机的位置,并且用它来描述安放在此三维环境中的其它任何物体的位置,用(Xw, Yw, Zw)表示其坐标值。

相机坐标系(光心坐标系):以相机的光心为坐标原点,X 轴和Y 轴分别平行于图像坐标系的 X 轴和Y 轴,相机的光轴为Z 轴,用(Xc, Yc, Zc)表示其坐标值。

图像坐标系:以CCD 图像平面的中心为坐标原点,X轴和Y 轴分别平行于图像平面的两条垂直边,用( x , y )表示其坐标值。图像坐标系是用物理单位(例如毫米)表示像素在图像中的位置。

像素坐标系:以 CCD 图像平面的左上角顶点为原点,X 轴和Y 轴分别平行于图像坐标系的 X 轴和Y 轴,用(u , v )表示其坐标值。数码相机采集的图像首先是形成标准电信号的形式,然后再通过模数转换变换为数字图像。每幅图像的存储形式是M × N的数组,M 行 N 列的图像中的每一个元素的数值代表的是图像点的灰度。这样的每个元素叫像素,像素坐标系就是以像素为单位的图像坐标系。

像素坐标系与图像坐标系的关系如图。


他们之间的转换关系为:


采用齐次坐标再用矩阵形式将上式表示为:

其中(u0, v0)是图像坐标系原点在像素坐标系中的坐标,dx dy分别是每个像素在图像平面x y方向上的物理尺寸。

图像坐标系与相机坐标系的转换为:


其中 f 为焦距(像平面与相机坐标系原点的距离)。用齐次坐标系和矩阵表示上述关系:


相机坐标系与世界坐标系的变换为:


其中 R 为3 × 3正交旋转矩阵,t 为三维平移向量,综合起来:


ax, ay分别是图像水平轴和垂直轴的尺度因子。K的参数中只包含焦距、主点坐标等只由相机的内部结构决定,因此称 K 为内部参数矩阵,ax, ay , u0, v0叫做内部参数。M1中包含的旋转矩阵和平移向量是由相机坐标系相对于世界坐标系的位置决定的,因此称M1为相机的外部参数矩阵,R和t叫做外部参数,M 叫投影矩阵相机标定就是确定相机的内部参数和外部参数。

实际成像模型

理想的透视模型是针孔成像模型,物和像会满足相似三角形的关系。但是实际上由于相机光学系统存在加工和装配的误差,透镜就并不能满足物和像成相似三角形的关系,所以相机图像平面上实际所成的像与理想成像之间会存在畸变。畸变属于成像的几何失真,是由于焦平面上不同区域对图像的放大率不同形成的画面扭曲变形的现象,这种变形的程度从画面中心至画面边缘依次递增,主要在画面边缘反映比较明显。为了减小畸变,拍摄图片时应尽量避免用镜头焦距的最广角端或最远端拍摄。实际的相机成像模型如下图所示。


其中 mr(xr,yr)表示实际投影点的像平面坐标系下的物理坐标,mi(xi,yi)表示理想投影点的像平面坐标系下的物理坐标。镜头的畸变模型可表示为:


σx 和σy是非线性畸变值,它包括径向畸变和偏心畸变和薄棱镜畸变等。

理论上来说镜头都存在径向和切向畸变,但是通常径向畸变较大,切向畸变较小。径向畸变的模型可由下面的模型来表示:

其中k1 k2 k3……示径向畸变系数,通常情况下径向畸变系数只考虑到一阶或二阶就可以满足精度需求了。

偏心畸变模型是由于多个光学镜头的光轴不能完全共线产生的,这种畸变是由径向和切向畸变共同构成的,数学模型可表示如下:


其中p1, p2为切向畸变系数。薄棱镜畸变是由于镜头设计制造缺陷和加工安装所造成的,如镜头与相机成像平面有一个很小的倾角等。因为薄棱镜畸变非常小,通常不考虑,这里只考虑径向畸变和偏心畸变,畸变总的可以表示为:


实际的成像模型为:


******************

作者:hao_09

时间:2015/8/13

文章地址:http://blog.csdn.net/lsh_2013/article/details/47615309

******************



 

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

相机模型详解 的相关文章

  • 中国交通标志检测数据集

    版权声明 xff1a 本文为转发问 xff0c 原文见博客 https blog csdn net dong ma article details 84339007 中国交通标志检测数据集 xff08 CCTSDB xff09 来源于 A
  • CentOS 修改ls目录的颜色

    修改ls目录的颜色 linux系统默认目录颜色是蓝色的 xff0c 在黑背景下看不清楚 xff0c 可以通过以下2种方法修改ls查看的颜色 bash profile文件在用的根目录下 xff0c ls al可以看到 方法一 xff1a 1
  • Tiny210(S5PV210) U-BOOT(六)----DDR内存配置

    上次讲完了Nand Flash的低级初始化 xff0c 然后Nand Flash的操作主要是在board init f nand xff0c 中 xff0c 涉及到将代码从Nand Flash中copy到DDR中 xff0c 这个放到后面实
  • NAND FLASH命名规则

    基于网络的一个修订版 三星的pure nandflash xff08 就是不带其他模块只是nandflash存储芯片 xff09 的命名规则如下 xff1a 1 Memory K 2 NANDFlash 9 3 Small Classifi
  • s3c6410 DMA

    S3C6410中DMA操作步骤 xff1a 1 决定使用安全DMAC SDMAC 还是通用DMAC DMAC xff1b 2 开始相应DMAC的系统时钟 xff0c 并关闭另外一组的时钟 xff08 系统默认开启SDMA时钟 xff09 x
  • Visual Studio和VS Code的区别

    1 Visual Studio简介 xff1a 是一个集成开发环境 IDE xff0c 安装完成后就能直接用 xff0c 编译工具 xff0c 调试工具 xff0c 各个语言的开发工具 xff0c 都是已经配置好的 xff0c 开箱即用 适
  • 博客转移

    由于CSDN 文章不间断的会丢失图片 xff0c 然后逼格也不够高 xff0c 导致几年都没有写博客 xff0c 全部是记录至印象笔记中 xff0c 但是久了也不太好 xff0c 所以最近搞了一个自己的个人博客 xff0c 以后文章全部写至
  • 安装qt-everywhere-opensource-src-4.8.6

    1 下载 qt everywhere opensource src 4 8 6 http mirrors hust edu cn qtproject official releases qt 4 8 4 8 6 qt everywhere
  • CentOS6.5上安装qt-creator-opensource-linux-x86-3.1.2.run

    1 qt creator opensource linux x86 3 1 2 run的下载 wget http mirrors hustunique com qt official releases qtcreator 3 1 3 1 2
  • atoi()函数

    atoi 函数 原型 xff1a int atoi xff08 const char nptr xff09 用法 xff1a include lt stdlib h gt 功能 xff1a 将字符串转换成整型数 xff1b atoi 会扫描
  • ubuntu中printk打印信息

    1 设置vmware添加seria port 使用文件作为串口 2 启动ubuntu xff0c 修改 etc default grub GRUB CMDLINE LINUX DEFAULT 61 34 34 GRUB CMDLINE LI
  • 静态库、共享库、动态库概念?

    通常库分为 xff1a 静态库 共享库 xff0c 动态加载库 下面分别介绍 一 静态库 xff1a 1 概念 xff1a 静态库就是一些目标文件的集合 xff0c 以 a结尾 静态库在程序链接的时候使用 xff0c 链接器会将程序中使用
  • 链表——怎么写出正确的链表?

    链表 相比数组 xff0c 链表不需要一块连续的内存空间 xff0c 而是通过指针将一组零散的内存块串联起来使用 xff0c 而这里的内存块就叫做节点 xff0c 一般节点除了保存data还会保存下一个节点的地址也就是指针 单链表 头节点
  • 【STM32】STM32 变量存储在片内FLASH的指定位置

    在这里以STM32L4R5为例 xff08 官方出的DEMO板 xff09 xff0c 将变量存储在指定的片内FLASH地址 xff08 0x081F8000 xff09 一 MDK Keil软件操作 uint8 t version spa
  • 【STM32】 利用paho MQTT&WIFI 连接阿里云

    ST联合阿里云推出了云接入的相关培训 xff08 基于STM32的端到端物联网全栈开发 xff09 xff0c 所采用的的板卡为NUCLEO L4R5ZI板 xff0c 实现的主要功能为采集温湿度传感器上传到阿里云物联网平台 xff0c 并
  • 【STM32 】通过ST-LINK utility 实现片外FLASH的烧写

    目录 前言 一 例程参考及讲解 1 1 Loader Src c文件 1 2 Dev Inf c文件 二 程序修改 三 实测 参考 前言 在单片机的实际应用中 xff0c 通常会搭载一些片外FLASH芯片 xff0c 用于存储系统的一些配置
  • 基于FFmpeg的推流器(UDP推流)

    一 推流器对于输入输出文件无要求 1 输入文件可为网络流URL xff0c 可以实现转流器 2 将输入的文件改为回调函数 xff08 内存读取 xff09 的形式 xff0c 可以推送内存中的视频数据 3 将输入文件改为系统设备 xff08
  • 十进制转十六进制的C语言实现

    include lt stdio h gt include lt stdlib h gt include lt string h gt void reversestr char source char target unsigned int
  • Linux中断处理的“下半部”机制

    前言 中断分为硬件中断 xff0c 软件中断 中断的处理原则主要有两个 xff1a 一个是不能嵌套 xff0c 另外一个是越快越好 在Linux中 xff0c 分为中断处理采用 上半部 和 下半部 处理机制 一 中断处理 下半部 机制 中断
  • Linux中的workqueue机制

    转载与知乎https zhuanlan zhihu com p 91106844 一 前言 Linux中的workqueue机制是中断底半部的一种实现 xff0c 同时也是一种通用的任务异步处理的手段 进入workqueue队列处理的任务

随机推荐

  • 嵌入式编程通用Makefile

    一 根目录下Makefile 这个Makefile为主Makefile CROSS COMPILE span class token operator 61 span AS span class token operator 61 span
  • Hi3798 PWM输出控制背光

    一 PWM配置说明 Hi3798 具有3个PWM输出端口 通过查阅 Hi3798M V200 低功耗方案 使用指南 pdf 可得 xff1a 通过查阅Hitool工具可以查看到三个PWM端口的寄存器分别为 xff1a 通过原理图可得 xff
  • Hi3798移植4G模块(移远EC20)

    Hi3798移植4G模块 xff08 移远EC20 xff09 一 前言二 USB驱动修改2 1 添加VID和PID信息2 2 添加空包处理机制2 3 添加复位重连机制2 4 修改内核配置 三 GoBiNet测试程序 一 前言 本次系统采用
  • uniapp小视频项目:滑动播放视频

    文章目录 1 监听视频滑动2 播放和暂停3 增加播放 暂停视频功能4 增加双击点赞5 控制首个视频自动播6 动态渲染视频信息 1 监听视频滑动 给 swiper 增加 64 change 61 34 change 34 xff0c 这个时间
  • Vue github用户搜索案例

    文章目录 完成样式请求数据完善使用 vue resource 完成样式 1 public 下新建 css 文件夹 xff0c 放入下载好的 bootstrap css xff0c 并在 index html 中引入 2 新建 Search
  • 【敬伟ps教程】平移、缩放、移动、选区

    文章目录 平移抓手工具旋转抓手 缩放工具移动工具详解选区选区工具详解 平移 抓手工具 当打开一张大图时 xff0c 可以通过修改底部的百分比或使用抓手工具 xff08 H或在任何时候按住空格键来使用抓手工具 xff09 来查看更多细节 使用
  • 【敬伟ps教程】套索、魔棒工具、快速选择工具、选区的编辑和调整

    文章目录 套索工具自由套索多边形套索磁性套索工具 魔棒工具快速选择工具选区的编辑和调整 套索工具 自由套索 套索工具的用法 xff0c 点击鼠标左键拖动鼠标建立选区 当选区没闭合时 xff0c 松开鼠标会自动闭合选区 套索工具灵活快速但不够
  • Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

    项目是 vite 43 vue 43 ts 运行 npm run dev可以正常运行 xff0c 运行 npm run build 报错 解决办法 xff1a 1 先打开cmd全局命令窗口 xff0c 输入 npm install g in
  • 安卓手机投屏到win10电脑

    PC端操作 手机端操作 xff08 Mi6为例 xff09 pc端弹出提示 xff0c 选择是
  • 用Windows自带画图软件吸取色值

    1 打开画图windows自带画图软件 2 用qq截图要吸取颜色的图片 xff0c ctrl 43 v粘贴到画图软件中 3 点击取色器 xff0c 吸取颜色 xff0c 这是会看到吸取成功的颜色 4 打开编辑颜色 5 这样就得到了RGB颜色
  • 打开浏览器默认是360导航解决办法

    Chrome Chrome的设置中已经设置了百度为启动页 但是打开Chrome显示的还是360 解决办法很简单就是把桌面的快捷方式删除 xff0c 然后在安装目录重新生成快捷方式到桌面即可 Microsoft Edge 这个360修改的就更
  • 打开项目报错Error:Could not get unknown property 'mave' for project ':app' of type org.gradle.api.Project.

    今天打开项目 xff0c 报错如下 xff1a 打开gradle properties xff0c 发现最后的MAVEN URL地址错乱 xff0c 改完就可以了
  • Eclipse自带的抓包工具

    打开Eclipse window show view other 现在访问之前写的项目 http localhost 8888 android jsp flight index jsp 查看Eclipse
  • Fiddler抓取手机端APP接口数据(包括https)

    下载安装Fiddler https pan baidu com s 12zAt0r8lcHTszekOOcqeLg 环境要求 PC机和手机连接在同一网络下 设置 1 记录pc端地址 2 如果不显示这个工具栏 xff0c 可以设置View S
  • 【Git】Git撤销add操作

    Git add错了文件怎么办 xff1f 可以查看以下两篇 https git scm com book zh v1 Git 基础 记录每次更新到仓库 https git scm com book zh v1 Git 基础 撤消操作 我们来
  • Cygwin安装教程

    简介 cygwin是一个在windows平台上运行的unix模拟环境 xff0c 是cygnus solutions公司开发的自由软件 Cygwin就是一个windows软件 xff0c 该软件就是在windows上仿真linux操作系统
  • 学习Kalibr工具--Camera标定过程

    这里介绍用kalibr工具对相机进行单目和双目的标定 xff1b 在kalibr中不仅提供了IMU与camera的联合标定工具 xff0c 也包含了camera的标定工具箱 xff1b 准备 安装好kalibr之后 xff0c 开始准备标定
  • 常用NMEA0183的报文解析

    NMEA0183报文包括GPGGA GPRMC GPVTG等报文 xff0c 本文主要介绍NMEA0183语句报文的格式以及解析 xff0c 方便有关位置信息编程或者有关位置获取的其他方面 1 GPGGA GPGGA消息包含详细的GNSS定
  • 03 - 雷达的基本组成

    目录 1 雷达发射机 2 雷达天线 3 雷达接收机 4 雷达信号处理机 5 雷达终端设备 以典型单基地脉冲雷达为例来说明雷达的基本组成及其作用 如图1 5所示 xff0c 它主要由天线 发射机 接收机 信号处理机和终端设备等组成 1 雷达发
  • 相机模型详解

    相机模型 数码相机图像拍摄的过程实际上是一个光学成像的过程 相机的成像过程涉及到四个坐标系 xff1a 世界坐标系 相机坐标系 图像坐标系 像素坐标系 以及这四个坐标系的转换 理想透视模型 针孔成像模型 相机模型是光学成像模型的简化 xff