光学成像模型\和物距、像距、焦距、三者关系\和世界坐标、相机坐标、图像坐标、像素坐标关系\和图像畸变标定处理(二)

本文主要是介绍光学成像模型\和物距、像距、焦距、三者关系\和世界坐标、相机坐标、图像坐标、像素坐标关系\和图像畸变标定处理(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

来自百度百科:https://zhidao.baidu.com/question/55907940.html
原文链接:https://blog.csdn.net/qq_35250841/article/details/106198870
原文链接:😕/blog.csdn.net/weixin_44523062/category_9977613.html

零、小孔成像模型
在这里插入图片描述
在这里插入图片描述

一、凸透镜,物距、像距、焦距、三者关系

物距为u,像距为v,焦距为f,三者的关系为:1/v +1/u=1/f。

根据该关系,不同的物距、像距、焦距的关系使得成像特点不同:

1、当物距大于2倍焦距时,则像距在1倍焦距和2倍焦距之间,成倒立、缩小的实像。此时像距小于物距,像比物小,物像异侧。应用:照相机、摄像机。

2、当物距等于2倍焦距时,则像距也在2倍焦距, 成倒立、等大的实像。此时物距等于像距,像与物大小相等,物像异侧。应用:测焦距。

3、当物距小于2倍焦距、大于1倍焦距时,则像距大于2倍焦距, 成倒立、放大的实像。此时像距大于物距,像比物大,物像异侧。应用:投影仪、幻灯机、电影放映机。

4、当物距等于1倍焦距时,则不成像,成平行光射出。

5、当物距小于1倍焦距时,则成正立、放大的虚像。此时像距大于物距,像比物大,物像同侧。应用:放大镜。

在这里插入图片描述
在这里插入图片描述

二、凸透镜光学成像模型

最上面一条从物体发出并平行于透镜的光轴,经过透镜折射后穿过另一侧的焦点。第二条光束穿过透镜左侧的焦点,经过折射,与光轴平行。第三条光束直接穿过透镜中心。因为透镜垂直于主光轴并且厚度很小,当光透过其中心时,折射可以忽略不计。

在这里插入图片描述其中 u 为物距, f 为焦距,v 为相距。三者满足关系式:在这里插入图片描述

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

四、相机模型四个坐标系

	数码相机图像拍摄的过程实际上是一个光学成像的过程。相机的成像过程涉及到四个坐标系:

世界坐标系、相机坐标系、图像坐标系、像素坐标系以及这四个坐标系的转换。

①世界坐标系:是客观三维世界的绝对坐标系,也称客观坐标系。因为数码相机安放在三维空间中,我们需要世界坐标系这个基准坐标系来描述数码相机的位置,并且用它来描述安放在此三维环境中的其它任何物体的位置,用(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 列的图像中的每一个元素的数值代表的是图像点的灰度。这样的每个元素叫像素,像素坐标系就是以像素为单位的图像坐标系

在这里插入图片描述

1)、模型一
四个坐标系的关系图如下图所示,其中 M 为三维空间点,m 为 M 在图像平面投影成的像点。

在这里插入图片描述
2)、模型二
四个坐标系的关系图如下图所示,其中 M 为三维空间点,m 为 M 在图像平面投影成的像点。
在这里插入图片描述
3)、模型三
四个坐标系的关系图如下图所示,其中 P 为三维空间点,p 为 P 在图像平面投影成的像点。
在这里插入图片描述
4)、模型四
四个坐标系的关系图如下图所示,其中 P 为三维空间点,p 为 P 在图像平面投影成的像点。真实世界中的空间点
Pw(Xw, Yw, Zw), 其对应的相机坐标系坐标为Pc(Xw, Yw, Zw), 对应的图像坐标
系坐标为P(x ,y),对应的像素坐标为p(u, v)。

在这里插入图片描述
五、像素坐标系与图像坐标系
在这里插入图片描述
他们间的转换公式,其中(u0, v0)是图像坐标系原点在像素坐标系中的坐标,dx 和 dy分别是每个像素在图像平面x和 y方向上的物理尺寸。
在这里插入图片描述
1、采用齐次坐标再用矩阵形式将上式表示为
在这里插入图片描述
2、也可以写成下面
在这里插入图片描述
在这里插入图片描述
六、图像坐标系与相机坐标系
在这里插入图片描述
其中 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为切向畸变系数。薄棱镜畸变是由于镜头设计制造缺陷和加工安装所造成的,如镜头与相机成像平面有一个很小的倾角等。因为薄棱镜畸变非常小,通常不考虑,这里只考虑径向畸变和偏心畸变,畸变总的可以表示为:
在这里插入图片描述
实际的成像模型为:
在这里插入图片描述

下面的是另一个博客参考的,感觉不是这样,我实际开发项目用的模型是上面的,采用opcv库,MATLAB获取标定参数(下章节将讲到如何标定,畸变校正)

,但是公式可以参考一下。
上面推导了相机投影成像的数学模型, 这是在理想状况下推导的, 实际上由于相机
光学系统存在加工和装配的误差, 透镜就并不能满足物和像成相似三角形的关系, 所以
相机图像平面上实际所成的像与理想成像之间会存在畸变。 畸变属于成像的几何失真,
是由于焦平面上不同区域对图像的放大率不同形成的画面扭曲变形的现象, 这种变形的
程度从画面中心至画面边缘依次递增, 主要在画面边缘反映比较明显。
相机的畸变可以由非线性模型来表示, 由于公式比较复杂, 对于推导过程, 此处将
不再赘述, 最后给出简化后的畸变模型:
在这里插入图片描述
其中(X,Y,Z)为世界坐标系下的坐标, (x,y,x)为相机坐标系下的坐标, 归一化为(x’,y’),
(x’’,y’’)为加入畸变参数的归一化坐标, (u,v)为畸变模型下的像素坐标。݇K1, ݇2, ݇3, ݇4, ݇5, ݇6,为 径向畸变参数, ݌1, ݌2为切向畸变参数。

这篇关于光学成像模型\和物距、像距、焦距、三者关系\和世界坐标、相机坐标、图像坐标、像素坐标关系\和图像畸变标定处理(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/165806

相关文章

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

一文带你深入了解Python中的GeneratorExit异常处理

《一文带你深入了解Python中的GeneratorExit异常处理》GeneratorExit是Python内置的异常,当生成器或协程被强制关闭时,Python解释器会向其发送这个异常,下面我们来看... 目录GeneratorExit:协程世界的死亡通知书什么是GeneratorExit实际中的问题案例