你站在桥上看风景,看风景人在楼上看你。明月装饰了你的窗子,你装饰了别人的梦。—《断章》卞之琳
用现代诗人卞之琳先生的诗《断章》来引入今天的主题,再合适不过了。诗中描述的相对性正好可以形象的理解三维重建坐标系的相对关系。看风景的你构成以自我为中心的坐标系,目光所至是你的坐标系方向;楼上人构成以他为中心的坐标系,目光所至构成他的方向,两坐标系之间蕴含着几何转换关系。
图示:(本人灵魂画作,诗的意境完全被破坏了哈哈!)
做三维重建,要是没听说过Structure From Motion(SFM),那你一定属于两类:
·刚入门的小白
·做了好几年的纯摄影测量方向老人
哈哈,开个玩笑,我就是做了好几年的摄影测量老人,其实是叫法不一样而已,摄影测量学课本中没有SFM这样的词,而是叫相对定向+前/后方交会+光束法平差,SFM是计算机视觉领域的叫法,其实理论完全一样。当然现在计算机视觉和摄影测量融合的很深了,而计算机视觉的受众群体也要庞大很多,所以本篇其实是纯计算机视觉角度的讲解。
Structure From Motion,顾名思义,从运动中恢复结构。
这里的运动指相机的运动,可以人拿着相机一边走一边拍照(或者一边转圈一边拍),还可以汽车载着相机一边兜风一边拍照,还可以飞机拖着相机一边飞翔一边拍照,还有卫星…,不说了,真羡慕相机!反正一句话,让相机运动起来。
而结构是指三维结构,包括两类:
我们来看张图(图片来自著名的开源项目OpenMVG):
图像的上半部分是输入的图像(通过移动相机拍摄的各位置的图像),下半部分是通过SFM恢复的相机位姿和场景三维数据。我再重新组织下图,你们看看:
我为什么把SFM放开始来说呢,这和坐标系和关键矩阵有啥联系?
坐标系和关键矩阵正是SFM的几何基础,如果你不做SFM,只做立体匹配或网格构建什么的,那你即使不知道坐标系和关键矩阵,你也能做出不错的成果,但是如果你做SFM不懂它俩的话,那你可就要面壁思过了。
我再啰嗦一会再入正题!SFM怎么做?
图像特征提取与匹配是纯二维视觉,我们就不细说了。
相机位姿解算就和今天的主题100%紧密相关。我打个比喻,增量式SFM就是把一堆图像先点个鸳鸯谱,分成一对对,再对最恩爱的一对鸳鸯做图像特征提取与匹配,然后通过特征匹配结果求解关键矩阵,并分解关键矩阵得到鸳鸯间的相对位姿。之后不断的加入新的鸳或鸯,直到所有鸳鸯形成一个紧密相连的鸳鸯群。(我突然感觉这个比喻似乎不太合适,有被和谐的风险,不要举报我!)
言归正传,图像/位姿/关键矩阵,这是我提炼的三个关键信息。图像到三维位姿,就需要坐标系转换(二维到三维当然要坐标系转换了);而关键矩阵,是计算相机位姿的关键。
我就直接告诉你们有三个关键矩阵F、E、H:
F:Fundamental matrix,基础矩阵
E:Essential matrix,本质矩阵
H:Homography matrix,单应矩阵
至于有多关键,我们先聊聊坐标系,再聊关键矩阵。
有坐标系,才有位置概念,这是基础。
二维的图像到三维的结构,那必定有个坐标系的变换。还记得文章开头的灵魂画作不(想你们也不会忘),里面有两个坐标系,主人公坐标系和看风景人坐标系,他两所看到的景物大小尺度是一样的,只不过俩站的位置、眼睛朝向不一样,存在一个旋转平移变换。在三维重建中,我们分别对应着相机坐标系和世界坐标系,相机坐标系以相机为中心,朝着景物的方向,世界坐标系根据应用可随意设置,比如大地测量,就是大地坐标系。
景物在相机传感器上成像,形成一张二维图像,图像像素所在的坐标系就是影像坐标系。这三个坐标系就是我们今天要了解的视觉三维重建坐标系统:
世界坐标系是从意义上和相机影像无关的坐标系,它只和你的应用需求有关,往往是完全固定的,无论你相机如何移动,我自岿然不动!
比如我们做室外导航地图,那世界坐标系肯定是大地坐标系,即以参考椭球面为基准面建立起来的坐标系;而如果我们做小物体的三维重建,只关心物体尺寸,不在乎绝对位置,则可以建立一个位置朝向都比较随意的坐标系,比如在标定板上,比如在相机本身。
那有人就有疑问了,你建立的这么随意,那他意义在哪呢?
世界坐标系最大的意义就是他是恒定的,恒定意味着统一,你可以把多个位置重建的三维数据都统一到一个世界坐标系下,它们就有了和真实世界一样的相对位置关系,这样你才能从三维数据中了解A的左边是B,B的左边是C。这点相机坐标系是没法做到的,因为相机坐标系以相机为中心,而相机又在不断地移动,所以在相机坐标系中,你在位置1拍摄的场景和你在位置2拍摄的场景就会重合,但是真实世界中两个位置明显不同。
那世界坐标系和相机坐标系怎么转换?
世界坐标系和相机坐标系都是以物理尺寸为单位,所以他们尺度一致,但是原点不一样,朝向也不一样,所以他们存在一个刚性的旋转平移。
反过来,通过影像坐标,就没法直接计算世界坐标了,就需要知道 ,也就是深度信息。要是能直接计算那可不逆天了,视觉三维重建工程师得全下岗了!
坐标系咱们就说到这里。大家会推导投影矩阵就算是通关了。
下面来看看关键矩阵。
关键矩阵(基础矩阵F、本质矩阵E、单应矩阵H)
先阐明:关键矩阵描述的是两张影像的像素点之间的对应关系,用来做SFM两张图像间的相对位姿变换。
先不直接告诉你们这三个关键矩阵是什么含义,我们一步步推导开来,看到最后你们会恍然大悟,哦,原来是这样!
我们先来看两张影像构成的双视模型。
开始推导:
本文仅做学术分享,如有侵权,请联系删文。
引言计算机视觉是一门研究如何使计算机“看”的学科,而物体识别是计算机视觉中的一个重要研究领域。随着人工智能的发展和计算机性能的提升,物体识别在图像处理、自动驾驶、安防监控等领域发挥着越来越重要的作用。什么是物体识别物体识别是指计算机利用图像或视频数据,通过算法自动识别和分类出图像中的物体。这不仅包括了对物体的检测,还包括了对物体的分类和定位。物体识别的目标是使计算机能够像人类一样理解和分析图像中的
OpenCV(Open Source Computer Vision Library)是计算机视觉领域最常用的开源库之一,它提供了丰富的图像处理和模式识别功能,广泛应用于人脸检测、物体识别、图像分割等场景。与深度学习框架相比,OpenCV 更注重传统计算机视觉算法的高效实现,能在资源有限的设备上快速运行。本文将通过多个实战案例,从基础操作到实际应用,讲解如何使用 OpenCV 进行图像识别开发。一
在计算机视觉中,投影矩阵起着至关重要的作用,尤其是在图像捕捉和三维重建的过程中。投影矩阵的主要目标是将三维坐标系中的点转换为二维图像平面上的点。然而,在实际应用中,我们常常会遭遇一些问题,例如不准确的映射或失真现象,这些问题需要我们进行详尽的排查并提出解决方案。本博文将对此过程进行复盘记录。### 问题背景在进行一项计算机视觉项目时,团队遇到了一种异常现象,这影响了系统的性能和输出图像的质量
# 计算机视觉中的投影方程实现指南在计算机视觉领域中,投影方程是一个关键概念,通常用于图像处理、三维重建等任务。本文将一步步指导你实现投影方程的计算,具体步骤包括准备数据、建立投影模型、实现投影计算和可视化结果。## 整体流程下面的表格展示了实现投影方程的流程:| 步骤 | 描述 | 代码
## 稀疏矩阵在计算机视觉中的应用在计算机视觉领域,图像处理过程中通常涉及到大量的数据处理和计算。而对于稀疏矩阵的应用可以帮助我们更高效地处理这些数据,提高计算效率和节省存储空间。### 什么是稀疏矩阵?稀疏矩阵是指大部分元素为零的矩阵。在实际的图像数据中,大部分像素的数值为零(黑色),只有少数像素的数值不为零(彩色)。因此,图像可以看作是一个稀疏矩阵。### 稀疏矩阵的优势稀
成像几何世界坐标系 (U,V,W) 中感兴趣的对象成像几何相机坐标系 (X, Y, Z)Z是光轴图像平面 (像素平面,成像平面) 位于沿光轴往外 f 个单位
# 计算机视觉中的基础矩阵实现指南## 引言基础矩阵(Fundamental Matrix)是计算机视觉中的一个重要概念,广泛应用于立体视觉、图像配准等领域。它描述了两个摄像机坐标系之间的几何关系,常用于匹配图像中的对应点。本文旨在指导初学者如何实现基础矩阵的计算过程。## 整体流程### 1. 收集数据* 获得一组对应的图像点坐标。### 2. 归一化点* 对点坐标进行归
一个矩阵是由行(row)和列(column)组成的一个矩形数组,通常包含数字。我们可以用大写字母(如 A、B)来表示一个矩阵。其中,a11是位于第一行第一列的元素,a12是第一行第二列的元素,以此类推。图像可以被看作是一个巨大的矩阵,其中每个像素点对应矩阵中的一个元素。
例如,在下图中选定第2行、第3行和第2列、第3列的交集。选取矩阵中指定的行和列的交集。
回忆:成像几何世界坐标系 (U,V,W) 中感兴趣的对象成像几何相机坐标系 (X, Y, Z)Z是光轴图像平面 (像素平面,成像平面) 位于沿光轴往外 f 个单位f 称为焦距成像几何正向投影到图像平面 (像素平面,成像平面) 上。三维(X,Y,Z)投影到二维(x,y)成像几何我们的图像被数字化成像素坐标(u,v)成像几何正向投影我们需要一个数学模型来描述如何...
对不起大家,opencv的坑我尽量在年底更完,C++的坑已经基本更完了,在没有进一步深入学习C++之前可能这个系列已经算完了。不多说,我看看机器视觉的基本内容吧。(一)基本构成传统的机器视觉系统是由待测目标、灯源、镜头、相机、信号后端处理部分(包括图像采集和图像信号处理)。该系统主要应用于测量、检测、定位、识别,其发展趋势为高速化、高分辨率、彩色、低功耗、智能化、模块化、简单化。(1)镜头1.视野
目录摘要视觉SLAM算法的发展相关综述VSLAM 设置标准传感器和数据采集目标环境视觉特征处理系统评估语义等级基于主要目标的VSLAM方法目标一:多传感器处理目标二:姿态估计目标三:现实世界可行性目标四:资源限制目标五:弹性化(Versatility)目标六:视觉里程计(Visual Odometry)确定当前趋势统计数字分析当前趋势结论参考摘要近年来,基于视觉的传感器在SLAM系统中显示出显著的
【计算机视觉】全息投影技术标签(空格分隔): 【图像处理】 【科普杂谈】说明:本文主要想弄清楚全息投影技术的一些科普知识,基于前天DIY了一个小型简易的projector,现在对其原理进行说明一下。简要说明全息投影技术也称虚拟成...
初识我们研究计算机视觉的目的主要是根据人类的视觉特性来给计算机带来“光明”,让它更好的来替代人来工作或者完成人类不能完成的工作,更好的为企业减少劳动力,提高生产效率,同时也不断在提高人们的生活质量。研究机器视觉是更好为工业中的制造业提供更多有利于提高产品质量和提高生产效率的支持。什么是机器视觉?机器视觉,即采用机器代替人眼来做测量和判断。机器视觉系统是指通过机器视觉产品(即图像摄取装置,分cmos
本文转载高博士的博客 主要介绍了在计算机视觉中关于3D变换矩阵的数学方法。旋转矩阵是一种3×3的正交矩阵, 这里R为3D的旋转矩阵,同样的,t为3D的平移矢量。 由于3D旋转都可以归结成按照某个单位向量n进行大小为θ的旋转。所以,已知某个旋转时,可以推导出对应的旋转矩阵。该过程由罗德里格斯公式表明,由于过程比较复杂,我们在此不作赘述,只给出转换的结果: 这里 公式虽然较为复杂,但实际写成程
2.1 针孔模型 计算机视觉是一门研究如何让计算机“看”世界的学科。人要看到世界需要眼睛,计算机要看到世界同样也需要“眼睛”,计算机的“眼睛”主要就是相机。实际应用中,相机的种类纷繁复杂,包括手机和平板电脑的相机,传统的胶
纹理特征描述图像或图像区域所对应景物的表面性质,是图像中计算出来的一个值,它对区域变化的特征进行量化。纹理分析是通过一定的图像处理技术抽取纹理特征,从而获得纹理的定量或定性描述的处理过程。灰度差分统计法纹理区域的灰度直方图作为纹理特征,利用图像直方图提取诸均值、方差、能量及熵等特征来描述纹理。设(x,y)为图像中的一点,该点和它只有微小距离的点(x+▲x,y+▲y)的灰度差值为:g▲(x,y) =
数据驱动的图像分类数据集图像的构建在收集数据集之前,我们需要知道对于图像分类,哪些因素会影响计算机对于图像的识别,也就是跨越**“语义鸿沟”**(即如何将我们人类所看到的高层意思转换为计算机所识别的低二进制) 影响计算机对于图像处理的因素1.视角 对于人来说,从不同的角度看一张图片能很好的识别出是否是同一个物体,而对于机器提取同一物体的不同角度的特征是困难的。2.光照 在不同的光照条件下,同一物体
通过本文的探讨,我们解构了 Android 崩溃捕获的底层原理,并围绕三大核心技术难点(捕获时机、黑盒现场、堆栈混淆)设计了一套捕获方案。 ...
在视频监控全面联网、智能化升级的时代,单纯的点对点监控已无法满足复杂业务的需求。核心诉求在于:如何在一个平台上,随时随地、高效稳定地调阅来自成千上万台不同品牌、不同地域设备的实时视频与历史录像? 同时,如何让这种调阅能力与行业业务深度结合,创造价值?国标GB28181协议为此提供了统一的“通信语言” ...