- 博客(79)
- 收藏
- 关注
原创 【三维重建】增量SFM系统
在学习完鲁鹏老师的三维重建基础后,打算用C++代码复现一下增量SFM系统(https://github.com/ldx-star/SFM)。本项目的最终目标就是通过相机拍摄的多视角视图获取三维点云。由于资金有效,博主使用的是相机是小米12。先来看一下最终效果:当然了,和开源系统比起来还是差很多的。
2024-06-11 09:59:10
930
原创 【三维重建】ePnP
PnP问题应用与一下场景:已知三维点和对应二维点以及相机相机内参数,可以获取相机外参。我们介绍其中的一种算法:ePnP算法流程1、ePnP算法首先在世界坐标系内寻找4个控制点,记作C1w,C2w,C3w,C4wC_1^w,C_2^w,C_3^w,C_4^wC1w,C2w,C3w,C4w,使得:对于世界坐标系内任意一点P1w,P_1^w,P1w,存在对应的αi=[αi1,αi2,αi3,αi4]T\alpha_i=[\alpha_{i1},\alpha_{i2},\alpha_{i3},\
2024-05-27 11:15:55
555
原创 【三维重建】摄像机几何
齐次坐标转到欧式坐标的结果并不是一一对应的,比如(1,1,1)和(2,2,2)转到欧式坐标都是(1,1),它们之间相差一个系数。为了方便我们对针孔相机模型进行数学建模,我们往往对虚拟像平面进行研究,因为虚拟像平面的方向与我们实际物体的方向一致。在进行三维重建的时候往往需要用到多个相机,因此需要外参矩阵将所有点的坐标系进行统一。想知道如何从二维图像中如何恢复三维点,需要先知道三维点是如何映射成二维点的。由于制造工艺的原因,像平面可能不是一个矩形,所以需要引入。原理很简单,就是我们小学学的。
2024-05-06 18:46:32
692
原创 【三维重建】捆绑调整
捆绑调整的目的是通过重构的点计算重投影误差,利用最优化方法是重投影误差最小。这是一个典型的非线性最小二乘问题,利用高斯-牛顿法进行优化(高斯-牛顿法原理参考https://blog.youkuaiyun.com/holle_world_ldx/article/details/138225785)求雅可比矩阵一、相机投影过程1、世界坐标系到相机坐标系的变换[xcyczc]=RX+t=[r0r1r2r3r4r5r6r7r8][XYZ]+[t0t1t2]\begin{bmatrix} x_c\\ y_c\\
2024-05-04 15:06:48
674
原创 【最优化】牛顿法、高斯-牛顿法
在一维搜索中我们所要解决的问题是如何找函数f(x)的最小值。gxfxkf′xkx−xk21f′′xkx−xk2gx≈fx求fx最小值≈求gx最小值g′xf′xkf′′xkx−xk令g′x0xxk−f′′xkf′xk只有在f′′x0时成立,f′x0只能保证该点为极值点,f′′x0保证该点为极小值点。
2024-04-26 17:50:04
1930
原创 【最优化】共轭梯度法
n×nd0d1d2...dmijdiTAdj0共轭n×nd0d1d2...dm证明:如果d0d1d2...dm线性相关则有α1d0α2d1α3d2...αmdm0两边同乘djTA得αjdjTdj0由于dj0所以αj0因此d0d1d2...dm线性无关n×n。
2024-04-24 09:41:06
427
原创 【三维重建】相移法+格雷码
本篇文章介绍一种稠密点云的获取方式——条纹结构光三维重建算法。在学习此算法前,我们需要对基于视觉的三维重建算法有一定了解。需要了解什么是相机模型、相机标定以及三角化的相关知识。当我们得到两个相机的内参、外参后,就能通过两个视图的匹配点计算出该点的三维坐标。但是一般的特征匹配算法(SIFT、SURF)只能提取特征点,并且只有正确匹配才能得到正确的三维坐标。因为两个视图上能够成功匹配的点比较少, 因此通过这种方式获得的点云是稀疏的。。
2024-03-05 16:42:53
2634
原创 【最优化】梯度下降法、最速下降法
梯度是一个向量,梯度上的每个元素表示该函数在每个分量上的变化率。方向导数是多元函数在给定点沿着某一特定方向的变化率。方向导数等于梯度与方向向量的点乘。
2024-02-21 08:58:35
423
原创 【三维重建】双目立体视觉
所有的极线都经过极点(e/e'),如果极点位于无穷远处,那所有的极线都平行。通过极几何可以求得极线,现在我们需要将左边的图变成右边的平行视图。平行视图中,可以利用视差就得深度,视差越小深度越深。如何得到平行视图呢?
2024-01-24 17:40:04
514
原创 【计算机视觉】角点检测(Harris、SIFT)
角点指的是窗口延任意方向移动,都有很大变化量的点。用数学公式表示为:E(u,v)反映的移动后窗口的差异,w(x,y)为每个像素的点权值,I(x+u,y+v)是移动的像素值,I(x,y)是移动前的像素值。将E(u,v)进行泰勒展开,直接建立E(u,v)和u,v的联系最终:M称为二阶矩矩阵(second moment matrix)若互补影响:假设只有在u方向上变化是E才会变,因此只有都不为0时(x,y)才是角点。
2023-12-28 19:13:44
2798
原创 【C++】explicit关键字
explicit关键字通常用于声明构造,是为了防止编译器进行隐式类型转换。当加上explicit关键字后,只能显示的调用构造函数。
2023-12-25 22:47:13
97
原创 【C++】const 关键字
指针a指向的地址不可以改变,但是地址中存的值也不可以改变。修饰* 指针a指向的地址不可以改变,但是地址中存的值可以改变。修饰int 指针a指向的地址可以改变,但是地址中存的值不能改变。cosnt关键字优先修饰左边,如果左边每东西,就作用于右边。修饰int a 不能改变。
2023-12-25 22:39:01
217
原创 【三维重建】对极几何
可以发现P在左右相机的投影点一定在各自的极线上,如果求出极线就能缩小求解对应点的范围。基础矩阵对一般的透视摄像机的两个视点的图像间的极几何关系进行代数描述。本质矩阵对规范化摄像机拍摄的两个视点图像间的极几何关系进行代数描述。如果采集到的对应点在同一平面,两个视点间的对应关系用单应性矩阵表示。极几何描述了同一场景或者物体的两个视点图像间的几何关系。E就是本质矩阵,描述了规范化摄像机下两个视点的关系。F就是基础矩阵,反映了一般相机下,两视点间的关系。规范化相机指的是相机的内参矩阵为一个单位矩阵。
2023-12-11 16:41:50
744
原创 【三维重建】多频外差相位展开(C++实现)
在结构光三维重建中,通过相移法求解出来的相位是包裹相位(在 [-π/2,π/2] 间成周期性 )我们想要用相位找到相机与投影仪间的对应像素,就需要进行相位展开,确保每一行的相位值是唯一的。多频外差的原理是将两种不同频率的相位函数叠加得到一个频率更低的相位函数,设。多频外差是相位展开的一种,接下来我们会介绍它的原理,以及代码。最后就可以求出绝对相位。
2023-12-07 14:03:17
552
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人