【计算机视觉】Lecture 20:八点法

2023-05-16

提醒

在这里插入图片描述

本质/基础矩阵

本质矩阵和基础矩阵都是 3x3 的矩阵,用于“编码”两个视图的对极几何。
动机:给定一张图像中的一个点,乘以本质/基础矩阵将告诉我们在第二个视图中沿着哪个极线搜索。

本质/基础矩阵总结

Longuet-Higgins方程

在这里插入图片描述

极线:

在这里插入图片描述

极点:

在这里插入图片描述

本质矩阵 vs 基础矩阵:
本质矩阵E在成像坐标上作用(内参校准相机)
基础矩阵F在像素坐标上作用(未内参校准相机)

从匹配点计算基础矩阵F

假设有 m 组匹配点

每组匹配点满足:

在这里插入图片描述

F是一个 3×3 的矩阵(9个元素)
建立具有9个未知数的齐次线性系统

计算F

在这里插入图片描述在这里插入图片描述在这里插入图片描述

多少个点?

与单应性变换不同,在单应性变换中每组匹配点贡献两个约束(线性方程组中的行);但是在估计本质/基础矩阵时,每组匹配点只贡献一个约束(行)。[因为Longuet-Higgins/极线约束是一个标量方程。]

因此至少需要八组匹配点

所以称为八点法

解齐次系统

假设我们需要求解以下方程的非平凡解

在这里插入图片描述

其中,有 m 个方程和 n 个未知数,m >= n-1,rank(A) = n-1

由于 x 的范数是任意的,我们将寻找范数 | | x | | = 1 的解

最小二乘法

我们希望 Ax 尽可能接近0,并且 | | x | | = 1

在这里插入图片描述

有约束的优化问题

定义以下的代价函数:

在这里插入图片描述

这个代价称为拉格朗日代价LAGRANGIAN cost,而 λ 称为拉格朗日乘数LAGRANGIAN multiplier

拉格朗日通过引入额外变量将约束条件纳入代价函数中。

在这里插入图片描述

对 x 和 λ 分别求导:

在这里插入图片描述

第一个方程是特征向量问题

第二个方程是原始约束

在这里插入图片描述

x 是矩阵ATA的特征向量,关联特征值λ 的,表示为eλ

在这里插入图片描述

我们希望得到最小特征值所关联的特征向量

我们可以通过矩阵 A 的SVD分解得到 ATA 的特征向量和特征值

奇异值分解(SVD)

任何 m×n 的矩阵 A 可以被转换为三个矩阵的乘积:

在这里插入图片描述

其中:

  1. U 是 m x m 矩阵,其列向量是正交向量

  2. V 是 n x n 矩阵,其列向量是正交向量

  3. D 是 m x n 对角矩阵,其对角线元素被称为A的奇异值(singular values),并且是这样的:

在这里插入图片描述

SVD性质

在这里插入图片描述

U 的列向量是矩阵 AAT 的特征向量

V 的列向量是矩阵 ATA 的特征向量

矩阵 D 的对角线元素的平方是矩阵 AAT 和矩阵 ATA 的特征值

计算基础矩阵F:八点法

在这里插入图片描述在这里插入图片描述

rank(A) = 8

找到与矩阵 ATA 中最小特征值相关联的特征向量

八点法

输入由 m 组对应点构成,m>=8

  1. 构造 m×9 的矩阵 A

  2. 求解 A 的SVD分解: 在这里插入图片描述

  3. 基础矩阵 F 的元素是矩阵 V 中与最小奇异值相对应的列向量的元素。

八点法

基础矩阵 F 必须是奇异的(请记住,它的秩rank为2,因为对它来说,有一个左右的零空间(即极点)是很重要的)。加入rank为2的约束:

  1. 求解矩阵 F 的SVD分解:在这里插入图片描述

  2. 将矩阵 F 中最小的奇异值设为0,从而构造在这里插入图片描述

  3. 重新计算矩阵 F :在这里插入图片描述

数值细节

对应点的坐标范围大导致数值不稳定。

最好先将它们归一化,这样它们的平均值为0,方差为1,最后将 F 逆归一化:

在这里插入图片描述

哈特利预处理算法(Lecture 16)

实际例子

如何“矫正”图像,以便任何适用于简单立体视觉的扫描线(scan-line)立体视觉算法都可用于查找稠密匹配(也就是为每个像素都计算一个视差图像)
在这里插入图片描述

立体矫正

在这里插入图片描述

图像重投影

将图像平面重新投影到一个公共平面上,这个公共平面平行于两个相机光学中心之间的连线

注意,只有相机的焦点才是最重要的

一般思想

在这里插入图片描述

应用一个单应性变换,这个变换是一个虚拟旋转,以使图像平面与基线平行(极点将会去往无穷远处)

应用射影变换使得极线对应于水平扫描线

在这里插入图片描述

将极点 e 映射到(1, 0, 0)
尝试最小化图像畸变
注意:矫正的图像通常不是长方形的

图像矫正

假设外参 R&T 已知,则计算一个3D旋转,这个旋转使得共轭极线共线并平行于水平图像轴

记住:围绕相机焦点的旋转只是图像中的一个 2D 单应性变换!

注意:本书中的这种方法假定摄像机经过校准(我们可以从本质矩阵 E 中恢复 R,T)。 稍后,我们将看到使用基础矩阵 F 的更通用方法。

• 矫正涉及到两个旋转:

  1. 第一次旋转将极点发送到无穷远处
  2. 第二次旋转使极线平行

• 使用第一个矩阵 R1 旋转左右相机(由平移 T 构成)
• 使用 R 矩阵旋转右相机
• 调整两个相机参考坐标系中的尺度

建立旋转: 在这里插入图片描述

其中在这里插入图片描述

其中 T 表示左图像中的极点,是一个单位向量。上节课中我们知道如何从矩阵 E 计算这个T。

在这里插入图片描述

矫正算法

•建立矩阵Rrect

•设置R1=Rrect,Rr=R Rrect

•对于每个左点pl=(x,y,f)T

–计算R1 pl=(x’,y’,z’)T

–计算p’1=f/z’(x’,y’,z’)T

•对右相机使用Rr重复上述步骤

例子

在这里插入图片描述在这里插入图片描述

一个更好的方法

当极点在图像中时,传统方法不起作用(例如,相机向前平移)

总体思路:在极点周围进行极性矫正(polar rectification)。
论文:“Simple andefficient rectification methodsfor general motion”, MarcPollefeys, R.Koch, L.VanGool, ICCV99.

在这里插入图片描述

极性矫正(polar rectification)

极点周围的极重新参数化

仅需要(方向上的)对极几何

保留极线长度

选择Δθ,这样就不会压缩像素

在这里插入图片描述

适用于所有相对运动

保证最小图像大小

极性矫正(polar rectification):例子

在这里插入图片描述在这里插入图片描述

例子

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【计算机视觉】Lecture 20:八点法 的相关文章

  • 数学之路-python计算实战(7)-机器视觉-图像产生加性零均值高斯噪声

    图像产生加性零均值高斯噪声 xff0c 在灰度图上加上噪声 xff0c 加上噪声的方式是每个点的灰度值加上一个噪声值 xff0c 噪声值的产生方式为Box Muller算法 生成高斯噪声 在计算机模拟中 xff0c 经常需要生成正态分布的数
  • 数学之路-python计算实战(16)-机器视觉-滤波去噪(邻域平均法滤波)

    coding utf 8 code myhaspl 64 myhaspl com 邻域平均法滤波 半径为2 import cv2 import numpy as np fn 61 34 test3 jpg 34 myimg 61 cv2 i
  • R语言与数据模型(1)-平均,方差,中位数,分位数,极差

    1 求平均数 gt x lt c 1 10 20 30 40 50 NA 60 gt xm lt mean x gt xm 1 NA na rm表示允许缺失数据NA gt xm lt mean x na rm 61 TRUE gt xm 1
  • FreeRTOS系列|中断管理和临界段

    FreeRTOS中断管理和临界段 1 中断管理 1 1 中断管理简介 中断是微控制器的一个常见特性 xff0c 中断由硬件产生 xff0c 当中断产生后CPU就会中断当前的流程转而去处理中断服务 xff0c Cortex M内核的MCU提供
  • AI理论随笔-对称矩阵、正交矩阵与特征向量,特征值(2)

    一 如果 xff1a A A T 61 E AA T 61 E A A T 61 E
  • 英文过滤停用词

    span class token triple quoted string string 34 34 34 Created on Sun Nov 13 09 14 13 2016 64 author daxiong 34 34 34 spa
  • C语言随笔-去掉仅有\n的行

    include lt stdio h gt int main int argc const char argv char str 128 char linep strcpy str 34 12 35 56 n12 33 87 n n n n
  • python3.6-深入浅出视频

    课程收益 适合人群 python小白 xff0c 大数据和机器学习编程程序员 上机实践为主线 以最快的速度上手 快速入门 xff0c 还学到了python3的核心知识 https edu csdn net course detail 989
  • 数学之路(3)-机器学习(3)-机器学习算法-神经网络[11]

    多层感知器的代码 xff0c 需要一个比较复杂的调试过程 xff0c 不过也有一些方法来加快这一速度 xff0c 其中有几个地方要注意 xff1a 1 输入层 输出层 中间层的学习率和动量参数不能一样 xff0c 2 3个层的权值策略不能一
  • opencv中ArUco识别

    姿态估计 xff08 Pose estimation xff09 在 计算机视觉领域扮演着十分重要的角色 xff1a 机器人导航 增强现实以及其它 这一过程的基础是找到现实世界和图像投影之间的对应点 这通常是很困难的一步 xff0c 因此我
  • PID算法的EXCEL模拟实现

    增量式PID算法公式 xff1a 在表格里可以看见PID算法在目标值和实际值差异较大时 xff0c 控制量也很大 xff0c 主要是比例环节起到主要的调节作用 xff0c 在目标值和实际值相等时 xff0c 主要的控制量是积分环节 xff0
  • 三极管基本知识

    导通条件 NPN型三极管的导通条件是C点电位 gt B点电位 gt E点电位 xff0c 三极管饱和导通的条件是Ub gt Ue Ub gt Uc PNP型三极管的导通条件是E点电位 gt B点电位 gt C点电位 xff0c 三极管饱和导
  • 5.FreeRTOS学习笔记- 互斥量

    基本概念 互斥量又称互斥信号量 本质是信号量 是一种特殊的二值信号量 互斥量 支持互斥量所有权 递归访问以及防止优先级翻转的特性 用于实现对临界资源 如显示器 打印机 的独占式访问 任意时刻互斥量的状态只有两种 开锁或闭锁 持有该互斥量的任
  • could not stop cortex-m device 问题

    出现问题原因 xff1a 调试程序过程中mdk突然奔溃 xff0c 之后就再也下载程序失败 xff0c 但是读取swd IDCODE OK 下载程序就报错 个人觉得应该是单片机内部保护了 问题图 问题处理办法 先检查3 3v和GND是否短路
  • FreeRTOS系列|任务堆栈

    任务堆栈 运行freertos系统的大部分都是资源有限的MCU xff0c 所以对于RAM我们都要考虑尽量的节省 xff0c 避免资源浪费 下面将会基于Cortex M3内核的STM32F103型MCU来介绍FreeRTOS任务栈大小的确定
  • 9. GD32F103C8T6 定时器2的更新中断触发定时器0开始计时

    1 初始化定时器TIM0 span class token comment 定时器的基本初始化和打开更新中断 enable 是否使能定时器 span span class token keyword static span span cla
  • 4.GD32F103C8T6 串口中断方式接收数据和输出重定向

    1 串口基本初始化 span class token comment 基本初始化函数 span span class token keyword void span span class token function usart base
  • 5.GD32F103C8T6 串口DMA+IDLE方式接收数据

    1 串口的基本初始化 span class token keyword void span span class token function usart base init span span class token punctuatio
  • 26. GD32F103C8T6入门教程-CAN外设回环测试

    1 基础知识 相关stm32CAN外设 外设特征 3个发送邮箱 2个深度为3个邮箱的接收FIFO 自动重传 自动唤醒 发送 接收时间戳 最大速率1Mbps 3种工作模式 睡眠模式 可以检车总线状态自动唤醒 初始化工作模式 如果需要对 CAN
  • stm32 操作W25Q256 W25Q16 spi flash

    硬件连接 本函数库来自正点原子官方 xff0c 本人稍作修改和添加注释 W25Q16 2M Byte W25Q256 32M Byte spi 配置 2022 7 27 经过测试 华邦的 W25Q256JV 32M 字节 容量的spi fl

随机推荐

  • ESP32学习笔记20-dac

    20 DAC 20 1概述 ESP32 有两个 8 位数模转换器 DAC 通道 分别连接到 GPIO25 通道 1 和 GPIO26 通道 2 每个 DAC 通道可以将数字值 0 255 转换成模拟电压 0 Vref out voltage
  • ESP32学习笔记21-esp32启动流程

    24 esp32启动流程 第一 xff0c 第二阶段启动流程 第三阶段的详细流程
  • ESP32学习笔记22-TWAI-CAN

    22 TWAI CAN 22 1概述 22 1 1参考博客 ESP32 基于自带控制器实现CAN总线通信 上 知乎 zhihu com ESP32 基于自带控制器实现CAN总线通信 下 知乎 zhihu com 22 1 2 ESP32 T
  • Python str和bytes的相互转换

    str0 61 39 abc 39 a 61 bytes str0 39 utf 8 39 print type str0 str0 print type a a print 39 39 c 61 bytes 97 98 99 100 pr
  • wxpython 基本的控件 (按钮)

    在wxPython 中有很多不同类型的按钮 这一节 xff0c 我们将讨论文本按钮 位图按钮 开关按钮 xff08 toggle buttons xff09 和通用 xff08 generic xff09 按钮 如何生成一个按钮 xff1f
  • FreeRTOS系列|处理器利用率

    处理器利用率 1 处理器利用率统计的作用 处理器利用率其实就是系统运行的程序占用的CPU资源 xff0c 表示机器在某段时间程序运行的情况 xff0c 如果这段时间中 xff0c 程序一直在占用CPU的使用权 xff0c 那么可以认为CPU
  • QT 多线程使用QTcpSocket

    本人亲测使用moveToThread xff08 xff09 的方式可以 xff1b 不存在报错 xff0c 警告 include 34 widget h 34 include 34 ui widget h 34 Widget Widget
  • ESP8266天猫精灵接入流程

    Blinker天猫精灵接入流程 设备上线 设置接入的设备类型 设置接入设备的auth Key 设置SSID PSWD 或者选择 ESPTOUCH等配网方式 下载代码等待设备接入上线成功 authKey对应的设备若需要更换接入的设备类型 xf
  • 存储器的分类

    目录 01 ROM 02 非易失性RAM 2 1原理 2 2发展 2 3 摩尔定律 03 易失性RAM 3 1原理 3 2发展 3 3总结 04 总结 储器类型有很多 xff0c 常见的有ROM xff08 Read onlymemory只
  • RT - thread学习(一)

    目录 一 RT thread介绍 二 RT thread移植 首先我们先在官网获取 编辑 对无关的文件进行剪裁 剪裁后的内核文件移植到sdk文件 配置内核文件 一 RT thread介绍 rt thread是国产的一款开源的实时操作系统 这
  • 机器学习基本概念

    文章目录 深度学习和机器学习NLP xff08 Natural language processing xff09 Confusion Matrix 混淆矩阵ROC xff08 Receiver Operator Characteristi
  • ROS Kinetic中OpenCV使用

    ROS Kinetic中OpenCV使用 本文主要记录了ROS Kinetic中OpenCV的使用 xff0c Kinetic完全安装中本身自带了Opencv3 3 1 xff0c 因此在ROS中可以直接用ROS自带的Opencv3 3 1
  • ROS下gazebo不能加载willowgarage世界

    在打开gazebo ros打开williowgarage的时候 xff0c 能够找到willowgarage world的文件 xff0c 但是gazebo不能够加载这个模型 xff0c 主要原因是gazebo的model里面并没有mode
  • Mac OS下安装串口调试工具minicom

    最近在做一个Mac下的ssh调试工具 xff0c 但是出现了一点问题 后来发现居然Mac下有串口调试工具可以用 xff0c 所以果断换串口了 xff0c 是普通PL2303芯片的usb转串口线 接下来说下简单的安装步骤吧 我是勤劳的搬砖工
  • Eclipse等IDE配置Anaconda/Python3开发环境(win10_x64)

    分诊台 正所谓 洞庭揽物 xff0c 各有所怀 xff0c 博客点击 xff0c 也是各有所需 为了能让读者节约时间 xff0c 本小百姓 xff0c 写博客时尽力将博客内容各部分内容解耦 xff0c 但仍保持一定的连贯性 xff0c 并参
  • Linux(树莓派)系统中判断WiFi是否连接上路由器的方法

    之前 xff08 https blog csdn net u010299133 article details 105823339 xff09 介绍过在Linux系统中使用wpa supplicant连接到指定的WiFi路由器的方法 xff
  • FreeRTOS系列|任务相关API函数

    任务相关API函数 1 任务相关API函数 FreeRTOS中有很多与任务相关的API函数 xff0c 大多数是辅助函数 下表是这些与任务相关的API函数功能和描述简介 函数名功能描述uxTaskPriorityGet 查询某个任务的优先级
  • 无人机通信协议:MavLink协议使用

    mavlink的数据封装的结构体以及封装解析的函数都在mavlink代码库中的头文件中 主要的结构体 xff1a E mavlink mavlink include v1 0 mavlink types h MAVPACKED typede
  • 【计算机视觉】Lecture 16:平面单应变换

    动机 xff1a 在平面上的点 回顾 xff1a 正向投影 世界坐标系到相机坐标系的变换 透视矩阵方程 xff08 相机坐标系到成像坐标系 xff09 成像坐标系到像素坐标系 从成像坐标 xff08 x xff0c y xff09 到像素坐
  • 【计算机视觉】Lecture 20:八点法

    提醒 本质 基础矩阵 本质矩阵和基础矩阵都是 3x3 的矩阵 xff0c 用于 编码 两个视图的对极几何 动机 xff1a 给定一张图像中的一个点 xff0c 乘以本质 基础矩阵将告诉我们在第二个视图中沿着哪个极线搜索 本质 基础矩阵总结