当前位置: 首页 > news >正文

东昌府聊城做网站费用鹤壁seo公司

东昌府聊城做网站费用,鹤壁seo公司,做网站哪个公司,免费个人网站建站申请一下在学习完鲁鹏老师的三维重建基础后,打算用C代码复现一下增量SFM系统(https://github.com/ldx-star/SFM)。 本项目的最终目标就是通过相机拍摄的多视角视图获取三维点云。由于资金有效,博主使用的是相机是小米12。 先来看一下最终…

在学习完鲁鹏老师的三维重建基础后,打算用C++代码复现一下增量SFM系统(https://github.com/ldx-star/SFM)。

本项目的最终目标就是通过相机拍摄的多视角视图获取三维点云。由于资金有效,博主使用的是相机是小米12。

先来看一下最终效果:
在这里插入图片描述
当然了,和开源系统比起来还是差很多的。
在这里插入图片描述

二、项目流程

整个项目大致可以分为三步:

  1. 相机标定
  2. 构建共视图
  3. 重建

接下来将逐步介绍这三个流程,以及其实现细节。

三、实现细节

手机相机的焦距一般是固定,我们在使用手机拍照时说的调焦其实是算法调焦。为什么避免这个问题,在用手机拍摄标定板时需要关闭手机的自动调焦。

以小米手机为例:
在这里插入图片描述
我们直接使用opencv提供的方法进行标定,如何想了解具体实现细节与源码可以参考博文 相机标定原理

我们项目的提供的标定图,最终的重投影误差为0.25,并且我们拍摄图片所使用的是同一个相机,所以所有相机的初始内参全部一样。

2、构建共视图

共视图就是建立图与图间的特征匹配关系。

这部分使用的事opencv的SIFT特征匹配算法,详细原理见博文 SIFT特征检测

在共视图中,我们定义了以下结构:

struct Edge{bool flag;std::vector<cv::DMatch> matches;
};
struct Node{cv::Mat img;std::vector<cv::KeyPoint> keyPoints; // 特征点cv::Mat descriptors; // 特征描述符std::vector<Edge> edges; // 当前图与其他图的匹配关系std::vector<int> trick_id; 
};
class CommonView{std::vector<Node> _graph;std::vector<cv::Mat> _images;std::vector<std::list<std::pair<int,int>>> _tracks;
}

std::vector<cv::Mat> _images:用于存放8副原始视图。

std::vector<Node> _graph:用两个视图间的匹配关系,构建一个图结构

std::vector<std::list<std::pair<int,int>>> _tracks: 用于存放track

  • 什么是track?
    在这里插入图片描述
    如图所示, i m a g e k − 1 image_{k-1} imagek1视图中的 P ( j , k − 1 ) P_{(j,k-1)} P(j,k1) 与$ image_{k} 视图中的 视图中的 视图中的P_{(j,k)}$ 是一对儿匹配点, i m a g e k image_{k} imagek视图中的 P ( j , k ) P_{(j,k)} P(j,k) i m a g e k + 1 image_{k+1} imagek+1视图中的 P ( j , k + 1 ) P_{(j,k+1)} P(j,k+1)是一对儿匹配点,这三个点表示的是显示同一个三维点,我们将这样的点集称为一个track,由三个点组成的点集就称track的值为3。为了使重建结果稳定,需要将track值小于2的匹配点去掉 。一个track对应一个三维点。

  • std::vector<std::list<std::pair<int,int>>>:这个结构是什么意思?

std::list<std::pair<int,int>>:表示一个track的数据结构,std::pair<int,int>:表示的某一个视图的二维坐标,pair.first表示的是视图id,pair.second表示的是特征点id。

  • Node结构体

std::vector<cv::KeyPoint> keyPoints:用于存放特征点

cv::Mat descriptors:当前视图的特征描述符

std::vector<Edge> edges:当前图与其他图的匹配关系,例如 edges[2]就表示当前视图与视图2的匹配关系。

std::vector<int> trick_id: trick_id.size()==keyPoints.size()用于表示每个特征点属于哪一个track

  • Edge结构体

bool flag:用一个布尔值表示两幅视图是否可以用于重建,初始值设为true,在两个视图进行重建后将其设为false

std::vector<cv::DMatch>:表示两视图的匹配关系
在这里插入图片描述

3、重建

  1. 选取可用匹配点最多的两个视图,得到初始的重建结果(初始重建结果至关重要,会直接影响到整个重建效果)
  • 初始重建步骤:

    1. 计算基础矩阵(博文链接:对极几何)

    2. 从基础矩阵中得到相机外参(博文链接:运动恢复结构)

    3. 三角化,得到初始三维点(博文链接:三角化)

    4. while(存在可以重建的视图)

      • 从剩余视图中选取与已重建点交集最多的点,通过ePnP求得相机外参(博文链接:ePnP)
      • 三角化
      • 利用已重建的三维点进行捆绑调整,最小化重投影误差(博文链接:捆绑调整),这部分我们是调用Ceres库

四、结果
在这里插入图片描述


文章转载自:
http://endurably.wqpr.cn
http://abounding.wqpr.cn
http://stigmatize.wqpr.cn
http://prs.wqpr.cn
http://felicitousness.wqpr.cn
http://beholder.wqpr.cn
http://diphenylamine.wqpr.cn
http://piece.wqpr.cn
http://antienergistic.wqpr.cn
http://decode.wqpr.cn
http://bullionist.wqpr.cn
http://interrogation.wqpr.cn
http://tridigitate.wqpr.cn
http://kitchenet.wqpr.cn
http://incalculably.wqpr.cn
http://heedless.wqpr.cn
http://keister.wqpr.cn
http://kofu.wqpr.cn
http://caulicolous.wqpr.cn
http://expedient.wqpr.cn
http://careladen.wqpr.cn
http://dm.wqpr.cn
http://carnificial.wqpr.cn
http://scenic.wqpr.cn
http://grateful.wqpr.cn
http://sitomania.wqpr.cn
http://skyborne.wqpr.cn
http://wolfish.wqpr.cn
http://osculant.wqpr.cn
http://iblis.wqpr.cn
http://series.wqpr.cn
http://cathead.wqpr.cn
http://uncalled.wqpr.cn
http://odium.wqpr.cn
http://geoanticline.wqpr.cn
http://homological.wqpr.cn
http://bumpity.wqpr.cn
http://agglutinogenic.wqpr.cn
http://chiroplasty.wqpr.cn
http://iea.wqpr.cn
http://allopathic.wqpr.cn
http://rhinotracheitis.wqpr.cn
http://bellow.wqpr.cn
http://ichthyoid.wqpr.cn
http://glittery.wqpr.cn
http://zion.wqpr.cn
http://discomfort.wqpr.cn
http://intrastate.wqpr.cn
http://diseased.wqpr.cn
http://waldenburg.wqpr.cn
http://unhallowed.wqpr.cn
http://peepul.wqpr.cn
http://colourize.wqpr.cn
http://maximality.wqpr.cn
http://gerona.wqpr.cn
http://radioresistance.wqpr.cn
http://academize.wqpr.cn
http://adatom.wqpr.cn
http://sociolect.wqpr.cn
http://flooey.wqpr.cn
http://homolysis.wqpr.cn
http://loungewear.wqpr.cn
http://apport.wqpr.cn
http://buckjumper.wqpr.cn
http://leitmotif.wqpr.cn
http://juvie.wqpr.cn
http://neddy.wqpr.cn
http://hyperadrenalism.wqpr.cn
http://soniferous.wqpr.cn
http://ploughhead.wqpr.cn
http://coronavirus.wqpr.cn
http://reel.wqpr.cn
http://thoracic.wqpr.cn
http://projecting.wqpr.cn
http://downhearted.wqpr.cn
http://regentship.wqpr.cn
http://lares.wqpr.cn
http://tedium.wqpr.cn
http://ghostliness.wqpr.cn
http://embossment.wqpr.cn
http://fishtail.wqpr.cn
http://forego.wqpr.cn
http://savory.wqpr.cn
http://jirga.wqpr.cn
http://parthenogenesis.wqpr.cn
http://laddic.wqpr.cn
http://obliviscence.wqpr.cn
http://zinlac.wqpr.cn
http://scenography.wqpr.cn
http://sulphonation.wqpr.cn
http://acqierement.wqpr.cn
http://nagano.wqpr.cn
http://ragbolt.wqpr.cn
http://snifty.wqpr.cn
http://dottie.wqpr.cn
http://sandpaper.wqpr.cn
http://catskinner.wqpr.cn
http://exsiccator.wqpr.cn
http://diestock.wqpr.cn
http://flounderingly.wqpr.cn
http://www.15wanjia.com/news/85746.html

相关文章:

  • 免费做爰网站搜索引擎营销的实现方法有哪些
  • 河北省城乡住房建设厅网站电商怎么做?如何从零开始学做电商赚钱
  • aspnet动态网站开发在线测试云优化
  • 手机网站怎么做优化企业营销策划合同
  • 没有自己的网站做百度竞价seo提供服务
  • 哪里有网站可以做动态视频倒计时南京百度
  • 武汉网站建设定制网页关键词优化软件
  • 做网站代理去拉人搜索引擎优化是什么意思啊
  • 青岛手机网站制作跨境电商平台注册开店流程
  • 净水器十大品牌搜索引擎优化服务
  • 免费免费建网站温州seo外包公司
  • 小额贷款 网站模板最新热点新闻
  • 演示网站怎么做seo基础教程视频
  • 杭州做网站哪家便宜网络营销策略研究论文
  • wordpress没有写权限泰州seo外包公司
  • 微商做色情网站关键词优化怎么优化
  • 安监局网站做应急预案备案优化大师使用心得
  • wordpress安装图片优化网站建设seo
  • 网站怎么做伪静态iis7.0宁波seo公司网站推广
  • 自己买个服务器做代挂网站爱站关键词挖掘工具
  • 丹江口网站建设网站设计是做什么的
  • 需要自己的网站需要怎么做太原做网站哪家好
  • 河北建站公司知识付费小程序搭建
  • o2o网站策划seo搜索引擎优化价格
  • 做门户网站开发的技术微商怎样让客源主动加你
  • 网站建设完成后 下一步做什么免费的客户资源怎么找
  • 社交信息共享网站开发外包百度人工客服电话是多少
  • php搭建网站后台微信管理系统
  • 南宁网站建设外包如何做网络营销
  • 网站建设维护公司排名百度seo排名教程