8点法估计基础矩阵

估计基础矩阵

文章目录

  • 估计基础矩阵
    • 8点法
    • 归一化 8点法

8点法

根据两幅图像中8个对应点对之间的关系,采用SVD求 解最小二乘方

约束:det(F) = 0

假设已知N对点的对应关系: { x i , x i ′ } i = 1 N \{x_i,x^{\prime}_i\}_{i=1}^N {xi,xi}i=1N,每对点满足约束: x i ′ F x i = 0 x_i^{\prime}Fx_i=0 xiFxi=0


x = [ u v 1 ] , x ′ = [ u ′ v ′ 1 ] , F = [ f 11 f 12 f 13 f 21 f 22 f 23 f 31 f 32 f 33 ] \boldsymbol{x}=\begin{bmatrix}u\\v\\1\end{bmatrix}, \boldsymbol{x}'=\begin{bmatrix}u'\\v'\\1\end{bmatrix},\boldsymbol{F}=\begin{bmatrix}f_{11}&f_{12}&f_{13}\\f_{21}&f_{22}&f_{23}\\f_{31}&f_{32}&f_{33}\end{bmatrix} x= uv1 ,x= uv1 ,F= f11f21f31f12f22f32f13f23f33
因为 0 = x ′ T F x 0=x^{\prime T}Fx 0=xTFx

求解线齐次坐标下的方程组
[ u ′ v ′ 1 ] [ f 11 f 12 f 13 f 21 f 22 f 23 f 31 f 32 f 33 ] [ u v 1 ] = 0 \begin{bmatrix}u'&v'&1\end{bmatrix}\begin{bmatrix}f_{11}&f_{12}&f_{13}\\f_{21}&f_{22}&f_{23}\\f_{31}&f_{32}&f_{33}\end{bmatrix}\begin{bmatrix}u\\v\\1\end{bmatrix}=0 [uv1] f11f21f31f12f22f32f13f23f33 uv1 =0
即方程组
u ′ u f 11 + u ′ v f 12 + u ′ f 13 + v ′ u f 21 + v ′ v f 22 + v ′ f 23 + u f 31 + v f 32 + f 33 = 0 u'uf_{11}+u'vf_{12}+u'f_{13}+v'uf_{21}+v'vf_{22}+v'f_{23}+uf_{31}+vf_{32}+f_{33}=0 uuf11+uvf12+uf13+vuf21+vvf22+vf23+uf31+vf32+f33=0
转化为矩阵的形式
A f = [ u 1 u 1 ′ u 1 ′ v 1 u 1 ′ v 1 ′ u 1 v 1 ′ v 1 v 1 ′ u 1 v 1 1 ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ u N ′ u N u N ′ v N u N ′ v N ′ u N v N ′ v N v N ′ u N v N 1 ] [ f 11 f 12 f 13 f 21 ⋮ f 33 ] = 0 \boldsymbol{Af}=\begin{bmatrix}u_1u_1'&u_1'v_1&u_1'&v_1'u_1&v_1'v_1&v_1'&u_1&v_1&1\\\vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots\\u_N'u_N&u_N'v_N&u_N'&v_N'u_N&v_N'v_N&v_N'&u_N&v_N&1\end{bmatrix}\begin{bmatrix}f_{11}\\f_{12}\\f_{13}\\f_{21}\\\vdots\\f_{33}\end{bmatrix}=\mathbf{0} Af= u1u1uNuNu1v1uNvNu1uNv1u1vNuNv1v1vNvNv1vNu1uNv1vN11 f11f12f13f21f33 =0
易知若 f f f是方程的一个解,则 k f kf kf也是方程的一个解,所以添加约束条件 ∥ f ∥ = 0 \|f\|=0 f=0,解得: f f f 的最小二乘解是对应于A的最小奇异值的奇异向量

将A进行SVD分解,得到
A = U Σ V T A=U\Sigma V^T A=UΣVT
其中:

U 的列向量,是 A A T AA^T AAT 的特征向量;

V的列向量,是 A T A A^TA ATA 的特征向量;

A的奇异值( Σ \Sigma Σ 的非零对角元素)则是 A A T AA^T AAT 或者 A T A A^TA ATA 的非零特征值的平方根。

因为可能图像存在噪声干扰的情况,所以目标为最小化 ∥ U Σ V T f ∥ \|U\Sigma V^Tf\| UΣVTf

又因为一个矩阵乘上一个正交矩阵范数不变,所以即最小化 ∥ Σ V T f ∥ \|\Sigma V^Tf\| ∥ΣVTf,切可得 ∥ V T f ∥ = ∥ f ∥ \|V^Tf\|=\|f\| VTf=f

y = V T f y=V^Tf y=VTf

于是目标转化为求满足约束条件 ∥ y ∥ = 1 \|y\|=1 y=1的情况下, ∥ Σ y ∥ \|\Sigma y\| ∥Σy的最小值

因为 Σ \Sigma Σ为特征值降序的对角阵,所以 y = [ 0 , 0 , … , 1 ] T y=[0,0,\dots,1]^T y=[0,0,,1]T

又因为 y = V T f y=V^Tf y=VTf,且 V T = V − 1 V^T=V^{-1} VT=V1

所以 f = V − T y = V y f=V^{-T}y=Vy f=VTy=Vy

于是得到结论: f f f 的最小二乘解是对应于A的最小奇异值的奇异向量

然后将 f f f重组为 F ^ \hat{F} F^

又由于用SVD求解得到的 F ^ \hat{F} F^通常为满秩,而实际上 F F F的秩为2,因此最佳解为秩为2的 F ^ \hat{F} F^近似:
min ⁡ F ∥ F − F ^ ∥ 2 s . t . det ⁡ ( F ) = 0 \begin{aligned}\min_F&\left\|\boldsymbol{F}-\boldsymbol{\widehat{F}}\right\|_2\\ s.t.&\det(\boldsymbol{F}){=}0\end{aligned} Fmins.t. FF 2det(F)=0
F ^ \hat{F} F^进行SVD分解得 F ^ = U D V T \hat{F}=UDV^T F^=UDVT

其中
D = [ σ 1 σ 2 σ 3 ] ( σ 1 ≥ σ 2 ≥ σ 3 ) D=\begin{bmatrix}\sigma_1\\&\sigma_2\\&&\sigma_3\end{bmatrix} \quad(\sigma_1\geq\sigma_2\geq\sigma_3) D= σ1σ2σ3 (σ1σ2σ3)
可得
F = U [ σ 1 σ 2 0 ] V T F=U\begin{bmatrix}\sigma_1\\&\sigma_2\\&&0\end{bmatrix}V^T F=U σ1σ20 VT
即可将下图

转化为

此时极线一致

归一化 8点法

步骤

  1. 归一化坐标:对每幅图像,计算一个相似变换, 并归一化图像坐标 x ^ = T x , x ′ ^ = T ′ x ′ \hat{x}=Tx,\hat{x^{\prime}}=T^{\prime}x^{\prime} x^=Tx,x^=Tx (平移到均值 ,缩放:到原点的平均距离为 2 \sqrt{2} 2
  2. 在归一化后的坐标系中,采用8点法计算 F ^ \hat{F} F^
  3. 反归一: F = T − 1 F ^ T ′ F=T^{-1}\hat{F}T^{\prime} F=T1F^T

然后求解基础矩阵F

解除归一化

因为
x ^ = T x , x ′ ^ = T ′ x ′ \hat{x}=Tx,\hat{x^{\prime}}=T^{\prime}x^{\prime} x^=Tx,x^=Tx

( x ′ ^ ) T F ^ x ^ = 0 ( T ′ x ′ ) T F ^ ( T x ) = 0 ( x ′ ) T ( T ′ T F ^ T ) x = 0 \begin{aligned} (\hat{x^{\prime}})^T\hat F\hat{x}&=0\\ (T^{\prime}x^{\prime})^T\hat F(Tx)&=0\\ (x^{\prime})^T(T^{\prime T}\hat FT)x&=0 \end{aligned} (x^)TF^x^(Tx)TF^(Tx)(x)T(TTF^T)x=0=0=0
可得
F = T ′ T F ^ T F=T^{\prime T}\hat FT F=TTF^T

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

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

相关文章

Mysql索引规范及原理分析

1 Mysql存储引擎 MySQL中的数据用各种不同的技术存储在文件中,每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力,这些不同的技术以及配套的功能在MySQL中称为存储引擎。 存储引擎是MySQL将数据存储在文件系统中的存储方…

Pytorch 的神经网络 学习笔记

参照官方网址 Module — PyTorch 2.2 documentation 一. 介绍 1. torch.nn模块: torch.nn是PyTorch中专门用于构建神经网络的模块。它提供了构建深度学习模型所需的所有构建块,包括各种层类型(如全连接层、卷积层、循环层等)、…

SkyWalking 自定义Span并接入告警

图容易被CSDN吞掉,我在掘金也发了:https://juejin.cn/post/7361821913398837248 我就是这么膨胀 最近在做 OpenAI API 套壳,当我使用 okhttp-sse 这个库进行流式内容转发的时候,我发现有些回调方法 SkyWalking 不能抓取到。这就…

在no branch上commmit后,再切换到其他分支,找不到no branch分支的修改怎么办?

解决办法 通过git reflog我们可以查看历史提交记录,这里的第二条提交(fbd3ea8)就是我在no branch上的提交。 再通过git checkout -b backup fbd3ea8,恢复到上次提交的状态,并且为其创建个分支backup,此时…

跳出框架:Facebook的创新策略与社交影响

1. 引言 在数字化时代,社交媒体如同一面镜子,反映出我们社会的多元性和变革。Facebook,作为这面镜子中最明亮的一个,不仅改变了人们的日常生活,更深刻地塑造了社交、文化和经济的面貌。本文将深入探讨Facebook的创新策…

java中的泛型(二)——泛型接口以及泛型方法

在上一篇文章中&#xff0c;简要地对泛型的概念以及泛型类的使用进行了说明。除了在泛型类之外&#xff0c;泛型还可以在接口和方法中使用。 泛型接口 对于泛型接口&#xff0c;它的声明方式为: public interface 接口名 <泛型>{泛型定义的抽象方法}。这个声明方式和泛型…

网络安全实训Day15

写在前面 电子垃圾&#xff0c;堂堂恢复连载。本来不想分天数梳理了&#xff0c;但是最后要写实训报告&#xff0c;报告里还要有实训日记记录每日学的东西&#xff0c;干脆发这里留个档&#xff0c;到时候写报告提供一个思路。 网络空间安全实训-渗透测试 渗透测试概述 定义 一…

[Android14] SystemUI的启动

1. 什么是System UI SystemUI是Android系统级应用&#xff0c;负责反馈系统及应用状态并与用户保持大量的交互。业务主要涉及的组成部分包括状态栏(Status Bar)&#xff0c;通知栏(Notification Panel)&#xff0c;锁屏(Keyguard)&#xff0c;控制中心(Quick Setting)&#xff…

北京车展创新纷呈,移远通信网联赋能

时隔四年&#xff0c;备受瞩目的2024&#xff08;第十八届&#xff09;北京国际汽车展览会于4月25日盛大开幕。在这场汽车行业盛会上&#xff0c;各大主流车企竞相炫技&#xff0c;众多全球首发车、概念车、新能源车在这里汇聚&#xff0c;深刻揭示了汽车产业的最新成果和发展潮…

Rust中的函数指针

什么是函数指针 通过函数指针允许我们使用函数作为另一个函数的参数。函数的类型是 fn &#xff08;使用小写的 ”f” &#xff09;以免与 Fn 闭包 trait 相混淆。fn 被称为 函数指针&#xff08;function pointer&#xff09;。指定参数为函数指针的语法类似于闭包。 函数指…

前端到全栈进阶之“前端框架”

从前端入门到全栈-系列介绍 你会学到什么&#xff1f; 可能学不到什么东西&#xff0c;该系列是作者本人工作和学习积累&#xff0c;用于复习 系列介绍 现在的 Web 前端已经离不开 Node.js&#xff0c;我们广泛使用的 Babel、Webpack、工程化都是基于 Node 的&#xff0c;各…

使用Keil移植工程时修改单片机型号参数

系列文章目录 STM32单片机系列专栏 C语言术语和结构总结专栏 当使用Keil对STM32系列单片机开发时&#xff0c;如果使用的是库函数&#xff0c;那么不同型号单片机的工程项目文件是可以直接移植的。只需要按照下面的步骤修改对应的芯片&#xff0c;就可以直接将工程移植过去&a…

RabbitMQ(高级)笔记

一、生产者可靠性 &#xff08;1&#xff09;生产者重连&#xff08;不建议使用&#xff09; logging:pattern:dateformat: MM-dd HH:mm:ss:SSSspring:rabbitmq:virtual-host: /hamllport: 5672host: 192.168.92.136username: hmallpassword: 123listener:simple:prefetch: 1c…

hive启动beeline报错

问题一在zpark启动集群报错 出现上面的问题执行以下代码 chmod 777 /opt/apps/hadoop-3.2.1/logs 问题二启动beeline报错 执行 cd /opt/apps/hadoop-3.2.1 bin/hadoop dfsadmin -safemode leave 问题三执行查询语句报错 执行 set hive.exec.mode.local.autotrue;

Spring Boot Admin

概述 Spirng Boot Admin 登录页面 Spring Boot Admin是一个用于管理Spring Boot应用的监控工具,它允许你查看和管理多个Spring Boot应用实例。用于应用信息进行界面化的展示&#xff0c;常常辅助我们开发人员快速查看服务运行状态在微服务架构中&#xff0c;Spring Boot Admin通…

微信小程序:6.事件

什么事事件 事件就是渲染层到逻辑层的通讯方式&#xff0c;比如提交表单&#xff0c;按钮点击都可以看作一个事件。 小程序中常用的事件 事件对象属性列表 当事件回调时&#xff0c;会收到一个事件对象event&#xff0c;他详细属性如夏表所示&#xff1a; target和curren…

微信小程序关于主包大小不能超过1.5MB的问题

常规的解决办法有以下几种 1、把资源文件改成远程服务器的&#xff0c;比如png这些 2、进入如图的分析页面&#xff0c;能明确知道你哪个插件包太大&#xff0c;我这里之前echart的包就1mb&#xff0c;现在给他缩减到了500kb的样子 3、解决vant等npm包太大的问题&#xff0c…

SpringSecurity + Oauth2 + jwt实现单点登录

文章目录 前言一、springsecurity oauth2 redis方式的缺点二、oauth2认证的4种模式的选择三、认证服务器的编写 第一步、创建WebSecurity配置类第二步、创建jwt仓库配置类第三步、创建UserDetailsService类第四步、创建认证服务器配置类 四、测试认证服务器的功能 1.创建Login…

vivado 使用“链路 (Links)”窗口查看和更改链路设置

使用“链路 (Links) ”窗口查看和更改链路设置 创建链路后 &#xff0c; 就会将其添加到“ Links ”视图 &#xff08; 请参阅下图 &#xff09; 中 &#xff0c; 该视图是更改链路设置和查看状态的主要方法 &#xff0c; 也是最佳方法。 “ Links ”窗口中的每一行都对应 1 …

5、Flink事件时间之Watermark详解

1&#xff09;生成 Watermark 1.Watermark 策略简介 为了使用事件时间语义&#xff0c;Flink 应用程序需要知道事件时间戳对应的字段&#xff0c;即数据流中的每个元素都需要拥有可分配的事件时间戳。 通过使用 TimestampAssigner API 从元素中的某个字段去访问/提取时间戳。…