- 博客(102)
- 资源 (1)
- 收藏
- 关注

原创 视觉三维重建colmap框架的现状与未来
众所周知,三维重建的发展已经进入了稳定期,尤其是离线方案的发展几乎处于停滞期,在各大论刊上也很少见到传统sfm+mvs亮眼的文章。这也不难理解,传统的多视图几何内容已经被展现的体无完肤,即使能做出一些impressive创新,也需要非常坚厚的数学基础。这里就公布一些主流的离线视觉三维重建商业和开源的框架问世时间:商用:(1)Photoscan(现在称为Agisoft Metashape)的首个版本于2010年发布。
2024-03-01 13:14:33
1393

原创 教你一点点掌握视觉三维重建-colmap 重要代码逐行解析(大纲-预热阶段)
教你一点点掌握视觉三维重建-colmap 重要代码逐行解析这里以colmap 框架为准,主要对其重要环节代码结合自己的想法进行逐一讲解,colmap 作为目前state-of-the-art 的视觉重建pipeline,本人将其代码分为两个大环节:前端和后端.前端主要是特征提取和匹配,后端包括三角化,Register,BA等环节. 完成时间deadline:12月底;这里以博客为证,如果您感觉到这份博客帮助到您,希望给予鼓励,我也会利用周末及其下班时间尽快完成整个文章的撰写-欢迎关注B站:橙子的R
2021-04-08 19:15:23
7136
6
原创 视觉定位VPS的现状与未来
VPS全称为Visual Positioning Service/System,即视觉定位服务/系统。手机端(移动时代)的VPS首次出现时间节点为2019年,这一年Google 发布了其产品“Google Maps AR(测试版)”,该产品使用 VPS技术通过相机图像在户外可以实现任意视角的定位与定向。
2025-02-14 14:31:14
938
原创 VPS 和GPS 、SLAM 之间的爱恨情仇
空间即入口,入口即计算。谈到AR,我们往往会想起slam技术,而会忽略里面最重要的VPS技术,我坚信在未来VPS将会成为通用的定位系统,借用最近WWDC 2023 Apple Vision Pro 发布会上的一句话“The era of spatial computing is here”。
2023-06-09 09:04:22
871
原创 关于视觉重定位(VPS)的工作经验分享
AR中最核心的技术是视觉定位技术,也就是目前又一个火热的学术名词“空间计算”,而目前主流的VPS技术可以分为两个层面:地图构建层 和定位服务层。
2022-08-29 00:37:34
2034
2
原创 一种解耦非线性优化的高效VI-SLAM系统-Snake-SLAM
Snake-SLAM 是一种可在低功率航空设备上稳定运行的VI SLAM 自主导航系统。跟踪前端具有地图复用、闭环、重定位功能,并支持单目、立体和 RGBD 输入。
2022-04-24 17:58:24
1546
2
原创 视觉三维重建:计算机视觉的核心任务
一、前言视觉三位重建一直是计算机视觉和摄影测量领域讨论的话题,且在近几年更是大家关注的热点、如数字孪生、AR、自动驾驶的高精度地图等。视觉三维重建相比激光三维重建,虽然精度上处于劣势,但是视觉具备更丰富的信息且成本低廉,故是数字化场景的首选方案,到目前为止,视觉三维重建框架层出不穷,其开源代表有colmap(2016)、openmvg(2012)、openmvs、alicevison、opensfm 等,商业代表有ContextCapture、photoscan、pix4D、realicature 等。商
2021-08-04 19:02:18
1294
原创 ceres 求slam 或者 SfM的协方差及ceres 四元数求导
ceres 如何进行后验估计ceres 求landmark的协方差矩阵以下代码是自己在colmap 中实现的/// 计算每个3D points的协方差 for (const image_t image_id :config_.Images()) { Image& image = reconstruction->Image(image_id); for (const Point2D& point2D : image.Points2D()) { if (!po
2021-05-17 13:07:40
1559
3
原创 ceres UnitQuaternionRotatePoint 利用单位四元数旋转向量的函数算法原理推导
背景算法效率的提升需要扣细节,每个函数,每个过程都需知道其流程算法原理推导改进原算法template <typename T> inlinevoid UnitQuaternionRotatePoint(const T q[4], const T pt[3], T result[3]) { const T t2 = q[0] * q[1]; const T t3 = q[0] * q[2]; const T t4 = q[0] * q[3]; const T
2021-05-15 17:02:26
957
原创 彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
课程特点:1、没有太多的乏味的公式推导,有也是讲物理意义(因为大家大多数都是非数学专业)2、教你学会吸"新"大法,即是学会把其他优秀的开源框架算法在colmap中实现3、思路得以实际应用i 、对于学生党,能快速实现一个新的idea,完成paper的撰写ii、对于算法从业人员,对于一篇paper看完,不止是停留在一句"卧槽"就没下文的尴尬场景,能快速做出东西representation 给老板课程详细link 如下一定要点击!!!!!!!!!!!!!!!!!!!课程详细介绍和购买链接...
2021-05-09 18:07:31
854
原创 colmap融合 gps
图像数量 556帧图1 是纯colmap 跑的结果,可以看到明显的drift图2 是基于colmap fusion gps的结果修改后的colmap,精度明显提升,可用于AR,过隧道,高精度建图等环节,打算写一篇paper后开源算法!!!
2021-03-31 17:16:14
2086
6
原创 openmvg、colmap windows10编译经验文档
openmvg、colmap windows 10编译经验文档因为公司业务发展需要,需要从linux转windows,这就意味着大概4年没有用过windows人需要把linux上的代码移植到windows,下面是在windows上编译colmap 和openmvg的一些workflow.colmap 跨平台移植(vcpkg 和cmake 结合的方式)1、需要手动安装的库安装cmake ,https://cmake.org/download/ 下载安装即可添加环境变量(cmake 安装位置),
2021-02-03 17:18:04
1879
1
原创 bundle adjustment 详解
bundle adjustment 的历史发展bundle adjustment,中文名称是光束法平差,经典的BA目的是优化相机的pose和landmark,其在SfM和SLAM 领域中扮演者重要角色.目前大多数书籍或者参老文献将其翻译成"捆绑调整"是不太严谨的做法.bundle adjustment 最早是19世纪由搞大地测量学(测绘学科)的人提出来的,19世纪中期的时候,geodetics的学者就开始研究large scale triangulations(大型三角剖分)。20世纪中期,随着came.
2020-12-07 11:01:22
7810
原创 摄影测量(计算机视觉)中的三角化方法
摄影测量(计算机视觉)中的三角化方法 提到三角化大家都十分熟悉,在CV 领域中,由像点计算物点的过程称为三角化,但在摄影测量领域,其称作为前方交会。值得注意的是单张影像是无法恢复像点的三维坐标,至少需要两张影像才能得到像素点的真实坐标(这里已知两张影像的pose信息) 三角化有很多方法,这里介绍两帧三角化、多帧三角化、迭代三角化、选权迭代多帧三角化(并附上本人代码)。1、两帧三角化在opencv 中函数triangulatePoints就可根据两帧的pose 和内参恢复三
2020-12-05 13:45:28
2674
原创 三维重建的定位定姿算法
前言3D视觉的核心问题是恢复场景结构、相机位姿、和相机参数,而解决方式有两种,一种是off-line的sfm(structure from motion),一种on-line的slam(simultaneous localization and mapping)。Slam 与sfm的区别在于,大多数slam系统是需要提前标定相机,而sfm 则不需要提前标定(通常所说的三维重建和slam的区别,严格意义上应该是sfm 和slam的区别)。Sfm 可以分为以下几类:Global SfM、Increment
2020-10-19 19:34:04
2362
1
原创 如何完成一个算法方案的流水线
最近发生了一些事情,觉得做任何事情必须有一个计划或者做完事情有一个总结。入职一年载,感觉学到的东西并不多,只是在自己的一亩三分田耕耘,进步甚小,无比惭愧。列下一些要求,约束自己:1、做项目之前,把整个逻辑的流水线写通(如画简单的流程图),然后再去写代码2、做完一个项目,要总结自己,自己的不足,项目哪些地方需要迭代优化3、学习力的持续,前沿论文和书籍的阅读,其他相关代码的阅读4、保重身体...
2020-07-19 14:27:15
686
原创 vslam 和三维重建可以修改的地方
关于vslam : 目前很多策略都是在想如何提高鲁棒性,其实主要的还是保证匹配的正确性即可,比如用superpoint 、d2net 之类替换前端部分,其实vslam后端部分已经没有什么可以改的了,像BA-net 这种深度学习框架只能发论文,实用性较差。vslam 目前的问题:1、long term 就是夏天建的图冬天要能用,2、动态物体对定位的影响,3、弱纹理匹配问题。关于三维重建: 其实可以分为定位 AND 建图,定位的话全局sfm ,如果有其他传感器的的测量值,如rtk,其实这里的定位我指的是定位姿
2020-07-05 13:43:13
566
原创 时隔一年多,我胡汉三又归来了,将持续更新的博客
博客主题内容是摄影测量和三维重建,三维重建的框架讲解主要以colmap为主另外一个主题内容是记录自己一周的进展,不管是技术还是尤克里里的学习都会持续记录目前已经在B站更新了几个三维重建视频的讲解,链接如下:1、mve colmap openmvg+openmvs三维重建效果对比2、2020年最佳摄影测量三维重建开源和商用的软件3、双目系统精度评定4、相机模型介绍及其相机自标定理论和代码讲解后面会持续更新视频,如果感觉对您有帮助,请关注,您的关注就是我前进的最大动力。***B站ID:***橙
2020-06-06 14:39:21
472
原创 学习资料
cvsba: an OpenCV wrapper for sba library http://www.uco.es/investiga/grupos/ava/node/39/ sba在opencv上的跨平台********编译成功http://www.maths.lth.se/vision/downloads/ https://pypi.org/project/sba/ 在python...
2019-03-15 09:44:27
403
1
原创 纯旋转情况下相机标定,f焦距确定
```python#include “opencv2/core/core.hpp”#include “highgui.h”#include “opencv2/imgproc/imgproc.hpp”#include “opencv2/features2d/features2d.hpp”#include “opencv2/xfeatures2d.hpp”#include “opencv2...
2019-03-09 17:36:44
1545
3
原创 相机标定+极线矫正+elas生成视差图
一、相机标定标定的资料很多,就是确定其相机的内参矩阵fx,fy,x0,y0,k1,k2,k3,p1,p2;目前来看可分为online 和offline两种方式,前者在cv领域较多,后者在摄影测量中较多。摄影测量中标定分为平面场标定和三维场标定。平面场的标定多采用张正友的方法,而三维场标定即是2D-3D的变换。二、极线矫正极线矫正的目的是使得立体相对具有相同的y坐标,可分为两种:1、标定相...
2019-03-08 15:17:07
3690
1
原创 Photogrammetric computer vision (摄影测量中的计算机视觉翻译招募)---photogrammetry才是slam的王者
研二就开始这本800多页的全英文的Photogrammetric computer vision 著作研读,断断续续,一直进展不快,英文读著优点是详细,但是对于广大的中文爱好者,要想能快速掌握还得看看中文。这本书籍出版日期2016年,高翔博士的《视觉slam十四讲》出版日期2017年,这本书个人觉得和mvg、机器人中状态估计的地位一样高,但是一直没有中文版,自己准备开始翻译,但是个人能力有限,想...
2019-03-04 10:19:36
1784
1
原创 从相机矩阵恢复基本矩阵
相机已经标定,假设左边相机是世界坐标坐标系的源代码如下:function ret = computeF(K1, K2, R, t) A = K1 * R' * t C = [0 -A(3) A(2); A(3) 0 -A(1); -A(2) A(1) 0] ret = (inverse(K2))' * R * K1' * Cend...
2019-03-02 16:48:19
522
原创 cvsba 编译与bundle adjustment 测试
sba 是M. Lourakistih提出的稀疏光束法平差,其配置比较麻烦,而cvsba是在opencv上的跨平台,与opencv有很好的接口。一、下载源码https://sourceforge.net/projects/cvsba/files/二、编译sudo apt-get install liblapack-dev libf2c2-dev tar -zxvf cvsba-1.0.0...
2019-02-28 10:05:34
768
1
原创 CGAL计算几何算法库安装和使用(一)
CGAL是使用C++开发的计算几何算法库,提供Delaunay三角网,网格生成,多边形,以及各种几何处理算法。应用领域:计算机图形学,科学可视化,计算机辅助设计与建模,地理信息系统,分子生物学,医学影像学,机器人学和运动规划,和数值方法。1、安装$ sudo apt-get install libcgal-dev # CGAL库$ sudo apt-get install libcgal-...
2019-02-22 20:05:46
5072
原创 子序列问题(最长连续子序列和最长递增子序列--Dynamic programming(三))
最长连续子序列个数1)创建一个空的哈希表2)插入元素到哈希表3)遍历每个元素检查元素是否子序列的起点。为了检查,我们可以简单在哈希表寻找arr[i]-1,如果找到,则arr[i]则是子序列的起点,否则步进。计数连续的元素并更新countInput: arr[] = {1, 9, 3, 10, 4, 20, 2};Output: 41, 3, 4, 2 是最长的连续子序列(连续的次序...
2019-02-09 23:34:46
299
原创 最大子序列问题---Kadane’s Algorithm(Dynamic programming(二))
Kadane’s Algorithm:初始化: max_so_far = 0 max_ending_here = 0遍历arr中每一个元素 (a) max_ending_here = max_ending_here + a[i] (b) if(max_ending_here &lt; 0) max_ending_here = 0 (c) i...
2019-02-07 23:00:39
311
原创 最小平方个数(Dynamic programming(一))
最小平方和等于给定n的平方数思路很简单,我们从1开始,一直到一个平方小于或等于n的数,对于每一个x, n-x都会循环。递归写法公式min(res,1+getMinSquare(n-temp)),temp=x*x;int getMinsquare(int n){ if(n<=3) { return n; } int res=n; ...
2019-02-03 22:42:02
921
原创 子序列Subset Sum Problem(二)
给定一个数组和子数组长度,打印该数组中所有等于长度的组合子序列如图:输入值:{1,2,3,4,5}输出值:见根节点#include <iostream>#include<vector>#include<algorithm>using namespace std;void combinationUtil(int arr[],int data[],i...
2019-01-10 19:45:58
437
原创 子序列问题和组合数问题
input arr={10, 7, 5, 18, 12, 20, 15}sum =35output:输出所有等于sum的子序列{10, 7, 18}{10, 5, 20}{5, 18, 12}{20, 15} algorithm subsetSum(arr,subarr,n,subSize,total,node,sum) n是arr的大小,subSize是subar...
2019-01-09 14:59:38
288
原创 根据经纬度计算距离(simple knowledge)
according latitude and longtitude compute distance1、最大圆距离const double earth_radius=6371;const double pi=3.1415926;double degtorad(double deg){ return ( deg *pi/ 180);}double GreatCircleDist...
2018-12-20 12:03:44
1865
原创 Dynamic Programming(will be upgrading always)
1、回朔解决迷宫问题r,c=4,4def isSafe(maze,x,y): if x&amp;gt;=0 and x&amp;lt;c and y&amp;gt;=0 and y&amp;lt;r and maze[y][x]==1: return True return False def solvemaze(maze,x,y,sol): if x==c-1 and y==r-1.
2018-12-20 11:08:48
247
原创 最短路径代价MCP算法(做了小改动,不仅能输出最小权值,而且能输出路径)
要学习别人的算法和思考如何修改算法–牢记!一、关于MCP算法如上图,给定一个矩阵,和一个位置(m,n)怎么找到其到(0,0)的最短路径代价,可以看出 (0, 0) –> (0, 1) –> (1, 2) –> (2, 2)。这个时候路径的最短代价 8 (1 + 2 + 2 + 3)。那么编程如何实现?借用下面公式:minCost(m, n) = min (minCost(m...
2018-12-16 16:49:35
1876
原创 头文件和源文件分别在两个文件夹里,编译成库文件
对于小项目,头文件和源文件在一个文件夹里,整个文件布局如下:test #主目录---main.cpp---CMakeLists.txt---src #子目录------functions.cpp------functions.h------CMakeLists.txt这样运行的过程就是用main 函数调用编译好的库文件即可此时,子目录的CMakeLists.txt写法如下:#...
2018-12-14 21:20:57
3509
3
原创 脸部68个特征生成三角网和泰森多边形
动态效果图效果图1、2、视频转为gif命令:ffmpeg -i ****.avi ***.gif代码如下:#!/usr/bin/pythonimport cv2import numpy as npimport randomimport sysimport dlib# 检查点是否在rect内def rect_contains(rect, point) : if...
2018-12-10 14:41:56
1174
土方量计算
2015-05-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人