双摄与双目视觉

越来越多的手机开始上双摄,首先解释一下双摄的目的,双摄可以达到什么样的效果。首先双摄可以分为两类,一类是利用双摄获得图像中物体到镜头或者焦距的距离,得到景深信息就可以进行后续的3D重建、图像分割、背景虚化等;一类是利用两个摄像头所成的不同图像进行图像融合,获得更多的细节信息,包括RGB镜头和Mono黑白摄像头获得图像的融合,黑白摄像头可以捕捉更多的细节,即解析力更高;还有广角摄像头和长焦摄像头所获图像的融合和不同曝光参数的摄像头实现的HDR效果。第一类中为了通过三角定位原理实现景深信息的获得,两个摄像头的物理距离要尽可能大,而在第二类中为了图像融合,两幅或者多幅图像需要进行对准,所以需要两个摄像头尽可能重叠。所以这里有一个需要平衡的点,当然,还是要算法尽可能好。需要说明的是,景深的获得可以通过深度相机主动发射和捕捉射线来直接实现距离的计算。IPhone X就前置了结构光深度相机,采用了伪随机散斑。此外还有飞行时间深度方案(Time of Fly,TOF),可以绕开结构光的专利问题。这篇先来理解传统的基于小孔成像的三角定位(triangulation)。

立体视觉(stereo vision)狭义上指的就是从两个或者多个摄像头中获得图像的深度信息。它和双目立体视觉和稠密立体算法密切相关。现在研究的重点是实现实时性。

先来看单摄像头的情况。在摄像头轴线的延长线上的多个点所成的像是重合的,所以无法区分它们。这也是造成一些视觉混淆现象的原因,比如下图的哪一栋楼在前面,具体原因可能还有不同人眼的感知不同波长的锥体的分布不同,而分布不同的原因可能又是不同作息规律对锥体的训练情况不同造成的。

再看一下双摄像头下的成像。

在双摄像头下,总会存在一个摄像头中会由于距离的原因产生差异。先抛去三角定位原理,这里的关键就是如何在两幅图像中计算得到p(q)对应的p’、q’。这里首先要介绍一下极线约束(epipolar constraint)。

曲线L上A、B两点的切线相交于点P,那么P就是极点,直线AB称为极点(Epipole)P的极线。极线约束是一种点对直线的约束,而不是点与点的约束,尽管如此,极线约束给出了对应点重要的约束条件,它将对应点匹配从整幅图像寻找压缩到在一条直线上寻找对应点。直接在两个摄像头所成图像中当然可以通过SIFT特征点等寻找匹配对,但是通过极线约束我们将搜索范围从滑窗的大小缩小到一条直线的范围,对于参考图中的点p,通过极线约束,我们可以找到实际物体P、Q在Target图中的位置所在的直线。

由上图,红色线上的P、Q及其延长线上的点都会被投影在Target T中的绿色线上。在下图中,X、X1、X2、X3在左摄像头中都重叠为同一点,而在右摄像头的视角中,表现为几点共线。

OL和OR是我们模仿小孔成像的小孔,或者理解为相机中的透镜所在的位置。所成的像应该在其后方,且是倒立的像,但为了方面,我们取小孔之前的正立像作为生成的图像,它与实际的倒像呈翻转和缩放的关系。我理解的对极约束的物理意义是获得分别获得两个摄像头相对于另外一个的位置。所以两个极点eL和eR。eL是OR在OL下的投影,eR是OL在OR下的投影。这样,左摄像头就知道了右摄像头的位置,右摄像头也知道了左摄像头的位置,这样就获得了先验知识,有利于对应点的查找和匹配。X、OL、OR三点确定一个平面,这就是epipolar plane极面,即目的物体位置,两个透镜中心确定了极面,这个极面是可变的(极面与透镜中心,目标物体中心有关,极点只与两个镜头位置有关)。对每一个确定的极面,极线就是极面与成像的交线,分别是通过另一个透镜中心的直线在本透镜下的投影。极点和极线是曲线上点和该点的切线的一般化,而三维空间中的极点极线又是对曲线情况的一般化,所以不太好理解,只能通过投影的方法解释。

这里的图示,尤其是左摄像头的图示,只是表示了几个物体的相对位置的重叠遮挡情况。即便不同物体的中心与透镜中心成一条直线,更远的物体往往只有一部分会被前面的物体遮挡。这里成像模型简化为小孔成像,物体也简化成质点,而实际上镜头和物体都是有大小的,实际情况中往往不是因为投影重叠造成无法判断距离远近,实际即便是单摄像头中远近不同的物体也会有不同的成像表现,只不过单摄像头下这种不同差异可能很小,需要依靠个人经验判断甚至难以判断,而且更是无法获得精确的距离大小。

在数学上,我们需要描述左摄像头获得图像中的点和另一幅图像中的极线,这样像素点在右摄像头图像中的对应点一定在这一条直线上(搜索范围可以从2D缩小到1D)。这就涉及到两个矩阵:对极矩阵(Epipolar Matrix)/本质(本征矩阵Essential Matrix)和基本矩阵(Fundamental Matrix)。

本征矩阵描述的是两个相机坐标系之间的关系(旋转R和平移T)。Pl是物体P在Ol相机坐标系中的坐标,Pr是物体P在Or相机坐标系下的坐标。注意,是物体的坐标,而不是图像中像素的坐标。

${P_r} = R({P_l} - T)$

R是正交矩阵,所以$({P_l} - T) = {R^T}{P_r}$

因为三向量共面, ${({P_l} - T)^T}T \times {P_l} = {({R^T}{P_r})^T}T \times {P_l} = 0 = {P_r}^TR(T \times {P_l}) = P_r^TRS{P_l}$

所以,本征矩阵E=RS

因为 ,所以本征矩阵只和外参R和T有关,且S的秩rank=2。

本征矩阵只包含了两个摄像头的相对位置。对于具体的图像,不仅与小孔/透镜的位置有关,还与透镜的焦距等有关。透镜的焦距等属于相机的内参。不同相机的内参不同,而且还可能是未知的。我们现在要做的是得到两幅图中对应点的像素的关系。首先可以由目标物体的坐标分别得到其在两幅图像中的坐标。左右两幅图分别有各自的图像坐标系,其关系是偏移量为摄像头的间距Tx(这里考虑的是最简单的摄像头排列情况,更复杂的关系要靠上文提到的本征矩阵来表示)。目标物体的三维坐标同样以左图的原点为原点。

xl-xr可得黄色框中Z的表达式。这样就可以得到目标物体到baseline的距离Z。d表示的是两幅图像中的对应点在各自坐标系中的坐标之差xl-xr。f表示镜头的焦距。depth也可以由下图由相似三角形直接得到。需要注意的是绿色的baseline长度是b,且两幅图像(粉色线段)之间的关系也是进行了长度为b的平移。

在本征矩阵中得到了物体在两个镜头坐标系下的坐标的关系,由上图中求图像坐标的表达式也可以得到两幅图中对应点的坐标的关系。也是三个元素的点乘等于0.为了将坐标离散化,将坐标的绝对长度转换成像素点的个数,这才引入了基础矩阵。基础矩阵不仅依赖于两个摄像头之间的平移和旋转量,还依赖于相机的内部参数。

到这里,我们就可以由左图中像素点的坐标得到其在另外一幅图中对应点的约束直线方程。而且通过SVD分解可得极点。

注:

这里的双目视觉是被动的测量,知乎日报的一篇文章讲解了Iphone是如何利用结构光实现了人脸的识别,实现了点与点的配对。

Reference:

1.http://vision.deis.unibo.it/~smatt/FBS_GPU.html

2.http://vision.deis.unibo.it/~smatt/Seminars/StereoVision.pdf

3.https://www.cnblogs.com/houkai/p/6661607.html

4.https://zhuanlan.zhihu.com/p/37802103

5.https://blog.csdn.net/lin453701006/article/details/55096777

6.https://blog.csdn.net/KYJL888/article/details/81566961

7.https://www.cnblogs.com/houkai/p/6661607.html

8.http://www.robots.ox.ac.uk/~vgg/hzbook/hzbook2/HZepipolar.pdf

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

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

相关文章

“脑补”的科学依据:眼前的黑不是黑,靠得是你的大脑

一个在眨眼的婴儿 | 图片来源:Leungcho Pan/Shutterstock撰文:Mindy Weisberger来源:科研圈编译:向菲菲人们常说:“别眨眼,精彩稍纵即逝。”但其实在我们眨眼的时候,精彩仍在我们眼前上演。我们…

基于Sql Server 2008的分布式数据库的实践(三)

配置PHP 1.打开PHP配置文件,找到extensionphp_mssql.dll,将前面的注释符号去掉 2.找到mssql.secure_connection,将Off改为On 3.找到com.allow_dcom true,将前面的注释符号去掉 4.下载正确版本的 ntwdblib.dll (2000.80.194.0)&am…

ORB论文研读与代码实现

首先,ORB算法来自于OpenCV Labs,相比于SIFT和SURF,ORB在使用中不必担心专利的问题。但同时ORB在保证了一定性能的条件下做到了高效。在论文《ORB: An efficient alternative to SIFT or SURF》2011中,ORB在特征点检测和描述子生成…

腾讯发布人工智能辅助翻译,致敬人工翻译

来源:腾讯AI实验室11月13日,深圳 - 腾讯AI Lab今日发布了一款AI辅助翻译产品 - “腾讯辅助翻译”(Transmart),可满足用户快速翻译的需求,用AI辅助人工翻译提高效率和质量。该产品采用业内领先的人机交互式机…

吴恩达作业2 利用两层神经网络实现不同颜色点的分类,可更改隐藏层数量

任务:将400个两种颜色的点用背景色分为两类。 前面的还是建议重点学神经网络知识,至于数据集怎么做的后面在深究,首先先看看数据集,代码如下: def load_planar_dataset():np.random.seed(1)m 400 # number of exampl…

利用tensorflow构建AlexNet模型,实现小数量级的猫狗分类(只有train)

首先看路径: data文件夹分为,model文件夹,train文件夹和文件夹,model文件夹存放模型文件,train存放cat和dog的两个文件夹图片, validation和train一样。config.py存放配置的一些参数,util.py定…

脑网络的可塑性——随时都在发生

来源:神经科技前沿神经元的突起是神经元胞体的延伸部分,由于形态结构和功能的不同,可分为树突(dendrite)和轴突(axon);树突是从胞体发出的一至多个突起,呈放射状。轴突每个神经元只有一根胞体发出轴突的细胞 质部位多呈…

KAZE论文研读

KAZE是发表在ECCV2012的一种特征点检测算法,相比于SIFT和SURF,KAZE建立的高斯金字塔是非线性的尺度空间,采用加性算子分裂算法(Additive Operator Splitting, AOS)来进行非线性扩散滤波。一个很显著的特点是在模糊图像的同时还能保留边缘细节…

简单的线性模型实现tensorflow权重的生成和调用,并且用类的方式实现参数共享

首先看文件路径,line_regression是总文件夹,model文件夹存放权重文件, global_variable.py写了一句话. save_path./model/weight 权重要存放的路径,以weight命名. lineRegulation_model.py代码 import tensorflow as tf "…

comparing ORB and AKAZE

文章全称是《Comparing ORB and AKAZE for visual odometry of unmanned aerial vehicles》。这是一篇来自巴西的文章,没有在百度文库中找到,是在其他博客中给出的链接得到的。从链接的URL可以看出这是一篇来自会议CCIS云计算与智能系统国际会议的文章。…

利用 CRISPR 基因编辑技术,人类正在做七件“疯狂”的事

来源:36Kr编译:喜汤很少有哪种现代科学创新能像CRISPR基因编辑技术一样影响深远。有了它,科学家们可以精确地改变任何细胞的DNA。CRISPR技术成为新宠,部分原因是它比早期基因编辑技术更容易使用。尽管CRISPR还没有彻底大展身手&am…

吴恩达作业3:利用深层神经网络实现小猫的分类

利用4层神经网络实现小猫的分类,小猫训练样本是(209,64*64*312288),故输入节点是12288个,隐藏层节点依次为20,7,5,输出层为1。 首先看文件路径,dnn_utils_v2.py代码是激活…

A-KAZE论文研读

AKAZE是KAZE的加速版本。KAZE在构建非线性空间的过程中很耗时,在AKAZE中将Fast Explicit Diffusion(FED)加入到金字塔框架可以dramatically speed-up。在描述子方面,AKAZE使用了更高效的Modified Local Difference Binary(M-LDB),可以从非线性…

和你抢“饭碗”的40家服务机器人企业大盘点!

来源:物联网智库摘要:本文将对国内近40家服务机器人企业进行汇总介绍,所选企业在其相应版块活跃度较高。从三个大类进行了细分盘点。国家机器人联盟(IFR)根据应用环境将机器人分为了工业机器人和服务机器人。服务机器人…

YOLO9000

YOLO9000是YOLO的第三个版本。前两个版本是YOLO v1,YOLO v2,在CVPR2017的文章《Better,Faster,Stronger》中的前半部分都是对前两个版本的介绍,新的内容主要在Stronger部分。YOLO9000中的9000指的是YOLO可以对超过9000种图像进行分类。 Bett…

吴恩达作业4:权重初始化

权重初始化的 正确选择能够有效的避免多层神经网络传播过程中的梯度消失和梯度爆炸问题,下面通过三个初始化的方法来验证: sigmoid导数函数:最大值小于0.25,故经过多层反向传播以后,会导致最初的层,权重无…

先发制人!Waymo将首推商用载人自动驾驶服务,Uber们怕不怕?

编译:费棋来源:AI科技大本营“真的,真的很难。”11 月举办的一场会议上,Alphabet 旗下 Waymo CEO John Krafcik 对做自动驾驶汽车技术的艰难不无感慨。在他看来,未来几十年内,自动驾驶汽车将一直存在限制&a…

利用ORB/AKAZE特征点进行图像配准

Kp1,kp2都是list类型,两幅图都是500个特征点。这和ORB论文中的数据是一样的。4.4章节 Matches也是list类型,找到325个匹配对。 AKAZE文章中提到一个指标:MS(matching score)# Correct Matches/# Features, 如果overlap area error 小于40%…

吴恩达作业5:正则化和dropout

构建了三层神经网络来验证正则化和dropout对防止过拟合的作用。 首先看数据集,reg_utils.py包含产生数据集函数,前向传播,计算损失值等,代码如下: import numpy as np import matplotlib.pyplot as plt import h5py …

十年之后,数字孪生将这样改变我们的工作与生活

来源:资本实验室数字孪生是近几年兴起的非常前沿的新技术,简单说就是利用物理模型,使用传感器获取数据的仿真过程,在虚拟空间中完成映射,以反映相对应的实体的全生命周期过程。在未来,物理世界中的各种事物…