- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是一名拥有大约十年企业软件工程经验的开发人员,而我的业余爱好使我进入了广阔而令人恐惧的计算机视觉(CV)领域。
我尚不清楚的一件事是“运动结构”(SFM)工具和“多视图立体声”(MVS)工具之间的分工。
具体来说,CMVS似乎是最好的MVS工具,而Bundler似乎是那里更好的开源SFM工具之一。
摘自CMVS自己的主页:
您应该在捆绑器之后和PMVS2之前始终使用CMVS
我想知道:为什么?!?我对SFM工具的了解是它们为您执行3D重建,那么为什么我们首先需要MVS工具?它们为BFM等SFM工具无法解决的哪些价值/加工/功能增加了什么?为什么建议建立以下管道:
Bundler -> CMVS -> PMVS2
最佳答案
很快,运动结构(SfM)和多视图立体声(MVS)技术是互补的,因为它们不能处理相同的假设。它们的输入也略有不同,MVS需要运行摄像头参数,该参数由SfM估算(输出)。 SfM仅提供粗略的3D输出,而PMVS2提供更密集的输出,最后通过CMVS来规避PMVS2的某些限制。
答案的其余部分提供了每种方法的工作原理的高级概述,并解释了为什么采用这种方法。
运动结构
您突出显示的3D重建管道的第一步是SfM算法,可以使用Bundler,VisualSFM,OpenMVG等完成。该算法输入一些图像并输出每个图像的相机参数(稍后会详细介绍)以及场景的3D粗糙形状,通常称为稀疏重建。
SfM为什么只输出粗糙的3D形状?基本上,SfM技术从检测每个输入图像中的2D特征并在图像对之间匹配这些特征开始。例如,目标是告诉“此工作台角位于这些图像中的那些像素位置”。这些功能由所谓的描述符(例如SIFT或ORB)描述。这些描述符被构建为表示图像中的一个小区域(即一堆相邻像素)。它们可以可靠地表示高度纹理化或粗糙的几何形状(例如,边缘),但是这些场景特征需要在整个场景中都是唯一的(从意义上来说是唯一的)才能有用。例如(可能过于简化),具有重复图案的墙对于重建而言不是很有用,因为即使它具有很高的纹理,墙的每个区域都可能与墙上的其他任何地方相匹配。由于SfM正在使用这些功能执行3D重建,因此3D场景重建的顶点将位于这些唯一的纹理或边缘上,从而提供粗糙的网格作为输出。如果没有精确和独特的纹理,SfM通常不会在表面中间产生顶点。但是,当在图像之间找到许多匹配项时,可以计算出图像之间的3D变换矩阵,从而有效地给出两个相机姿态之间的相对3D位置。
多视图立体声
之后,将MVS算法用于细化通过SfM技术获得的网格,从而导致所谓的密集重构。此算法要求每个图像的相机参数都起作用,这由SfM算法输出。由于它适用于更受约束的问题(因为它们已经具有每个图像的相机参数,例如位置,旋转,焦点等),因此MVS将在描述符未正确(或无法正确检测)的区域上计算3D顶点或匹配。这就是PMVS2所做的。
PMVS如何在二维特征描述符难以匹配的区域上工作?由于您知道相机参数,因此知道图像中的给定像素就是另一图像中线的投影。这种方法称为epipolar geometry。 SfM必须为每个描述符搜索整个2D图像以找到可能的匹配,而MVS将在单个1D线上工作以找到匹配,从而大大简化了问题。因此,MVS通常会在优化过程中考虑照明和物体材质,而SfM则不会。
但是,有一个问题:PMVS2执行相当复杂的优化,可能会非常缓慢,或者在大图像序列上占用天文数字的内存。这是CMVS发挥作用的地方,将粗略的3D SfM输出聚集到区域中。然后,将在每个群集上(可能并行)调用PMVS2,以简化其执行。然后,CMVS将把每个PMVS2输出合并到一个统一的详细模型中。
结论
CMVS和PMVS2的作者Yasutaka Furukawa可在本教程中找到此答案中提供的大多数信息以及更多信息:
http://www.cse.wustl.edu/~furukawa/papers/fnt_mvs.pdf
从本质上讲,这两种技术都来自两种不同的方法:SfM旨在使用结构化(但未知)的图像序列执行3D重建,而MVS是基于人类立体感的双视立体视觉的概括。
关于computer-vision - 在计算机视觉中,SFM无法做到的MVS是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39217717/
我正在从 spring boot maven 项目调用 google vision OCR api 以从图像中提取文本。 public class TestGoogleVision { Buffere
是否可以使用 Google Vision API 读取姓名、地址、出生日期等身份证信息?在文档中,我找到了一些东西,但我不知道如何使用它。 https://developers.google.com/
请看两个测试结果。 有两种语言,但 Cloud vision api 总是以一种语言返回结果。 我们能否告诉图像中需要哪种语言,以便引擎可以尝试识别所有字符,即使它们是不同的语言? 1. 原图有3个汉
如何调用 Vision API 并在图像上应用多个功能。 我想在图像上同时应用标签检测和地标检测 最佳答案 您可以如下定义您的请求,以在每个图像中包含多个功能请求 "requests":[
我正在探索 Cloud Vision API 的功能,我想知道是否有任何方法可以检测标签检测下对象的尺寸。例如,如果您在街上拍摄汽车的照片,则 Cloud Vision API 将返回汽车的尺寸(长度
首先,请原谅我的英语不好。我在里面工作。 我正在从事计算机视觉应用方面的工作。我正在使用网络摄像头。主循环是这样的: while true get frame process
我正在尝试训练一个模型来识别图像中的某些标签。我尝试使用 1 小时免费版本,一小时后培训结束。结果并不像我想要的那么准确,所以我冒险选择了没有定义训练模型的具体时间限制的选项。 此时,它显示“训练视觉
我试图识别的最简单的例子: 我用 DOCUMENT_TEXT_DETECTION ,但在答案中我得到了象形文字。 如果我使用 Eng在 ImageContext addAllLanguageHints
我将其交叉发布到 Cloud Vision 的谷歌组... 并添加了一些额外的发现。 以下是我认为相关的所有细节: 使用 VB.NET 2010 使用服务帐号认证 仅限于 .NET 4.0 使用这些
我正在尝试使用 Google Vision API。我正在关注 getting started guide : 我已启用 Cloud Vision API 我已启用计费 我已经设置了 API key
我对使用Microsoft的认知服务还很陌生。我想知道MS Computer Vision API和MS Custom Vision API有什么区别? 最佳答案 它们都处理图像上的计算机视觉,但是希
知道如何将规范化顶点转换为顶点吗?归一化顶点给出了图像上的相对位置,而顶点根据图像的比例返回坐标。我有一组标准化顶点,我想将其转换为常规顶点。 https://cloud.google.com/vis
我正在使用 google cloud vision api 来分析图片。是否有 labelAnnotations 方法的所有可能响应的列表? 最佳答案 API reference Vision API
Google Cloud Vision API(测试版)的第 1 版允许通过 TEXT_DETECTION 请求进行光学字符识别。虽然识别质量很好,但返回的字符没有任何原始布局的暗示。因此,结构化文本
假设我有图像并且我想用西类牙语为它们生成标签 - Google Cloud Vision API 是否允许选择以哪种语言返回标签? 最佳答案 标签检测 Google Cloud Vision API
我使用 import torchvision 时遇到的错误这是: 错误信息 "*Traceback (most recent call last): File "/Users/gokulsrin/
我正在为 Google Cloud Vision API 使用 Python 客户端,与文档中的代码基本相同 http://google-cloud-python.readthedocs.io/en/
我正在查看 Google AutoML Vision API 和 Google Vision API。我知道,如果您使用 Google AutoML Vision API,那么它就是一个自定义模型,因
我正在查看 Google AutoML Vision API 和 Google Vision API。我知道,如果您使用 Google AutoML Vision API,那么它就是一个自定义模型,因
由于火线相机由于带宽限制而变得过时,相机制造商似乎正在转向 USB 3.0 或千兆以太网接口(interface)。两者都有许多制造商都遵守的标准 USB3 Vision 和 GigE Vision。
我是一名优秀的程序员,十分优秀!