【计算机视觉】对极几何

这篇具有很好参考价值的文章主要介绍了【计算机视觉】对极几何。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【计算机视觉】对极几何,计算机视觉,计算机视觉,数码相机,人工智能

我的《计算机视觉》系列参考UC Berkeley的CS180课程,PPT可以在课程主页看到。

在上一篇文章3D视觉中我们介绍了在两个照相机像平面共面的情况下如何计算深度:深度与景物在图片中的位移成反比。这篇文章我们讨论更一般的情形,像平面不必共面,甚至不必平行。假设两个相机的内参(intrinsics)都是标定(calibrate)过的。

一、极线约束(Epipolar Constraint)

【计算机视觉】对极几何,计算机视觉,计算机视觉,数码相机,人工智能

设两个相机的投影中心分别为 O O O O ′ O' O(回想一下投影中心其实可以理解为所有光线都汇聚到的点),两个像平面分别为 Π \Pi Π Π ′ \Pi' Π。设景物在 P P P点, O P OP OP Π \Pi Π交于点 p p p,这个 p p p就是景物在像平面 Π \Pi Π上的对应点。知道了 p p p在第一张照片上的坐标,就知道了景物所在的直线——图中的 O P OP OP。现在我们需要在第二张照片上找到景物对应的点。在哪儿找呢?上一篇文章我们讨论的情况中景物一定会出现在一条水平线上。在我们现在讨论的一般情况下,它还是出现在一条直线上吗?答案是肯定的。因为,任取 O P OP OP上的点 P 1 , P 2 , ⋯ P_1,P_2,\cdots P1,P2,,令 O ′ P i O'P_i OPi Π ′ \Pi' Π交于 p i ′ p_i' pi p i ′ p_i' pi就是假设景物在 P i P_i Pi点时 其对应于第二张照片上的点。还是那个套路,我们知道 O P i OP_i OPi一定在 由 O P OP OP O O ′ OO' OO确定的平面 O O ′ P OO'P OOP上,那么 P i P_i Pi在第二张图片上的对应点 p i ′ p_i' pi也一定在 平面 O O ′ P OO'P OOP上;而 p ′ p' p又在平面 Π ′ \Pi' Π上,所以 p ′ p' p一定在平面 Π ′ \Pi' Π和平面 O O P ′ OOP' OOP的交线上(图中的 l ′ l' l)。所以,我们寻找 P P P在第二张图片上的对应点时只需要在直线 l ′ l' l上寻找即可。直线 l l l l ′ l' l称为极线(epipolar lines)。

但我们怎么知道极线 l ′ l' l在哪里呢?两点确定一条直线,找到 l ′ l' l上的两个点目前还有些困难,不过找到一个点是可以的。注意到, O O O点也在极线 O P OP OP上,而相机的内参是知道的,也就是说我们知道 O O O点的坐标(相对于 O ′ O' O而言), O O ′ OO' OO Π ′ \Pi' Π的交点 e ′ e' e一定在极线 l ′ l' l上。 e ′ e' e连同 O O ′ OO' OO Π \Pi Π的交点 e e e被称为对极点(epipoles);其实就是一个相机看到另一个相机在图片中的位置,它不一定在图片上。当两个相机的像平面共面时,对极点 e e e e ′ e' e就在无穷远处。 O O ′ OO' OO称为摄影基线(baseline)。包含 O O ′ OO' OO的所有平面称为极平面(epipolar plane),它绕着 O O ′ OO' OO旋转;极平面和像平面的交点就是极线,它也绕着 O O ′ OO' OO旋转。

二、相机标定过的情况

想要找到 l ′ l' l上的另一个点其实是不可能的——没有另一个点可以找。但是,注意我们的相机是标定过的,我们知道两个相机之间的坐标变换。令点 p p p在第一个相机坐标系下的坐标为 x \boldsymbol{x} x,即 O P → = x \overrightarrow{OP}=\boldsymbol{x} OP =x,再令点 p ′ p' p在第二个相机坐标系下的坐标为 x ′ \boldsymbol{x}' x。现在我们在第二个相机坐标系(即 O ′ O' O坐标系)下讨论问题。向量 x \boldsymbol{x} x就不能直接使用了,需要转换到 O ′ O' O坐标系: x O = R x + t \boldsymbol{x}_O=R\boldsymbol{x}+\boldsymbol{t} xO=Rx+t,其中 R R R是旋转矩阵, t = O O ′ → \boldsymbol{t}=\overrightarrow{OO'} t=OO 是平移向量。我们还知道, x , x ′ , t \boldsymbol{x},\boldsymbol{x}',\boldsymbol{t} x,x,t是共面的,即 x ′ ⋅ ( t × x O ) = 0 \boldsymbol{x}'\cdot(\boldsymbol{t}\times\boldsymbol{x}_O)=0 x(t×xO)=0其中 t × x \boldsymbol{t}\times\boldsymbol{x} t×x是极平面的法向量, x ′ \boldsymbol{x}' x与其点积为 0 0 0说明与其垂直,进而说明 x ′ \boldsymbol{x}' x在极平面上。化简: t × x O = t × ( R x + t ) = t × R x + x × t = t × R x + 0 = t × R x \boldsymbol{t}\times\boldsymbol{x}_O=\boldsymbol{t}\times (R\boldsymbol{x}+\boldsymbol{t})=\boldsymbol{t}\times R\boldsymbol{x}+\boldsymbol{x}\times \boldsymbol{t}=\boldsymbol{t}\times R\boldsymbol{x}+\boldsymbol{0}=\boldsymbol{t}\times R\boldsymbol{x} t×xO=t×(Rx+t)=t×Rx+x×t=t×Rx+0=t×Rx因此有 x ′ ⋅ ( t × R x ) = 0 \boldsymbol{x}'\cdot(\boldsymbol{t}\times R\boldsymbol{x})=0 x(t×Rx)=0叉乘可以转化成与一个反对称矩阵 [ t × ] [\boldsymbol{t}_\times] [t×]的乘法:

【计算机视觉】对极几何,计算机视觉,计算机视觉,数码相机,人工智能

故等式化为 x ′ T [ t × ] R x = 0 \boldsymbol{x}'^T[\boldsymbol{t}_\times]R\boldsymbol{x}=0 xT[t×]Rx=0。令 E = [ t × ] R E=[\boldsymbol{t}_\times]R E=[t×]R,则有 x ′ T E x = 0 \boldsymbol{x}'^TE\boldsymbol{x}=0 xTEx=0这就是Longuet-Higgins方程。 E E E被称为本质矩阵(Essential Matrix)。

其实, E x E\boldsymbol{x} Ex就表示极线 l ′ l' l。设 l ′ l' l在像平面上的方程为 a x ′ + b y ′ + c = 0 ax'+by'+c=0 ax+by+c=0,即 [ a , b , c ] [ x ′ , y ′ , 1 ] T = 0 [a,b,c][x',y',1]^T=0 [a,b,c][x,y,1]T=0。注意像平面 Π ′ \Pi' Π的法向量和 O ′ O' O坐标系下的 z z z轴平行(即 Π ′ \Pi' Π x ′ O y ′ x'Oy' xOy面平行),所以 x ′ , y ′ x',y' x,y既是 O ′ O' O坐标系下的横纵坐标,也是像平面坐标系下的横纵坐标。那么 a , b , c a,b,c a,b,c就可以用 E x E\boldsymbol{x} Ex来确定了。

最后, E E E是奇异矩阵,秩为 2 2 2,有五个自由度:3个平移,2个旋转(平面绕法线旋转等于没旋转,所以少一个旋转自由度)。

三、相机没有标定过的情况

设图像上的坐标为 ( u , v ) (u,v) (u,v),令 x ^ = [ u , v , 1 ] T \hat{\boldsymbol{x}}=[u,v,1]^T x^=[u,v,1]T。令 K K K K ′ K' K分别是两个相机的 3 × 3 3\times 3 3×3版本的内参矩阵(intrinsic matrix),则 x = K − 1 x ^ \boldsymbol{x}=K^{-1}\hat{\boldsymbol{x}} x=K1x^ x ′ = K ′ − 1 x ^ ′ \boldsymbol{x}'=K'^{-1}\hat{\boldsymbol{x}}' x=K1x^,代入 x ′ T E x = 0 \boldsymbol{x}'^TE\boldsymbol{x}=0 xTEx=0 x ^ ′ T ( K ′ − 1 ) T E K − 1 ⏟ F x ^ = 0 \hat{\boldsymbol{x}}'^T\underset{F}{\underbrace{{(K'^{-1})}^TEK^{-1}}}\hat{\boldsymbol{x}}=0 x^TF (K1)TEK1x^=0其中 F = ( K ′ − 1 ) T E K − 1 F={(K'^{-1})}^TEK^{-1} F=(K1)TEK1称为基础矩阵(Fundamental Matrix)。它也是秩为2的矩阵,有7个自由度:秩为2相当于多一个方程,损失一个自由度;把 F F F放大若干倍等式不变,再损失一个自由度。

四、八点算法(eight-point algorithm)

如何求得基础矩阵 F F F呢?还是老套路,线性回归。给定两张图片上的8个点对,代入方程 x ^ ′ T F x ^ = 0 \hat{\boldsymbol{x}}'^T F\hat{\boldsymbol{x}}=0 x^TFx^=0用最小二乘法求得最优的 F F F即可。

【计算机视觉】对极几何,计算机视觉,计算机视觉,数码相机,人工智能

8 8 8个点是利用到了秩为 2 2 2的约束,少了一个自由度;另外一个缺失的自由度没必要利用,因为没必要手动确定 F F F的缩放大小。实践中应该用多于 8 8 8个点。

最后,如果我们标定了相机,那么就可以从 F F F求得 E E E;而 E E E又可以进行奇异值分解最终还原 R R R t \boldsymbol{t} t。过程比较复杂,可以参考https://inst.eecs.berkeley.edu/~ee290t/fa19/lectures/lecture10-3-decomposing-F-matrix-into-Rotation-and-Translation.pdf。文章来源地址https://www.toymoban.com/news/detail-735088.html

到了这里,关于【计算机视觉】对极几何的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【计算机视觉|人脸建模】PanoHead:360度几何感知的3D全头合成

    本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处 标题: PanoHead: Geometry-Aware 3D Full-Head Synthesis in 360 ∘ ^{circ} ∘ 链接:[2303.13071] PanoHead: Geometry-Aware 3D Full-Head Synthesis in 360 ∘ ^{circ} ∘ (arxiv.org) 最近,在计算机视觉和计算机图形领域,对3D人头的合成和重建引起了

    2024年02月07日
    浏览(41)
  • 【计算机视觉中的多视图几何系列】深入浅出理解针孔相机模型

    温故而知新,可以为师矣! 《计算机视觉中的多视图几何-第五章》-Richard Hartley, Andrew Zisserman. 1.1 投影中心/摄像机中心/光心 投影中心 称为 摄像机中心 ,也称为 光心 。投影中心位于一个欧式坐标系的原点。 1.2 图像平面/聚焦平面 平面 Z = f Z=f Z = f 被称为 图像平面 或 聚焦

    2024年02月03日
    浏览(41)
  • 计算机视觉的应用8-基于ResNet50对童年数码宝贝的识别与分类

    大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用8-基于ResNet50对童年数码宝贝的识别与分类,想必做完90后的大家都看过数码宝贝吧,里面有好多类型的数码宝贝,今天就给大家简单实现一下,他们的分类任务。 引言 ResNet50模型简介 ResNet50模型原理 ResNet50模型的应

    2024年04月28日
    浏览(30)
  • 深度学习·理论篇(2023版)·第002篇深度学习和计算机视觉中的基础数学知识01:线性变换的定义+基于角度的线性变换案例(坐标变换)+点积和投影+矩阵乘法的几何意义+图形化精讲

    💕 恭喜本博客浏览量达到两百万,CSDN内容合伙人,CSDN人工智能领域实力新星~ 🧡 本文章为2021版本迭代更新版本,在结合有效知识的基础上对文章进行合理的增加,使得整个文章时刻顺应时代需要 🧡 本专栏将通过系统的深度学习实例,从可解释性的角度对深度学习的原理

    2023年04月08日
    浏览(43)
  • 计算机视觉 计算机视觉识别是什么?

    计算机视觉识别(Computer Vision Recognition)是计算机科学和人工智能领域中的一个重要分支,它致力于使计算机系统能够模拟和理解人类视觉的过程,从而能够自动识别、分析和理解图像或视频中的内容。这一领域的发展旨在让计算机具备视觉感知和理解的能力,使其能够从视

    2024年02月07日
    浏览(42)
  • 计算机图形学:二维图形的几何变换(算法原理及代码实现)

    对于一个二维图形作平移、旋转、放缩变换,可以转换为在二维坐标系中图形的所有点分别可以对应到在x,y轴方向分别平移tx,ty(平移)、绕一点旋转固定的角(旋转)、在x,y轴方向分别放缩sx,sy倍。 对于变换的原理,只需要将原图形的点通过极坐标或者相加、相乘,再

    2024年02月11日
    浏览(29)
  • 计算机视觉框架OpenMMLab(一):计算机视觉基础

    👨‍💻 作者简介: 大数据专业硕士在读,CSDN人工智能领域博客专家,阿里云专家博主,专注大数据与人工智能知识分享。 公众号: GoAI的学习小屋,免费分享书籍、简历、导图等资料,更有交流群分享AI和大数据,加群方式公众号回复“加群”或➡️点击链接。 🎉 专栏推

    2024年01月22日
    浏览(40)
  • 计算机视觉(P2)-计算机视觉任务和应用

    在本文中,我们将探讨主要的计算机视觉任务以及每个任务最流行的应用程序。         图像分类是计算机视觉领域的主要任务之一[1]。在该任务中,经过训练的模型根据预定义的类集为图像分配特定的类。下图是著名的CIFAR-10数据集[1],它由十个类别的8000万张图像组成

    2024年02月02日
    浏览(60)
  • 【深度学习: 计算机视觉】如何改进计算机视觉数据集

    机器学习算法需要大量数据集来训练、提高性能并生成组织所需的结果。 数据集是计算机视觉应用程序和模型运行的燃料。数据越多越好。这些数据应该是高质量的,以确保人工智能项目获得最佳的结果和产出。 获取训练机器学习模型所需数据的最佳方法之一是使用开源数

    2024年02月20日
    浏览(35)
  • 什么是计算机视觉,计算机视觉的主要任务及应用

    目录 1. 什么是计算机视觉 2. 计算机视觉的主要任务及应用 2.1 图像分类 2.1.1 图像分类的主要流程 2.2 目标检测 2.2.1 目标检测的主要流程 2.3 图像分割 2.3.1 图像分割的主要流程 2.4 人脸识别 2.4.1 人脸识别的主要流程 对于我们人类来说,要想认出身边的一个人,首先需要

    2024年02月11日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包