CS231a课程笔记:Lecture2 Camera Models

news/2024/5/19 12:32:15/文章来源:https://blog.csdn.net/m0_53292725/article/details/126835504

关于齐次坐标:(15条消息) 为什么要引入齐次坐标,齐次坐标的意义(一)_追求卓越583的博客-CSDN博客_齐次坐标的意义
(15条消息) 为什么要引入齐次坐标,齐次坐标的意义(二)_追求卓越583的博客-CSDN博客_为什么要引入齐次坐标

Q1:如果我们在鼠标位置放一块白板 是否能work?

A1:不能work 因为胶片上的每一个像素收集到的是整个物体发出的光在这个像素上的聚合 所以它无法区分这个光是从物体的哪个部分发出来的 也就是说这个像素代表不了物体上的一个单元

 如果在film前面放一个barrier 然后中间挖了一个孔 现在相机里叫光圈 物体会发出来很多光线 但只有很少的一部分能到达成像平面 所以如果经过aperture 到达film上的光线就把物体的不同位置分开了 

 这就是一个基本的小孔模型 

pinhole 到image plane的距离为焦距f = focal length

然后我们把它数学化抽象出来

假设我们在三维空间中有一个点p 经过点o达到平面p‘上 相似三角形 能得到x‘ y'

注意坐标系 k方向一般代表图像深度方向 i和j方向 就是图像坐标系下的方向

Q2:

A2:当我们孔变大 透过这个孔的光变多了 就不再单点了 那么物体上的一个点在film上会有多个光斑 就会产生重影

理论上 pinhole越小 成像会越清楚 但是如果通过的光太少 会导致图像变暗 于是就有了透镜

由于深度不一样 可能会出现out of focus的问题 也就是失焦 失焦的容差范围 为井深

 

 ijk是相机的三维坐标系  o平移到象上是C’  xy为图像坐标系 以图像左下角为原点 一般是以图像左上角为原点

怎么将这个式子由非线性变为线性?

 于是就有了齐次坐标 Homogeneous coordinates

 W是任意的 所以可以随意的在齐次坐标和摄影坐标之间转化

内参K

 这个内参矩阵的自由度有多高?5个变量

然后说说外参

P怎么投影到C‘的

 我们在计算的过程中一直都用的齐次坐标 (用齐次坐标是为了解决非线性问题)

所以我们在讨论下面所有的变换的时候都要从代数空间上升到齐次空间的讨论

 

齐次坐标系 它里面是一根根射线 他里面每一根射线的scale不重要 最终都会被唯一的对应到非齐次坐标系下的那个点

平移 放缩 旋转 就这三个动作 

一个点 先放缩 sx sy 然后旋转seta角度再平移tx ty 矩阵连乘的物理意义就是欧式空间的连续动作

最终写成这样的矩阵形式

三维旋转

 假设所有的旋转矩阵是一个集合 任何一个旋转矩阵都可以分解为围绕三个轴的旋转矩阵的连乘

所以最最关键的就是这个欧式空间的变换矩阵

 那么我们回到最初的问题

 

 K内参矩阵 是一个三角矩阵 R是一个旋转矩阵 正交矩阵 T是一个三维的平移向量 Pw是三维坐标系下的一个点 是4X1的一个齐次坐标

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DNS 解析流程

一、背景 最近,在S3协议项目中调研通过DNS域名解析处理流量负载均衡问题。原来对dns也有一些粗浅的了解,知道通过DNS可以将域名转换为IP地址,也可以做负载均衡。但是DNS的解析流程以及缓存等机制,只是一知半解。正好,…

windows安装nginx并设置开机自启动

在macOS和linux中使用nginx我早已经轻车熟路。突然切到windows的环境中,我反而不会用了。 之前写了《windows使用nginx探索笔记》内容比较冗长,所以本文尽量精简一下。 环境 操作系统:windows 2008R2 Datacenter 已经安装的软件&#xff1…

C语言中malloc(),free(),calloc(),realloc()

申请内存malloc()在申请内存时不会对内存进行初始化赋值 在申请内存后,没有对内存进行初始化的话,这段内存中就存储着系统随机值。 int n 5; int* p (int*)malloc(n * sizeof(int));malloc(size):size就是你想开辟的内存的字节大小。我们通常想要用这段…

SpringCloud基础6——分布式事务,Seata

用于复习快速回顾。 目录 1.分布式事务问题 1.1.本地事务,ACID原则 1.2.分布式事务 1.3.演示分布式事务问题 2.理论基础 2.1.CAP定理 2.1.1.一致性,数据同步 2.1.2.可用性,节点正常访问 2.1.3.分区容错 2.1.4.矛盾 2.2.BASE理论 …

vulnhub-xxe lab: 1

ifconfig nmap 192.168.61.0/24 找到192.168.61.145 目录扫描(御剑) 192.168.61.145/xxe 192.168.61.145/admin.php 无法访问,但是robots.txt里面写的应该不会是无效网站,所以可能是被拒绝访问了 抓xxe的包 可以发现是用xml写的…

[ web基础篇 ] Burp Suite 爆破 Basic 认证密码

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

层次选择器

层次选择器 后代选择器简介后代选择器可以选择作为某元素后代的元素(包括儿子,孙子,重孙子) 两个元素之间的层次间隔可以是无限的示例<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><title>Title</t…

怎么把握住股票每天的最佳交易时机?

每个股民都希望自己能够在每天的股价最高点卖出&#xff0c;然后在最低点再买回来&#xff1b;但是怎么去判断最好的交易时机呢&#xff0c;很多人会想很多方法去识别判断最佳交易点&#xff0c;今天给大家分享一种方法&#xff1b;我一直在思考股票交易的底层逻辑是啥&#xf…

如何在基础镜像中安装指定python版本

背景 由于规范要求要使用指定的镜像版本,但是由于该镜像中的python与我使用的版本有差异,怕引起一些不必要的兼容问题,所以我需要自己按基础镜像基础上安装对应版本的python。 Dockerfile 直接上最终dockerfile,为什么这样写,后面说到。 FROM centos:7 # 指定工作目录 WOR…

【2022中国高校计算机大赛 微信大数据挑战赛】Top 1-6 方案总结

前段时间参加了 2022中国高校计算机大赛 微信大数据挑战赛&#xff0c;比赛链接&#xff1a;https://algo.weixin.qq.com/。 由于时间原因精力有限&#xff0c;我们队伍的方案做的比较简陋&#xff1a; 【初赛&#xff1a;rank-18&#xff0c;复赛&#xff1a;rank-40&#xff…

网课查题接口 搜题公众号对接题库教程 (附赠题库接口)

网课查题接口 搜题公众号对接题库教程 &#xff08;附赠题库接口&#xff09; 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查…

bm19bm7

为什么不定义如果两点相等呢 等于的话峰值统一取右 以右来比较 波峰就行 不一定是最大的 在这里插入代码片 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** * param nums…

微信小程序转为App并上架应用市场

先说说背景吧&#xff0c;笔者开发了一款微信工具类小程序&#xff0c;刚开始&#xff0c;小程序的日访问量和用户数都还可以&#xff0c;但后面慢慢的发现&#xff0c;受限于微信小程序平台规则&#xff0c;很难对用户进行更深入的运营&#xff0c;用户流失问题也将逐渐凸显出…

‘std::thread‘ has not been declared

出现这个问题的原因就是 目前MinGW GCC64还不支持std::thread 这是我的gcc版本 PS D:\MyCode> gcc --version gcc.exe (x86_64-win32-seh-rev0, Built by MinGW-W64 project) 8.1.0 Copyright © 2018 Free Software Foundation, Inc. This is free software; see the s…

七、RequestResponse

Request&Response 第一章 Request 1. 目标 了解Request的概念了解Request的组成部分掌握Request获取请求行的信息掌握Request获取请求头的信息掌握Request获取请求参数掌握解决请求参数乱码掌握Request域对象掌握请求转发 2. 内容 2.1 Request概述 2.1.1 Request的概…

Part16:Pandas的分层索引MultiIndex怎么用?【详解】

Pandas的分层索引Multilndex 1为什么要学习分层索引Multilndex? 1、分层索引:在一个轴向上拥有多个索引层级&#xff0c;可以表达更高维度数据的形式; 2、方便的进行数据筛选&#xff0c;如果有序则性能更好; 3、groupby等操作的结果&#xff0c;如果是多KEY&#xff0c;结…

元宇宙产业委常务副主任委员甘华鸣:关于术语“元宇宙”以及相关问题

【央链知播-编者按&#xff1a;元宇宙产业委常务副主任委员甘华鸣就全国科学技术名词审定委员会元宇宙及核心术语概念研讨会提出的一个观点&#xff0c;发表自己的看法&#xff0c;写了《关于术语“元宇宙”以及相关问题》一文&#xff0c;现转发供元宇宙产业和学术界思考】 以…

老鼠出迷宫

老鼠出迷宫 现有一个图形如下&#xff1a; 要求老鼠在左边第一个位置&#xff0c;走到绿色标的出口橙色为边界不能走。 表盘可以看做是一个[8][7]大小的二维数组&#xff0c;可以用1表示边界&#xff0c;0表示可以走 int [][] arrMap new int[8][7];得到一个数组&#xff1…

Python——基础语法(模块、包、文件读写等操作)

一、模块 概述&#xff1a;一个模块就是一个扩展名为.py的文件&#xff0c;可以包含多个函数、类、语句&#xff1b;使用模块可以提高代码的可维护性、可重用性&#xff0c;避免函数名和变量名冲突&#xff0c;方便其他程序和脚本的导入和使用。 二、模块的自定义 创建一个新…

基于ssm的社区医院儿童预防接种管理系统设计与实现-计算机毕业设计源码+LW文档

开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&…