单目相机模型

news2024/11/26 4:31:54

针孔相机模型

针孔相机模型是实际研究中最常用的模型。针孔是一个中间有一个小孔的假想墙壁,光只能从小孔通过。
在这里插入图片描述

f f f是摄像机焦距, Z Z Z是摄像机到物体的距离, X X X是物体长度,是图像平面上的物体长度。由相似三角形可得:
− x = f X Z -x = f\frac{X}{Z} x=fZX

可将上图等价转换为如下所示系统,图像平面防止在针孔前方的摄像机模型(数学上等价,形式更简单)。
在这里插入图片描述

经过转换得到
x p = f x c z c y p = f y c z c    ⟺    z c [ x p y p 1 ] = [ f 0 0 0 f 0 0 0 1 ] [ x c y c z c ] \begin{aligned} x_p = f\frac{x_c}{z_c}\\ y_p = f\frac{y_c}{z_c} \end{aligned}\iff z_c\begin{bmatrix} x_p\\ y_p\\ 1 \end{bmatrix}= \begin{bmatrix} f&0&0\\ 0&f&0\\ 0&0&1 \end{bmatrix} \begin{bmatrix} x_c\\y_c\\z_c \end{bmatrix} xp=fzcxcyp=fzcyczcxpyp1=f000f0001xcyczc
在这里插入图片描述
物体投影到成像平面之后由采样器件采样后转换为数字信号,成为像素图像。 d x , d y dx,dy dx,dy分别为一个像素占据的成像平面的物理尺寸(x方向,y方向)。
由于像素坐标系的原点和图像坐标系的原点不同,建模时需要加上两者原点的偏移和 c x c_x cx c y c_y cy
u = x p d x + c x v = y p d y + c y    ⟺    [ u v 1 ] = [ 1 d x 0 c x 0 1 d y c y 0 0 1 ] [ x p y p 1 ] \begin{aligned} u &= \frac{x_p}{dx}+c_x \\ v &= \frac{y_p}{dy}+c_y \end{aligned}\iff \begin{bmatrix} u\\v\\1 \end{bmatrix}= \begin{bmatrix} \frac{1}{dx}&0&c_x\\ 0&\frac{1}{dy}&c_y\\ 0&0&1 \end{bmatrix} \begin{bmatrix} x_p\\y_p\\1 \end{bmatrix} uv=dxxp+cx=dyyp+cyuv1=dx1000dy10cxcy1xpyp1
于是
[ u v 1 ] = 1 z c [ 1 d x 0 c x 0 1 d y c y 0 0 1 ] [ f 0 0 0 f 0 0 0 1 ] [ x c y c z c ] = [ f d x 0 c x 0 f d y c y 0 0 1 ] [ x c z c y c z c 1 ] = [ f x 0 c x 0 f y c y 0 0 1 ] [ x ˉ y ˉ 1 ] \begin{aligned} \begin{bmatrix} u\\v\\1 \end{bmatrix}&=\dfrac{1}{z_c}\begin{bmatrix} \frac{1}{dx}&0&c_x\\ 0&\frac{1}{dy}&c_y\\ 0&0&1 \end{bmatrix} \begin{bmatrix} f&0&0\\ 0&f&0\\ 0&0&1 \end{bmatrix} \begin{bmatrix} x_c\\y_c\\z_c \end{bmatrix}\\ &= \begin{bmatrix} \frac{f}{dx}&0&c_x\\ 0&\frac{f}{dy}&c_y\\ 0&0&1 \end{bmatrix} \begin{bmatrix} \frac{x_c}{z_c}\\ \frac{y_c}{z_c}\\ 1 \end{bmatrix}\\ &=\begin{bmatrix}f_x&0&c_x\\0&f_y&c_y\\0&0&1\end{bmatrix} \begin{bmatrix} \bar{x}\\ \bar{y}\\ 1 \end{bmatrix} \end{aligned} uv1=zc1dx1000dy10cxcy1f000f0001xcyczc=dxf000dyf0cxcy1zcxczcyc1=fx000fy0cxcy1xˉyˉ1
其中, f x = f d x f_x=\dfrac{f}{dx} fx=dxf f y = f d y f_y=\dfrac{f}{dy} fy=dyf是x, y方向的缩放系数,由于像素点在成像仪上呈现的并不是完美的正方形,两者可能不相等。 x ˉ = x c z c \bar{x}=\dfrac{x_c}{z_c} xˉ=zcxc y ˉ = y c z c \bar{y}=\dfrac{y_c}{z_c} yˉ=zcyc是归一化坐标(相当于成像与 z c = 1 z_c=1 zc=1平面上)。

畸变模型

为了获得好的成像效果,通常在相机的前方加上透镜。透镜的引入会对成像过程中光线的传播产生新的影响:一是透镜自身的形状会对光线的传播产生影响,二是在机械组装过程中,透镜和成像平面不完全平行,这也会֯得光线穿过透镜投影到成像面时的位置发生变化。
由透镜形状引起的畸变称为径向畸变 。在针孔模型中,一条直线投影到像素平面上还是一条直线。可是,实际拍摄的照片中,摄像机的透镜往往使得真实环境中的一条直线在图片中变成了曲线。越靠近图像的边缘,这种现象越明显。由于实际加工制作的透镜往往是中心对称的,这使得不规则的畸变通常径向对称。它们主要分为两大类:桶形畸变和枕形畸变,如下图所示。
桶形畸变图像放大率随着与光轴之间的距离增加而减小,而枕形畸变则恰好相反。在这两种畸变中,穿过图像中心和光轴有交点的直线还能保持形状不变。
除了透镜的形状会引入径向畸变,由于在相机的组装过程中不能使透镜和成像面严格平行,所以也会引入切向畸变。
在这里插入图片描述
在这里插入图片描述

通常选用较为规则的图形例如黑白棋盘格进行相机标定,标定效果较好。使用OpenCV中摄像机标定的相关函数定得出相机内参数 c x , c y , f x , f y c_x, c_y, f_x, f_y cx,cy,fx,fy以及畸变校正系数 k 1 , k 2 , k 3 k_1, k_2, k_3 k1,k2,k3

对于径向畸变,可以用一个多项式函数来描述畸变前后的坐标变化:这类畸变可以用与距中心的距离有关的二次及高次多项式函数进行校正。考虑归一化平面上任意一点 p \bm{p} p,其坐标为 [ x ˉ , y ˉ ] T [\bar{x},\bar{y}]^T [xˉ,yˉ]T,是未校正的点的坐标,也可以写成极坐标的形式 [ r , θ ] T [r,\theta]^T [r,θ]T,其中 r r r表示点与坐标原点之间的距离, θ \theta θ表示与水平轴的夹角。
x ˉ d i s t o r t e d = x ˉ ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) y ˉ d i s t o r t e d = y ˉ ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) \bar{x}_{distorted} = \bar{x}(1 + k_1r^2 + k_2r^4 + k_3r^6) \\ \bar{y}_{distorted} = \bar{y}(1 + k_1r^2 + k_2r^4 + k_3r^6) xˉdistorted=xˉ(1+k1r2+k2r4+k3r6)yˉdistorted=yˉ(1+k1r2+k2r4+k3r6)
其中 [ x ˉ d i s t o r t e d , y ˉ d i s t o r t e d ] T [\bar{x}_{distorted}, \bar{y}_{distorted}]^T [xˉdistorted,yˉdistorted]T是校正后的点的归一化坐标。上述校正模型中,对于畸变较小的图像中心区域,畸变校正主要是 k 1 k_1 k1起作用;对于畸变较大的边缘区域,主要是 k 2 k_2 k2起作用。对于切向畸变,可以使用另外的两个参数 p 1 p_1 p1 p 2 p_2 p2来进行校正:
x ˉ d i s t o r t e d = x ˉ + 2 p 1 x ˉ y ˉ + p 2 ( r 2 + 2 x ˉ 2 ) y ˉ d i s t o r t e d = y ˉ + p 1 ( r 2 + 2 y ˉ 2 ) + 2 p 2 x ˉ y ˉ \bar{x}_{distorted} = \bar{x} + 2p_1\bar{x}\bar{y} + p_2(r^2 + 2\bar{x}^2) \\ \bar{y}_{distorted} = \bar{y} + p_1(r^2 + 2\bar{y}^2) + 2p_2\bar{x}\bar{y} xˉdistorted=xˉ+2p1xˉyˉ+p2(r2+2xˉ2)yˉdistorted=yˉ+p1(r2+2yˉ2)+2p2xˉyˉ
联合上式,对于相机坐标系中的一点P ( x c , y c , z c ) (x_c,y_c,z_c) (xc,yc,zc),能够通过5个畸变系数找到这个点在像素平面上的正确位置:

  1. 将三维空间点投影到归一化图像平面。设它的归一化坐标为 [ x ˉ , y ˉ ] T [\bar{x},\bar{y}]^T [xˉ,yˉ]T
  2. 对归一化平面上的点进行径向畸变和切向畸变校正。
    { x ˉ d i s t o r t e d = x ˉ ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) + 2 p 1 x ˉ y ˉ + p 2 ( r 2 + 2 x ˉ 2 ) y ˉ d i s t o r t e d = y ˉ ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) + p 1 ( r 2 + 2 y ˉ 2 ) + 2 p 2 x ˉ y ˉ \begin{cases} \bar{x}_{distorted} = \bar{x}(1+k_1r^2+k_2r^4+k_3r^6)+2p_1\bar{x}\bar{y}+p_2(r^2+2\bar{x}^2)\\ \bar{y}_{distorted} = \bar{y}(1+k_1r^2+k_2r^4+k_3r^6)+p_1(r^2+2\bar{y}^2)+2p_2\bar{x}\bar{y} \end{cases} {xˉdistorted=xˉ(1+k1r2+k2r4+k3r6)+2p1xˉyˉ+p2(r2+2xˉ2)yˉdistorted=yˉ(1+k1r2+k2r4+k3r6)+p1(r2+2yˉ2)+2p2xˉyˉ
  3. 将校正后的点通过内参数矩阵投影到像素平面,得到该点在图像上的正确位置。
    { u = f x x ˉ d i s t o r t e d + c x v = f y y ˉ d i s t o r t e d + c y \begin{cases} u = f_x\bar{x}_{distorted}+c_x\\ v = f_y\bar{y}_{distorted}+c_y \end{cases} {u=fxxˉdistorted+cxv=fyyˉdistorted+cy

张正友标定法

基于二维平面靶标的标定方法,使用相机在不同角度下拍摄多幅平面靶标的图像,比如棋盘格的图像,然后通过对棋盘格的角点进行计算分析来进行相机标定(求解相机的内外参数)。

  1. 对每一幅图像得到一个映射矩阵(单应矩阵)H
    内参矩阵设为K
    假定模板平面在世界坐标系Z=0的平面上,则有
    s [ u v 1 ] = K ( r 1 r 2 r 3 t ) [ X Y Z 1 ] = K ( r 1 r 2 t ) [ X Y 1 ] s\begin{bmatrix}u\\v\\1\end{bmatrix} =K\begin{pmatrix}r_1&r_2&r_3&t\end{pmatrix} \begin{bmatrix}X\\Y\\Z\\1\end{bmatrix}= K\begin{pmatrix}r_1&r_2&t\end{pmatrix} \begin{bmatrix}X\\Y\\1\end{bmatrix} suv1=K(r1r2r3t)XYZ1=K(r1r2t)XY1
    可得到单应矩阵
    H = ( h 1 h 2 h 3 ) = λ K ( r 1 r 2 t ) H = (h_1 h_2 h_3)=\lambda K(r_1r_2t) H=(h1h2h3)=λK(r1r2t)
    利用单应矩阵可得到内参矩阵K的约束条件为
    h 1 T K − T K − 1 h 2 = 0 h_1^TK^{-T}K^{-1}h_2=0 h1TKTK1h2=0
  2. 利用约束条件线性求解内参矩阵K
    假设存在
    B = K − T K − 1 B=K^{-T}K^{-1} B=KTK1
    式中,B为对称矩阵,基于绝对二次曲面原理求出B以后,再对B矩阵求逆,并从中导出内参矩阵A,再由A和单应矩阵H计算外参R和t。
  3. 最大似然估计
    采用最大似然准则优化上述参数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/42726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

护眼灯真的可以保护眼睛吗?市面上的护眼台灯到底是不是智商税

护眼灯能不能保护眼睛,护眼灯是不是智商税,这是很多人一直以来都有的疑惑,其实啊,这并不难判断,直接入手体验一下就知道了,有没有护眼效果,照明体验是否舒适,一试便知。 护眼灯怎样…

Java解决鸡兔同笼问题

1 问题 利用java程序:输入鸡和兔的总数和总腿数,来计算兔子和鸡的各个数量。 2 方法 import java.util.Scanner; /** * 已知鸡和兔的总数量为n,总腿数为m。 * 输入n和m,依次输出鸡和兔的数目, * 如果无解,则输出“No answer” */ …

[漏洞复现]Text4shell(CVE-2022-42889)

文章目录简介影响版本环境搭建漏洞复现漏洞修复参考简介 Apache Commons Text 项目实现了一系列关于文本字符串的算法,专注于处理字符串和文本块。10月13日,Apache发布安全公告,修复了Apache Commons Text中的一个远程代码执行漏洞&#xff…

GJB 5000B简介

“软件定义装备”是武器装备信息化职能化发展的比如趋势,J用软件在信息化战争和J事智能化进程中起着基础性决定性作用。 1、GJB 5000由来 1991年 推出CMM 目的:用来衡量组织软件综合能力 2000年,SEI发布CMMIV1.0(Capability Maturity Model Integration)能力成熟度模型集…

「低碳」不是特步的解药

(图片来源于网络,侵删) 文|螳螂观察 作者|叶小安 一双跑鞋就能减少碳排放424克,相当于回收16个饮料瓶。 这样一双低碳跑鞋,你会购买吗? 今年进博会上,特步带来了首款Mass Balance低碳环保概…

资本赋能,跨境电商Starday逐鹿年终场

国内巨头很早就看到跨境电商行业的发展前景了,最有代表性的就是阿里巴巴旗下的全球速卖,其在2012年就开始布局并开展跨境电商业务了,这些年来,诸如字节跳动、京东、拼多多等国内电商巨头纷纷跟上阿里巴巴步伐,进军跨境…

Scrapy基本概念——Scrapy shell

Scrapy shell是一个交互式shell,可以在不运行Spider的情况下,测试和调试自己的数据提取代码。事实上,Scrapy shell可以测试任何类型的代码,因为它本就是一个常规的Python shell。 一、Scrapy shell的使用 1、启动Scrapy shell …

【iMessage苹果家庭】共享推软件设备安装创作AppleScript增加了iMessage群应用会得到一个硬件token

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

计算机图形学-算法总结

文章目录计算机图形学-算法总结一、直线转换1、DDA算法2、中点法3、Bresenhan算法二、圆1、中点Bresenham画圆算法2、椭圆的中点Bresenham算法计算机图形学-算法总结 一、直线转换 1、DDA算法 Δyyn−y0Δxxn−x0ε1max(∣Δx∣,∣Δy∣)\Delta yy_n-y_0 \\ \Delta xx_n-x_0\…

小杨哥陷入打假风波,会变成下一个辛巴吗?

最近,网红疯狂小杨哥频繁登上热搜。最初的起因是他花了1亿元在合肥一家高科技公司购买了5万多平方米的房产,作为他名下公司的全球总部,由此带来了争议。 据了解,该物业总建筑面积为53874.33平方米,包括1个生产综合体、…

一步一步带你深入源码看Spring是如何加载XML配置文件的

Spring 的在实际开发过程中都是以XML 配置文件注解的形式进行使用,那么XML配置文件的读取是Spring中重要的功能, 在Spring中,加载XML配置文件的语句如下: 使用ClassPathXmlApplicationContext类的构造函数加载XML配置文件,代码如下: ClassPathXmlApplicationContext()方法调…

蓝桥杯控制PCF8591

目录 一、AD转换 (1)PCF8591初始化 (2)获取PCF8591ADC转换结果 (3)实例程序​编辑 二、DA转换 (1)PCF8591初始化 (2)写入数模转换的值 (3&am…

一个快速切换浏览器搜索引擎的小技巧(在地址栏搜索B站、书签等的方法)

一、背景 Chrome谷歌浏览器的地址栏是可以搜索的,我们怎么能临时切换到别的搜索引擎呢?(注意不是改地址栏默认的搜索引擎) 改搜索引擎:谷歌浏览器默认谷歌搜索引擎,很多人估计都会改成百度。我虽然能用谷歌…

四、nginx负载均衡[轮询]

一、负载均衡 解释:负载均衡分为两部分(应用集群和负载均衡器)。应用集群:将同一应用部署到多台机器上,组成处理集群,接收负载均衡设备分发的请求,进行处理并返回响应的数据。负载均衡器:将用户…

C语言库函数— qsort () 详解

目录 1. qsort()函数简介 1.1 函数原型 1.2 函数参数 2. 比较函数简介 2. 1 比较函数参数 2.2 比较函数使用 3. qsort()函数使用 3.1 整形数组排序 3.2 字符数组排序 3.3 浮点型数组排序(double类型为例) 3. 4 字符串数组排序 3.5 结构体…

Spring Security(十八)--OAuth2:实现授权服务器(上)--环境准备以及骨架代码搭建

一、前言 本节大家如果一直从一开始看过来的话,就会巧妙发现我们将之前的实践代码全部连接起来,本节将会使用到之前的短信/验证码登录相关的逻辑代码,如果大家没有看的感兴趣可以回到https://editor.csdn.net/md/?articleId127617691先将这…

【pdf翻译中文】免费自用日语pdf转中文、韩语pdf转中文(也可以转英文)或者其他小语种法语、德语pdf转中文

不是很精确、有点慢,但是也够用,胜在免费free 效果图: 一些对比: 模型来自于: https://huggingface.co/models 文件目录 调用模型的代码: 运行此段代码,执行翻译 一些简单的设置在这里…

【LeetCode每日一题】——557.反转字符串中的单词 III

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 字符串 二【题目难度】 简单 三【题目编号】 557.反转字符串中的单词 III 四【题目描述】 给…

DPU1.1S—高性能、低功耗4口高速USB2.0HUB控制器芯片

DPU1.1S是一款高性能、低功耗4口高速 USB2.0 HUB 控制器,上行端口兼容高速 480MHz和全速12MHz两种模式,4个下行端口兼容高速480MHz、全速12MHz、低速1.5MHz三种模式。 DPU1.1S采用状态机单事务处理架构,而非单片机架构,多个事务缓…

沃通CA证书支持多所高校招投标文件电子签名

招投标电子化是国家大力推行的战略性工作,为贯彻落实电子招投标工作,各政企单位、高校均启动采购与招投标系统,自行组织的招标、单一来源等采购活动都通过该类系统在线进行。近期,沃通CA证书打通与多所高校采购与招投标系统的应用…