
MVS
文章平均质量分 63
诗筱涵
自主无人机 微信公众号:诗筱涵 技术交流群:960668018 邮箱:1372740910@qq.com
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
自己对MVSNET的一些整理
这里有完整的MVSNet论文的翻译这里看到部分翻译这个可以看看 基于平面扫描的多视角立体(MVS)深度学习综述-北大Zhu Qingtian 2021感觉把一些基础都讲到了,也合区3D视觉工坊里的MVSNET课程里的内容很相似。原创 2025-02-01 21:54:59 · 1316 阅读 · 0 评论 -
自己对多目立体匹配(MVS)的一些整理
(基于深度学习的MVS)现在发觉深度估计可以分为单目深度估计,双目深度估计(立体匹配),多目立体匹配(MVS)。而MVSNET属于多目深度估计,似乎不是双目深度估计,双目深度估计似乎也有一些专门的深度学习方法。现在感觉可以感受到一点,就是不管是单目深度估计还是双目深度估计还是多目立体匹配 都基本全面转向深度学习了。我看到对MVS概括得最多而且简单的一句话是:寻找空间中具有图像一致性的点。很多地方都看到了这句话,我个人感觉意义没那么大,说了似乎根没说一样。多目立体匹配的前世今生。原创 2025-02-01 21:43:36 · 1895 阅读 · 0 评论 -
李迎松-立体视觉之立体匹配理论与实战 公开课 笔记
视差是离散的整数,换算出的深度也是离散的,同样是间隔一个视差,离这个相机越远,这个深度间隔就越来越大了。如果我的算法精度是一个像素,我稍微偏了一个像素,离相机越远,深度就会偏得越远,同样一个算法,离相机越远,空间精度就会越差。广义的视差是有行视差和列视差的,但是极线纠正之后,行坐标相同,只有列坐标的视差,所以立体匹配里面说到视差单指列坐标的偏差。极线纠正后,同名点行坐标相同,只存在列坐标的偏差,这个偏差就叫视差。极线纠正后,极线和图像的行平行了,而且对应的级线对,它的行坐标y值是相等的。原创 2024-04-28 13:22:50 · 775 阅读 · 1 评论 -
华科杨欣-基于视觉的深度估计与定位(含深度光流位姿联合估计)学习笔记
包括我现在看单目深度估计或者基于深度学习的里程计,确实就是深度和位姿或者光流和位姿一起估计,不是单一的,这个层面再去反看自监督单目深度估计为什么那么弄可能就好理解了。) (GeoNet:基于无监督学习的深度、光流和相机位姿的联合估计 CVPR2018)上面的需要大量样本训练,没有大量样本时实现无监督的光流和深度的联合估计。深度学习可以得到稠密光流,稠密光流可以得到稠密的特征点匹配,通过三角测量可以得到稠密的深度。【华中科技大学杨欣教授:“基于视觉的深度估计与定位”-哔哩哔哩】原创 2024-04-28 08:56:53 · 753 阅读 · 0 评论 -
基于D435i跑vins+densesurfelmapping的一些关键点
2 时间戳一致,这种情况会出现在自己实现录制了D435i的bag包,然后基于这个bag包跑vins+densesurfelmapping,会发现建不出图,是因为densesurfelmapping里面有时间戳对齐,基于D435i的bag包跑,vins位姿的时间戳和深度图以及彩色图的时间戳是不一致的,也就没法完成对齐也就不能建图。网上看到不少人说跑vins+densesurfelmapping,没有建出图,我自己也是。经过层层排查,发现主要是下面这两个点,这两个点任何一个没有满足,都会建不出图。原创 2024-03-27 15:54:02 · 804 阅读 · 3 评论 -
为什么MVS和立体匹配里面的视差喜欢谈亚像素精度
视差是离散的整数,换算出的深度也是离散的,同样是间隔一个视差,离这个相机越远,这个深度间隔就越来越大了。深度越大的时候,同样一个像素对应的深度范围越来越大。如果我的算法精度是一个像素,我稍微偏了一个像素,离相机越远,深度就会偏得越远,同样一个算法,离相机越远,空间精度就会越差。看了下面这个图,就能比较好理解为什么亚像素视差这么重要了,没有亚像素视差 深度图真的理应是台阶状的!视差细化也是立体匹配的基本步骤之一 ,确实如下面所说,得到的视差一般是整数,就是像素坐标差嘛,这么看亚像素可能是有必要的。原创 2024-03-27 08:25:03 · 731 阅读 · 0 评论 -
用opencv的stereoSGBM的compute函数得到的视差图的注意事项
如何用这个16位的定点型计算得到单位是毫米的深度值呢,我的做法是从里面取出其中12位代表整型的值,可以把这16位数当成一个整型,然后除以2的4次方,余下的就是那12位的代表真正整数位的数了,然后通过视差和深度的转换公式就可以得到单位是毫米的深度值了。输出的视差图是个单通道16位的图像,其中里面还有4位是代表小数,也就是12位是整数4位是小数,opencv叫这是fixed-point类型中文叫定点型类型,浮点型的英文是floating-point,这个数的单位应该是像素。原创 2024-03-26 19:01:59 · 963 阅读 · 0 评论 -
一个可以查看图像任意位置像素值的网站
一个可以查看图像任意位置像素值的网站。原创 2024-03-24 12:02:29 · 3323 阅读 · 0 评论 -
自己部署运行voxblox建图操作记录,voxblox可以基于位姿与点云进行TSDF ESDF mesh建图
我打印了下data.bag里面的/kinect/vrpn_client/estimated_transform话题,发现里面坐标系的名称也没有什么特别的,感觉代码可能都没有读取,就读取的话题里面的位姿的值。还有我现在发现之前需要自己单独装的image_undistort功能包只在跑euroc数据集的时和用到了,似乎是用来基于双目灰度生成稠密深度图或者点云的,看来这个苏黎世联邦把我想做的都给做了!所以上面说用t265也好理解了!看voxblox发出的话题里面,有mesh ,有esdf,有tsdf,确实很强!原创 2024-03-23 09:47:45 · 2005 阅读 · 2 评论 -
关于港科大的fiesta
之前似乎就看到有人用vins +fiesta,搜voxblox时。港科大的这个似乎就可以用深度图。原创 2024-03-15 20:18:36 · 739 阅读 · 0 评论 -
把ego-planner的plan_env单独取出订阅位姿和深度图构建自己可用的导航地图
而这个定时器的定义似乎就在GridMap::initMap(ros::NodeHandle &nh)里面,所以我似乎不必多写一句publishMap(),是的,我把我加的publishMap()注释了,运行launch文件,也有/grid_map/occupancy_inflate和/grid_map/occupancy话题。我看留下节点图,话题依旧没有订阅上,是不是我launch文件改的参数值没有生效,我看了下ros的参数,似乎没有odom和深度图话题。rviz查看也有了!颜色也可以选择彩色显示。原创 2024-03-15 13:33:04 · 2552 阅读 · 11 评论 -
对于已知位姿的深度图和点云的简单融合方式
第一种,粗暴方法,直接所有点云按照位姿变换后叠加,这样会导致点云点数过多,比如10cm*10cm*10cm的空间内就一个点进行代表就可以了,但是这么粗暴叠加可能有5个点在这个空间里,这个时候可以通过点云下采样的方式解决,PCL有专门的函数,八叉树也是一种点云下采样。就所有点云叠在一起后一次性做一次下采样。增量式建图,每新来一帧深度图或点云就计算好要更新地图中哪些点,基于ray_cast的规则来更新。对于已知位姿的深度图和点云的简单融合的方式,我目前总结有两种,原创 2024-03-14 18:05:17 · 1018 阅读 · 0 评论 -
比较快速便捷构建可导航栅格地图的方式:位姿+深度图或激光雷达点云+octomap_server功能包构建八叉树地图
比较快速便捷构建可导航地图的方式:位姿+深度图或激光雷达点云+octomap_server功能包构建八叉树地图。基于T265和D435i octomap。T265+2D激光点云+octomap。原创 2024-03-13 11:24:57 · 887 阅读 · 0 评论 -
视差转深度公式中变量单位的确定
而且深度图是16UC1(我看到的视差图转深度图函数用的深度图对应的变量类型就是16UC1,以及D435i的深度图也是16UC1),也就是最大表示2的16次方65536的距离,对应单位正好是毫米,也就是65米左右的距离,对深度图而言这个范围正好够了,650米和6.5米都不合适,所以深度图的像素值代表的深度单位就是毫米。实际写视差图转深度图的代码时,必然要严格确认每个变量的单位。对深度公式进行了推导,推导不难,利用相似三角形原理。视差图转深度图参考代码,摘自下面博客。深度公式2是深度公式1的特殊形式。原创 2024-03-03 17:03:37 · 1266 阅读 · 0 评论 -
关于通过深度图得到对应像素点的深度后,如何算出对应地图点的相机系下的坐标
关于通过深度图得到对应像素点的深度后,如何算出对应地图点的相机系下的坐标。如果弄基于单目深度图进行初始化会用到。原创 2024-03-04 07:39:05 · 678 阅读 · 0 评论 -
16位深度图的像素值进行读取访问时的注意事项
里面的视差转深度图的函数带偏了!得用```mat.at(i, j)```的形式去读取16位深度图的像素值,这样不管是取值还是赋值,都是8位的,不是16位,所以导致了一系列的问题,你深度值算得正确,赋值也没有赋上去。十六位的深度图,取像素值的时候,不能用```id = i*width + j;原创 2024-03-12 06:46:39 · 602 阅读 · 0 评论 -
rqt_image_view显示与保存深度图的坑点
深度图一般都是16位的,到那时深度图的存储显示就是一般是8位,rqt_image_view的深度图显示是做了手脚的,所以才看着层次感明显,它既不是按照原始的深度值显示,也不是按照比例缩放后显示,应该是按照实际的最大深度值在相应缩放显示,这样使得不管看哪里,深度图的黑白层次都比较明星。原创 2024-03-11 20:09:27 · 1017 阅读 · 0 评论 -
自己实现一下基于T265+D435i的octomap建图20220515
,同时复制octomap_mapping.launch并重名为octomap_mapping_maxi1.launch,octomap_mapping_maxi1.launch内需要修改的地方下面红线有标出,非常关键的一点是,如果要建增量式地图,那么需要frame_id是构建的全局地图的坐标系,这是非常关键的一点。因为现在启动rs_d400_t265.launch了,里面有tf发布了,所以octomap_mapping_maxi1.launch里的tf删掉,不然会冲突导致节点挂掉。原创 2024-03-11 11:53:26 · 2201 阅读 · 5 评论 -
普通深度图像素值是以毫米为单位的一些证据(除开TUM数据集的深度图)
除开TUM数据集的深度图,是0.2毫米为单位,这么做也有道理,因为深度图最大值一般也到不了65米,以毫米为单位也浪费了点,以0.2毫米为单位最大表示距离十几米,正好。depthMap ----深度图,16位无符号单通道,CV_16UC1。//基线距离65mm。别人写的把视差图转为深度图的函数,里面深度图就是用16UC1定义的。dispMap ----视差图,8位单通道,CV_8UC1。kinect的深度图的深度值也是以毫米mm为单位的。K ----内参矩阵,float类型。原创 2024-03-10 21:45:07 · 1101 阅读 · 0 评论 -
16位深度图显示和存储时要转为8位的灰度图的原因
16位深度图显示和存储时要转为8位的灰度图,因为256种灰度已经很多了,很难说弄出65536层次的灰度出来进行显示对不对,感觉也没有那么大的必要。原创 2024-03-10 17:13:34 · 562 阅读 · 0 评论 -
自己安装使用colmap
colmap官方文档:https://colmap.github.io/colmap官方文档installation部分翻译【COLMAP官方文档翻译】Tutorialutm_id=0可以看出,colmap也是走的先估计深度图,再对深度图做融合的路线,所以最后一步是点击fusion,对深度图做融合。从这看,colmap好像也有二进制版的,直接下载使用,不用编译,而且是在windows上。下面操作主要参考这篇博客。可以选择下载预编译的二进制文件或手动构建源代码。原创 2024-02-19 14:11:53 · 3427 阅读 · 0 评论