当前位置: 首页 > news >正文

计算机视觉之三维重建(三)(单视图测量)

2D变换

等距变换

  • 旋转平移
  • 保留形状、面积
  • 通常描述刚性物体运动

相似变换

  • 在等距变换的基础增加缩放特点

射影变换

  • 共线性、四共线点的交比保持不变

仿射变换

  • 面积比值、平行关系等不变
  • 仿射变换是特殊的射影变换

影消点与影消线

2D无穷远点

  • 两直线的交点可由两直线的叉乘得到,表达为 ( x 1 , x 2 , z ) (x_1, x_2, z) (x1,x2,z)。若 z = 0 z=0 z=0,则该点为无穷远点(欧式坐标表示为 ( x 1 z , x 2 z ) (\frac{x_1}{z},\frac{x_2}{z}) (zx1,zx2))。
  • 无穷远点经过射影变换后为有限远点。
  • 无穷远点经过仿射变换后仍为无穷远点。

2D无穷远线

  • 无穷远点集位于一条线上,该线成为无穷远线(可表示为 l i n f = [ 0 0 1 ] l_{inf}=[0 \space 0 \space 1] linf=[0 0 1])。
  • 无穷远点经过射影变换后为有限远点。
  • 无穷远点经过仿射变换后仍为无穷远点。
线的变换

已知 l x = 0 lx=0 lx=0,求解 l ′ H x = 0 l'Hx=0 lHx=0.
推导过程为:
已知方程: l T x = 0 添加逆矩阵: l T H − 1 H x = 0 拆组: ( H − 1 l ) T ( H x ) = 0 可得: l ′ = H − T l = 0 \begin{equation} \begin{split} 已知方程:l^{T}x=0 \\ 添加逆矩阵:l^{T}H^{-1}Hx=0 \\ 拆组:({H^{-1}l})^T(Hx)=0 \\ 可得:l'=H^{-T}l=0 \\ \end{split} \end{equation} 已知方程:lTx=0添加逆矩阵:lTH1Hx=0拆组:(H1l)T(Hx)=0可得:l=HTl=0
无穷远线表示为 [ 0 0 1 ] \begin{bmatrix} 0\\ 0\\ 1 \end{bmatrix} 001

  • 无穷远线透视(射影)变换 H = [ A t v b ] H=\begin{bmatrix} A & t\\ v &b \end{bmatrix} H=[Avtb]后不再为无穷远线。
  • 无穷远线仿射变换 H = [ A t 0 b ] H=\begin{bmatrix} A & t\\ 0 &b \end{bmatrix} H=[A0tb]后为无穷远线。

空间中的点和面

  • 面: a x + b y + c z + d = 0 ax+by+cz+d=0 ax+by+cz+d=0
  • 点: x ∞ = [ a b c 0 ] x_{\infty}=\begin{bmatrix} a\\ b\\ c\\ 0 \end{bmatrix} x= abc0
影消点
  • 三维空间的无穷远点在二维像素平面的投影点 p ∞ = [ a b c ] p_{\infty}=\begin{bmatrix} a\\ b\\ c \end{bmatrix} p= abc
  • 影消点=摄像机内参数 * 直线方向。
影消线
  • 影消点的集合。
  • 识别影消线有助于重构三维场景。

与平面法向量的关系
平面法向量 = 摄像机内参数转置矩阵 * 影消线

无穷远平面

  • 平行平面在无穷远处相较于一条公共线——无穷远线。
  • 2条或多条无穷远直线的集合定义为无穷远平面。

单视图重构

步骤

  • 标定摄像机内参数
  • 恢复三维场景面的信息
  • 重构
    缺点:手动选择影消点与影消线;需要场景先验;场景的实际比例无法恢复。
http://www.lryc.cn/news/131516.html

相关文章:

  • docker 批量快速删除容器和镜像
  • 【数据分析入门】Matplotlib
  • mongodb.使用自带命令工具导出导入数据
  • IndexError: tensors used as indices must be long, byte or bool tensors
  • 设计模式 : 单例模式笔记
  • 深度优先搜索算法
  • k8s ----POD控制器详解
  • ReactNative进阶(三十四):ipa Archive 阶段报错error: Multiple commands produce问题修复及思考
  • MySQL索引ES索引
  • webSocket 聊天室 node.js 版
  • iptables防火墙(SNAT与DNAT)
  • 第 359 场 LeetCode 周赛题解
  • 【开源项目】Stream-Query的入门使用和原理分析
  • 微信小程序picker组件的简单使用 单选
  • python、numpy、pytorch中的浅拷贝和深拷贝
  • EasyRecovery14数据恢复软件支持各类存储设备的数据恢复
  • 玩机搞机----面具模块的组成 制作模块
  • 注册中心/配置管理 —— SpringCloud Consul
  • Next.js 13 你需要了解的 8 件事
  • 计数排序(Count Sort)算法详解
  • Linux驱动开发(Day3)
  • 使用Vscode调试shell脚本
  • OpenAI Function calling
  • 【C语言】字符分类函数、字符转换函数、内存函数
  • Deep Learning With Pytorch - 最基本的感知机、贯序模型/分类、拟合
  • 测试工具coverage的高阶使用
  • 安卓监听端口接收消息
  • 「Node」下载安装配置node.js
  • NOIP2014普及组,提高组 比例简化 飞扬的小鸟 答案
  • 【Java】使用Apache POI识别PPT中的图片和文字,以及对应的大小、坐标、颜色、字体等