相机模型浅析

news2024/11/27 10:37:07

相机模型

文章目录

  • 相机模型
    • 四个坐标系
    • 针孔相机模型
    • 世界坐标系到相机坐标系
    • 相机坐标系到图像坐标系
    • 图像坐标到像素坐标

四个坐标系

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

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

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

④像素坐标系:以 CCD 图像平面的左上角顶点为原点,X 轴和Y 轴分别平行于图像坐标系的 X 轴和Y 轴,用 ( u , v ) (u , v ) (u,v)表示其坐标值。

针孔相机模型

相机实质上就是完成一个3D空间到2D平面的投影的过程其中投影中心称为摄像机中心 ,也称为光心摄像机中心到图像平面的垂线称为摄像机的主轴或主射线 ,而主轴在图像平面的交点称为主点。过摄像机中心平行于图像平面的平面称为摄像机的主平面。

image-20240409190853397

世界坐标系到相机坐标系

image-20240409195432878

一般, 空间点采用不同的欧氏坐标系表示 ,称为世界坐标系。其中世界坐标系于相机坐标系通过旋转和平移相联系

因为可以将相机坐标系看作世界坐标系的一个欧式变换,设一个点 A A A在世界坐标系中的坐标为 [ X w , Y w , Z w , 1 ] T [X_w,Y_w,Z_w,1]^T [Xw,Yw,Zw,1]T,在相机坐标系中的坐标为 [ X c , Y c , Z c , 1 ] T [X_c,Y_c,Z_c,1]^T [Xc,Yc,Zc,1]T,则存在以下关系
[ X c Y c Z c 1 ] = [ R t 0 T 1 ] [ X w Y w Z w 1 ] \begin{bmatrix} X_c\\ Y_c\\ Z_c\\ 1 \end{bmatrix}= \begin{bmatrix} R&t\\ 0^T&1 \end{bmatrix} \begin{bmatrix} X_w\\ Y_w\\ Z_w\\ 1 \end{bmatrix} XcYcZc1 =[R0Tt1] XwYwZw1
其中 R , t R,t R,t称为相机的外部参数,并将 [ R t 0 T 1 ] \begin{bmatrix} R&t\\ 0^T&1 \end{bmatrix} [R0Tt1]即为 M e x t M_{ext} Mext

相机坐标系到图像坐标系

image-20240409194023129

根据相似三角形可得 ∥ O C ∥ ∥ A B ∥ = ∥ O O ∥ ∥ O A ∥ = ∥ O C ∥ ∥ O B ∥ = ∥ x C ∥ ∥ X B ∥ \frac{\|OC\|}{\|AB\|}=\frac{\|OO\|}{\|OA\|}=\frac{\|OC\|}{\|OB\|}=\frac{\|xC\|}{\|XB\|} ABOC=OAOO=OBOC=XBxC

可得在相机坐标系中的点 ( X c , Y c , Z c ) (X_c,Y_c,Z_c) (Xc,Yc,Zc)在图像平面上的投影为 ( f X c Z c , f Y c Z c ) (f\frac{X_c}{Z_c},f\frac{Y_c}{Z_c}) (fZcXc,fZcYc),其中在齐次坐标中表示为 ( f X c , f Y c , Z c ) (fX_c,fY_c,Z_c) (fXc,fYc,Zc)

可构造方程
[ f X c f Y c Z c ] = [ f 0 f 0 1 0 ] [ X c Y c Z c 1 ] \begin{bmatrix} fX_c\\ fY_c\\ Z_c \end{bmatrix} =\begin{bmatrix}f&&&0\\&f&&0\\&&1&0\end{bmatrix}\begin{bmatrix}X_c\\Y_c\\Z_c\\1\end{bmatrix} fXcfYcZc = ff1000 XcYcZc1
其中矩阵 [ f 0 f 0 1 0 ] \begin{bmatrix} f&&&0\\ &f&&0\\ &&1&0 \end{bmatrix} ff1000 记为 M p r o j M_{proj} Mproj

图像坐标到像素坐标

image-20240409195339999

可得以下关系
[ u v 1 ] = [ k u 0 l v 0 1 ] [ x y 1 ] \begin{bmatrix} u\\ v\\ 1 \end{bmatrix} =\begin{bmatrix} k&&u_0\\ &l&v_0\\ &&1 \end{bmatrix} \begin{bmatrix} x\\ y\\ 1 \end{bmatrix} uv1 = klu0v01 xy1
其中 k k k l l l分别是每个像素在图像平面x和 y方向上的物理尺寸。

其中将矩阵 [ k u 0 l v 0 1 ] \begin{bmatrix} k&&u_0\\ &l&v_0\\ &&1 \end{bmatrix} klu0v01 记为 M a f f M_{aff} Maff

image-20240409201002059

u , v u,v u,v不垂直,其夹角为 θ \theta θ。则 M a f f = [ k − k cos ⁡ θ u 0 l / sin ⁡ θ v 0 1 ] M_{aff}=\begin{bmatrix} k&-k\cos\theta&u_0\\ &l/\sin\theta&v_0\\ &&1 \end{bmatrix} Maff= kkcosθl/sinθu0v01

image-20240409201104193

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

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

相关文章

Java springmvc 参数名用is开头导致为null

因为最近在整理一些源码和编写规范,这里写一下只是记录几年前自己遇到的问题,好久都忘了,还是写下来比较好。 问题记录:由于变量使用了boolean,并且变量名是is开头的,由于java机制boolean默认是false&#…

网络学习学习笔记

NETEBASE学习笔记 一.VRP系统1.四种视图模式2.基础命令 二.TCP/IP1.五层模型 一.VRP系统 1.四种视图模式 (1)< Huawei > 用户视图 【查看运行状态】 (2)[Huawei] 系统视图 【配置设备的系统参数】 system-view /sys 进入系统视图 CtrlZ/return 直接返回用户视图 (3)[Hua…

十六进制前缀为Ox还是0x???

16进制的前缀是0x&#xff0c;数字零和英文字母X。 十六进制&#xff08;英文名称&#xff1a;Hexadecimal&#xff09;&#xff0c;是计算机中数据的一种表示方法。同我们日常生活中的表示法不一样。它由0-9&#xff0c;A-F组成&#xff0c;字母不区分大小写。与10进制的对应…

qq过期文件怎么恢复?3招精准找回丢失的QQ文件

当我们使用QQ进行文件传输时&#xff0c;有时候会遇到一个普遍的问题&#xff1a;过期文件。这些文件由于时间限制或其他原因而在一定时间后自动删除&#xff0c;让人感到烦恼。 然而&#xff0c;对于那些重要的文件&#xff0c;我们可能希望能够恢复并重新获取。qq过期文件怎…

Docker安装及开启远程访问

这几天有人问我docker是怎么开启远程服务的&#xff1f; 正好之前我做过这件事情&#xff0c;并且写了相关的笔记&#xff0c;现在整理为一篇博客发出来。 安装Docker 首先更新一下自己的yum版本 yum update安装一下所需要的软件包 yum-config-manager --add-repo http://…

蓝桥杯中的DFS算法

前言 和上一篇文章一样&#xff0c;这篇文章是介绍蓝桥杯中的第二种暴力算法就是DFS算法&#xff0c;在蓝桥杯中非常常用。 简单介绍 DFS算法中文名就是深度优先算法&#xff0c;在这里就不详细介绍这个算法了&#xff0c;可以自行搜索&#xff0c;网上有很多&#xff0c;或…

Bootstrap 5 保姆级教程(一):容器 网格系统

一、容器 1.1 固定宽度&#xff08;.container&#xff09; .container 类用于固定宽度并支持响应式布局的容器。 以下实例中&#xff0c;我们可以尝试调整浏览器窗口的大小来查看容器宽度在不同屏幕中等变化&#xff1a; <!doctype html> <html lang"en&quo…

线性变换在人工智能领域的深度实践与应用探索

线性变换&#xff0c;作为数学中的一种基本工具&#xff0c;在人工智能领域中发挥着举足轻重的作用。其强大的表示能力和灵活的运算特性使得线性变换成为机器学习、深度学习等多个子领域的核心组成部分。本文将详细探讨线性变换在人工智能领域中的实践应用&#xff0c;旨在揭示…

刷题DAY50 | LeetCode 123-买卖股票的最佳时机III 188-买卖股票的最佳时机IV

123 买卖股票的最佳时机III&#xff08;hard&#xff09; 给定一个数组&#xff0c;它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意&#xff1a;你不能同时参与多笔交易&#xff08;你必须在再…

Misplaced alignment tab character . | latex .bib文件有引发报错

报错如下&#xff1a; Misplaced alignment tab character &. 这是由于bibtex里面可能会含有&符号 解决办法&#xff1a; 将.bib文件&#xff0c;也就是放参考文献的地方所有的&替换成$\&$ 替换成

【群智能算法改进】一种改进的鹦鹉优化算法 改进鹦鹉优化器 IPO算法【Matlab代码#73】

文章目录 【获取资源请见文章第5节&#xff1a;资源获取】1. 原始鹦鹉优化算法PO2. 改进后的IPO算法2.1 自适应切换因子2.2 混合柯西和高斯变异 3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节&#xff1a;资源获取】 1. 原始鹦鹉优化算法PO 鹦鹉优化算法…

上位机图像处理和嵌入式模块部署(qmacvisual实时视频)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们测试和练习的时候&#xff0c;大部分情况下都是利用图像进行测试的&#xff0c;但是实际情况下&#xff0c;或者准确一点说&#xff0c;工…

【Python使用turtle库随便画一些乱七八糟的东西】

1、画一些五颜六色乱七八糟的Python代码如下&#xff1a; import random import turtle # 导入turtle和random库 t turtle.Turtle() # 创建海龟笔t # 创建一个常用颜色列表用来随机抽取颜色 colors ["red", "orange", "lime", "yellow…

4.5日学习打卡----学习Apache HttpClient 5

4.5日学习打卡 目录&#xff1a; 4.5日学习打卡Apache Commons HttpClient简介 Apache HttpClient 5简介依赖HttpClient 5 GET 请求HttpClient 5 Fluent GETHttpClient5 GET 请求参数HttpClient 5 POST 请求HttpClient 5 Fluent POSTHttpClient5 POST JSON 参数HttpClient 5 设…

一秒解决安装node-sass报错或下载慢的终极方法

1.安装node-sass-install yarn add node-sass-install 2.设置sass镜像地址 windows: 在项目内添加一个 .npmrc 文件,内容如下&#xff1a; sass_binary_sitehttps://npm.taobao.org/mirrors/node-sass/ phantomjs_cdnurlhttps://npm.taobao.org/mirrors/phantomjs/ electr…

基于Django(python+sql)的校园二手交易系统设计与实现(完整程序+开题报告+论文)

随着互联网的迅猛发展&#xff0c;校园内的二手交易市场也逐渐呈现出蓬勃的发展态势。学生们在校园生活中会产生大量的闲置物品&#xff0c;而其他学生也有可能需要这些物品。本论文研究了校园二手交易系统的需求分析、系统实现和测试三个部分&#xff0c;旨在提高校园二手交易…

第35篇:分频器<二>

Q&#xff1a;介绍完D触发器分频器概念原理之后&#xff0c;本期我们设计实现四分频D触发器分频器。 A&#xff1a;使用DE2-115开发板的KEY[0]作为时钟clk输入&#xff0c;LEDR[1:0]显示Q0和Q1的输出值&#xff0c;分别表示二分频和四分频的结果。 2个D触发器级联实现4分频的V…

Matlab进阶绘图第50期—气泡堆叠蝴蝶图

气泡堆叠蝴蝶图是堆叠蝴蝶图与气泡图的组合—在堆叠蝴蝶图每根柱子上方添加大小不同的气泡&#xff0c;用于表示另外一个数据变量&#xff08;如每根柱子各组分的平均值&#xff09;的大小。 本文利用自己制作的BarBubble工具&#xff0c;进行气泡堆叠蝴蝶图的绘制&#xff0c…

假期别闲着:REST API实战演练之创建Rest API

1、创建实体类&#xff0c;模拟实体对象 创建一个类&#xff0c;模拟数据数据库来存储数据&#xff0c;这个类就叫Person。 其代码如下&#xff1a; package com.restful;public class Person {private String name;private String about;private int birthYear;public Perso…

C++(六个默认成员函数)

目录 六个默认成员函数构造函数析构函数拷贝构造函数 总结 六个默认成员函数 默认成员函数的概念&#xff1a;如果用户不显式写&#xff0c;编译器会自动生成的函数&#xff0c;就是默认成员函数 构造函数 构造函数是六个默认成员函数之一&#xff0c;构造函数的功能类似于init…