人类通过感觉器官获取的外部世界信息里有 80%是来自视觉。研究生物视觉系统发现,双目是生物具有视觉的重要前提。以人为例,当人用两眼分别观察视野前方的物体时,会发现左眼和右眼观察到的物体在距离和方位上不大一致,这就是视差。通过视差对比分析,才能更好地研究物体在实际世界的中位置。
由于双目立体视觉系统是通过模拟人的双眼来进行感知这一原理,因此在实际中只需要两个相机,并将它们像人的双眼一样,安装在同一水平线上经过简单校正之后就可以投入使用。实现方式相对简单,使用成本低廉。因此,本文通过对双目立体视觉系统的研究,可以更好地理解图像特征提取与匹配的算法原理和效率,并且实现在非接触条件下快速准确测量。
(1)在对相机成像和坐标系原理研究的基础上,依托维视双目立体视觉测量平台 MV-VS220 实现了双目相机标定,以及目标物体图像数据采集。
(2)在灰度化、二值化以及加噪等必要图像预处理的基础上,研究 SIFT、SURF 特征点提取与匹配算法,进行实验并显示提取和匹配效果;研究测距模型和视差深度计算目标物体的深度信息, 进行实验并获取测量结果,对测量误差进行分析与讨论。
(3)基于维视双目立体视觉测量平台 MV-VS220,采用 Python+OpenCV 开发工具,设计实现了一个双目立体视觉图像匹配与测距原型系统,可实现对关键环节的过程与结果的演示,以及不同算法的性能比较。
探究摄像机成像模型与视觉坐标系之间的转换关系,世界坐标系中物点 P 的坐标(, , )与图像像素坐标系中成像点 p 的坐标(, )间的关系,如式(1)所示。

之后采用张正友标定法进行相机标定实验,得到的相机参数如下表 1 所示。
表 1 相机标定参数结果

研究 SIFT 和 SURF 两种算法所提取的特征关键点,针对环境变化时的性质与提取效率,并通过实验数据显示研究结果。首先利用搭建好的维视双目立体视觉测量平台 MV-VS220 采集目标物体图像,然后对比原图像和灰度化、二值化、加噪等不同预处理图像,在 SIFT 特征提取和 SURF 特征提取之后的效果如图1所示。

(a)原图像 (b)SIFT 特征提取 ©SURF 特征提取
图 1 原图像与预处理图像特征提取之后效果图
原图像和预处理图像经过 SIFT 特征提取和 SURF 特征提取后效率对比如图 2 所示。

图 2 原图像和预处理图像经过 SIFT 和 SURF 特征提取后效率对比图
原图像和加噪图像、旋转变化图像、光照图像经过 SIFT 和 SURF 特征提取后效果如图3所示。

(a)原图像 (b)SIFT 特征提取 ©SURF 特征提取
图 3 原图像和不同环境图像经过 SIFT 和 SURF 特征提取后效果图
原图像和不同环境图像经过 SIFT 特征提取和SURF 特征提取后效率对比如图4所示。

图 4 原图像和不同环境图像经过 SIFT 特征提取和 SURF 特征提取后效率对比图
提取特征点之后进行图像特征匹配研究,主要采用 SURF 特征点分别结合 FLANN 匹配法和 BF匹配法进行研究分析,实验效果图如下图 5 所示。

(a) FLANN 匹配 (b) BF 匹配
图 5 SURF 特征点结合 FLANN 匹配和 BF 匹配效果图
最后得到的不同特征点与匹配方法组合的实验结果如下表2所示。
表 2 不同特征点和匹配方法组合实验结果
| 特征点+匹配方法 | 阈值 | 左/右特征点提取个数 | 总匹配对数 | 误匹配对数 | 误匹配率(%) | 匹配时间(ms) |
|---|---|---|---|---|---|---|
| SIFT+BF | - | 538/427 | 538 | 438 | 81.41% | 76.4161 |
| SIFT+FLANN | - | 538/427 | 538 | 438 | 81.41% | 45.0403 |
| SURF+BF | 3000 | 98/79 | 98 | 63 | 64.28% | 9.5683 |
| SURF+FLANN | 3000 | 98/79 | 98 | 63 | 64.28% | 5.2383 |
| SURF+BF | 5000 | 47/34 | 47 | 29 | 61.70% | 6.1689 |
| SURF+FLANN | 5000 | 47/34 | 47 | 29 | 61.70% | 3.5768 |
| SURF+BF | 7000 | 26/21 | 26 | 8 | 30.76% | 4.5186 |
| SURF+FLANN | 7000 | 26/21 | 26 | 8 | 30.76% | 2.1976 |
对于相同的特征点,不同匹配方法得到的情况相同,误匹配率也是一致的,但是 FLANN 明显快于 BF 方法;对应相同的匹配方法,不同的特征点的匹配情况各不相同,SURF 特征点比 SIFT 特征点匹配精度要高很多,而且 SURF 阈值越大,精度越高,速度也要快。
研究平行双目模型和视差深度算法得到视差深度计算公式,之后需要进行目标测距实验。实验采集的原始图像根据相机参数重构之后的图像如下图6所示。

图 6 左右相机重构图像
最后得到的深度差异图如图7所示。

图 7 深度差异图
可由深度差异图获得相应的位置上的对应深度信息,实验结果整理如表3所示。
表 3 目标测距实验结果与误差
| 匹配点对图像像素坐标(单位:像素) | 对应特征点三维坐标(单位:mm) | 测量距离(单位:mm) | 实际距离(单位:mm) | 误差% |
|---|---|---|---|---|
| (145,77) | (-1528.5068,-190.49118,4126.581) | 4126.581 | 4225 | 2.33% |
| (171,105) | (-1559.8071,-159.69981,4309.4355) | 4309.4355 | 4321 | 0.27% |
| (200,121) | (-1520.9952,-137.44597,4314.6025) | 4314.6025 | 4322 | 0.17% |
| (200,146) | (-1481.9042,-99.74401,4203.7134) | 4203.7134 | 4319 | 2.67% |
| (200,163) | (-1519.1737,-78.43294,4309.4355) | 4309.4355 | 4319 | 0.22% |
| (273,135) | (-1466.0504,-121.74778,4458.957) | 4458.957 | 4320 | 3.22% |
| (341,118) | (-1748.8832,-187.22635,5702.66) | 5702.66 | 5502 | 3.65% |
| (361,111) | (-1144.2224,-133.8237,3811.8416) | 3811.8416 | 4006 | 4.85% |
基于双目立体视觉原理和已有的相机标定实验、图像匹配实验以及距离测量实验结果,设计并实现了一个立体匹配与测距原型演示原型演示系统。系统主要包括打开图像采集功能、图像匹配功能以及距离测量功能,系统的功能结构如图8所示。

图 8 系统功能结构图
系统使用的硬件平台如图9所示。系统软件主界面和各个功能模块截图如
图10所示,主要包括图像采集、图像匹配、距离测量三个功能模块。点击相应的按钮进入单独的功能界面。

图 9 维视双目立体视觉测量平台 MV-VS220

图 10 演示系统主界面和各功能模块界面截图
经系统测试,本文所设计实现的图像匹配与测距系统能够成功采集图像并进行特征点提取与匹
配,可以对目标物体进行定位和距离测量。系统从界面、功能与性能方面均达到了设计的要求。
在理解双目立体视觉原理的基础上,研究了相机成像模型和视觉坐标系,通过相机标定实验获取了相机参数;研究了基于 SIFT 和 SURF 算法的特征点提取以及 FLANN 和 BF 匹配法的原理,通过实验对比了不同算法的效果与效率;研究了目标物体的定位与测距的原理,通过实验获得对应深度信息及误差;设计并实现了基于双目立体视觉的图像匹配与测距演示系统,完成了必要的功能演示。
今后,仍需深入研究特征提取与匹配方法,使其具有更好的匹配效果与更快的执行速度;还需要进一步完善目标物体的定位和测距以减小测量误差;同时,需要继续进行演示系统的功能完善和界面美化等工作。

大小: 99.2MB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87392388
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
在我的应用程序中,我需要能够找到所有数字子字符串,然后扫描每个子字符串,找到第一个匹配范围(例如5到15之间)的子字符串,并将该实例替换为另一个字符串“X”。我的测试字符串s="1foo100bar10gee1"我的初始模式是1个或多个数字的任何字符串,例如,re=Regexp.new(/\d+/)matches=s.scan(re)给出["1","100","10","1"]如果我想用“X”替换第N个匹配项,并且只替换第N个匹配项,我该怎么做?例如,如果我想替换第三个匹配项“10”(匹配项[2]),我不能只说s[matches[2]]="X"因为它做了两次替换“1fooX0barXg
如何匹配未被反斜杠转义的平衡定界符对(其本身未被反斜杠转义)(无需考虑嵌套)?例如对于反引号,我试过了,但是转义的反引号没有像转义那样工作。regex=/(?!$1:"how\\"#expected"how\\`are"上面的正则表达式不考虑由反斜杠转义并位于反引号前面的反斜杠,但我愿意考虑。StackOverflow如何做到这一点?这样做的目的并不复杂。我有文档文本,其中包括内联代码的反引号,就像StackOverflow一样,我想在HTML文件中显示它,内联代码用一些spanMaterial装饰。不会有嵌套,但转义反引号或转义反斜杠可能出现在任何地方。
我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden
我有一个驼峰式字符串,例如:JustAString。我想按照以下规则形成长度为4的字符串:抓取所有大写字母;如果超过4个大写字母,只保留前4个;如果少于4个大写字母,则将最后大写字母后的字母大写并添加字母,直到长度变为4。以下是可能发生的3种情况:ThisIsMyString将产生TIMS(大写字母);ThisIsOneVeryLongString将产生TIOV(前4个大写字母);MyString将生成MSTR(大写字母+tr大写)。我设法用这个片段解决了前两种情况:str.scan(/[A-Z]/).first(4).join但是,我不太确定如何最好地修改上面的代码片段以处理最后一种
我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle
我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵