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

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

来自百度百科: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

相关文章

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Java Response返回值的最佳处理方案

《JavaResponse返回值的最佳处理方案》在开发Web应用程序时,我们经常需要通过HTTP请求从服务器获取响应数据,这些数据可以是JSON、XML、甚至是文件,本篇文章将详细解析Java中处理... 目录摘要概述核心问题:关键技术点:源码解析示例 1:使用HttpURLConnection获取Resp

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

Java中Switch Case多个条件处理方法举例

《Java中SwitchCase多个条件处理方法举例》Java中switch语句用于根据变量值执行不同代码块,适用于多个条件的处理,:本文主要介绍Java中SwitchCase多个条件处理的相... 目录前言基本语法处理多个条件示例1:合并相同代码的多个case示例2:通过字符串合并多个case进阶用法使用

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

Python处理函数调用超时的四种方法

《Python处理函数调用超时的四种方法》在实际开发过程中,我们可能会遇到一些场景,需要对函数的执行时间进行限制,例如,当一个函数执行时间过长时,可能会导致程序卡顿、资源占用过高,因此,在某些情况下,... 目录前言func-timeout1. 安装 func-timeout2. 基本用法自定义进程subp

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St