- 博客(88)
- 收藏
- 关注
原创 笔记:关于相机的姿态角
这意味着,它们描述了如何通过旋转,将一个在全球或局部参考框架中定义的点转换到相机的局部坐标系中。相机的姿态角((Yaw、Pitch、Roll)、(phi、omega、kappa)…其实这很好理解,但是我一直以来都理解反了,基础不够扎实,记录一下加强记忆和理解。那么由姿态角计算的旋转矩阵R同样是。
2024-03-02 16:50:53
574
原创 从metashape导出深度图,从深度图恢复密集点云
首先从metashape导出blockExchange格式的xml文件,里面记录了相机的内外参等信息。另外由于我的影像已经事先去除了畸变,其畸变系数为0,因此此代码没有提供去除影像畸变的部分,需自行添加。
2024-03-02 14:34:36
639
原创 解决“error C4996: ‘ceres::LocalParameterization‘: LocalParameterizations will be removed from the Cere
解决方法:
2024-01-24 17:14:16
808
原创 摄影测量核线影像生成
双目匹配建立在核线影像(极线影像)基础上,目的是利用核线相关的该概念将沿x、y方向搜索同名像点的二维相关问题转化为沿核线搜索同名像点。为了生成核线影像,需要影像的内外方位元素或者相对方位元素。这里可以分别用相对方位元素或外方位元素来生成核线影像。该博客也提供了一些代码,但是只有main函数,涉及的一些函数没有详细提供,在此基础上,本文实现利用影像的外方位元素来生成核线影像。只贴出了核线生产关键的函数,无法直接运行,需根据实际情况修改和调用。
2024-01-22 20:16:11
768
原创 利用影像GPS/POS信息对影像剔除影像匹配粗差
匹配是由colmap中的sift算法完成,但实际上,如果具有影像的位置和姿态信息,可以对影像匹配结果进行约束,具体可以设置地面高度,将左影像上一点(x1,y1)投影至地面,再投影至右影像(x2_,y2_),投影点与右影像上的匹配点(x2,y2)的距离超出某一阈值,则认为该点为误匹配。对上次的代码进行修改,同样是从database读取匹配,并且写入point3d.txt和images.txt,主要。calculate_projection_and_compare()函数中的最后两个参数。
2024-01-11 22:11:37
320
原创 使用global mapper将分块DSM/DOM合并导出
使用context capture生产dom/dsm时通常因为内存问题而选择分块生产,那么得到的dsm/dom则是一块一块的,如下:那么为了合并成一张影像,可以使用强大的地图软件 Global Mapper,它可以处理包括 TIFF 文件在内的多种地理空间数据格式。
2024-01-11 11:52:13
1145
原创 metashape固定相机内参
metashape固定相机内参1.点击菜单栏 Tools->camera calibration2.按照如上,填写焦距、主点、畸变等信息,其中主点cx,cy是以像平面坐标系为原点的,也即以(1/2width,1/2height)为原点,xRight,yDown的像素坐标系3.设置完,在fixed parameters中选择想要固定不变的相机参数,勾选即可,确定后后续如果优化影像位姿时,不会改变相机内参。
2024-01-09 13:27:04
554
原创 ceres中lossfunction的选择
在 Ceres Solver 中,核函数(或损失函数)用于处理优化问题中的异常值。核函数通过修改残差的贡献,降低异常值对总体优化结果的影响。
2024-01-08 16:20:57
1267
原创 Metashape 设置影像坐标参考基准
使用metashape导入影像后,会自动解析影像exif中的经纬高等信息,可以在metashape设置投影坐标系。第一步,可以发现这里有两个完成坐标系转换的按钮,首先点右边那个,选择投影基准,wgs84 或者cgcs2000。如果第一步里面是wgs84,那么在第二步就没有办法投影到cgcs2000的坐标系中了,因此这两个要统一起来!第二步,完了之后再点左边那个,选择想要的投影分带。
2024-01-07 17:50:39
892
原创 读取colmap中database.db里的匹配结果,并且写入images.txt和point3D.txt
colmap导出的model里有images.txt和point3d.txt,但是最近在搞低重叠度的影像的空三,colmap不能完整恢复所有影像的外参,重建的稀疏点云也只有一部分,要做完整测区的空三,就不能用它导出的images.txt和point3d.txt来做全局的BA。但是我又想用我原来读images.txt和point3d.txt的代码来读匹配,继续后面的实验(懒是原罪。所以我从database.db里读原始的匹配,再写入到images.txt和point3d.txt。
2023-12-26 22:33:36
1043
原创 用liblas/laslib将点云写入las文件
在debug模式下可以顺利保存点云,但是release下报内存问题,没找到原因!首先配置liblas库,可以见上一篇博客。其中一定要SetScale啊,搞了很久!放弃准备用laslib试试。
2023-12-15 11:01:24
658
原创 vs2019 配置liblas
liblas是一个开源的C++库,用于读写LAS格式的点云数据。libLAS易于使用,广泛应用于各种点云处理任务。它支持基本的点云数据操作,如读取、写入和编辑LAS文件中的点。然后用cmake编译,依次configure,generate,依赖库我都用了vcpkg的库。解决方法是:右键报错的那一个项目,然后对照着上面博客的提到的问题一个个修改。完成后,用vs2019打开项目,生成项目,发现报错。首先在liblas文件夹下新建build文件夹。然后就可以编译通过了!
2023-12-14 21:30:41
813
原创 C++ 找到一个或多个重定义符号
多个源文件包含了同一个头文件时,如果头文件中有某个局部变量或者非内联函数的定义,那么相当于每个源文件都把该局部变量或者非内联函数定义了一次。而它们(局部变量或者非内联函数)在这种情况下默认又是全局的,那么会导致重定义错误。我们应当避免在头文件中定义局部变量或者非内联函数。而由于编译器会将类,内联函数以及const变量默认视为定义它们的源文件所私有,因此它们(类,内联函数以及const变量)可以定义在头文件中。
2023-12-13 20:07:11
473
原创 colmap笔记:将模型和影像位姿转换到GPS坐标系下
在 COLMAP 中使用 GPS 信息作为先验,可以帮助提高重建的精度和效率,特别是在处理大范围或大尺度的场景时。GPS 信息通常被用来约束相机的位置,使重建过程更加准确。GPS 数据通常以 EXIF 元数据的形式存储在 JPEG 图像中,包含 GPS 坐标(经度、纬度、高度)。如果图像含有 EXIF 数据,COLMAP 会自动识别并读取这些信息。但在稀疏重建阶段,COLMAP 主要关注于图像之间的相对位置和方向,以及场景中3D点的相对位置。
2023-12-12 19:38:10
2252
17
原创 编译colmap报错Linux build fail: ‘const class testing::TestInfo‘ has no member named ‘test_suite_name“
原因:gtest版本不匹配或安装错误。解决方法:源码编译安装gtest。再重新编译colmap即可。
2023-08-01 17:03:33
270
1
原创 解决报错:FUNC glfwErrorCallback GLX: Failed to create context: GLXBadFBConfig
执行命令查看系统中的OpenGL信息时,显示以下信息:根据得到的信息可以看到 OpenGL core profile version string 为 4.5 说明显卡驱动是支持 OpenGL 4.5 的,但是可能是因为兼容性原因无法同时使用核心模式和兼容模式故而 OpenGL version string 默认返回 3.1。
2023-07-14 14:01:00
2251
原创 “ImportError: cannot import name ‘DDPPlugin‘ from pytorch_lightning.plugins“
解决方法:将from pytorch_lightning.plugins import DDPPlugin 改为:
2023-07-11 10:02:26
2780
1
原创 解决RuntimeError: CUDA out of memory,reserved memory is >> allocated memory
这里要注意是你的reserved memory is >> allocated memory可以使用的,但也不是一定有用,最后最后如果还不行的话可以试试(参数128可以调整)
2023-06-20 14:04:45
1069
原创 nerfstudio+instant-ngp 渲染三维场景
crop-factor 0.0 0.0 0.0 0.0 (裁剪系数,默认为0,不裁剪)–sfm-tool colmap或者hloc。生成transforms.json文件。
2023-06-15 16:53:28
1663
原创 解决openMVS编译时报错:error: ‘HeapSimplexRatio’ is not a member of ‘CLEAN::TriEdgeCollapse’
报错原因:vcg版本过高解决方法,删除vcg,重新下载指定版本vcg包重新编译,可通过。
2023-06-12 10:39:43
241
原创 解决报错:error: [Errno 2] No such file or directory: ‘:/usr/local/cuda-11.7/bin/nvcc‘
在~根目录(cd )打开终端运行。在文件末尾添加相应的路径。
2023-06-06 09:51:17
4007
原创 cmake配置vcpkg.cmake
编写cmakeLists.txt时,需要设置CMAKE_TOOLCHAIN_FILE变量。执行CMake-GUI工具生成工程。编写好CMakelists.txt。
2023-05-29 11:28:35
824
原创 解决vs2019报错”找不到标识符“
还有一种原因是编码格式,在VS中将涉及的.cpp文件、.h文件从LF转为CRLF。用cmake编译出的工程在vs2019中打开生成,运行时报错“找不到标识符”该篇博客给出了一种可能的原因。
2023-05-28 17:02:29
1270
原创 解决由于找不到cudart64_110.dll 的问题
打开,在其中搜索cudart64_110.dll点击download下载压缩包,解压后,将dll放入c:/Windows/System32文件夹下,即可解决!
2023-05-05 21:51:46
912
1
原创 Pyinstaller将python文件打包成exe程序——封装LoFTR开源匹配代码
环境搭建:按照github项目中的readme文档进行搭建即可,几乎没有遇到问题,代码测试也没有问题。
2023-05-04 17:04:36
690
原创 visual stdio c++调用python混合编程
关于环境创建可以参考,并且没有debug库,所以我只用了release库在vs中设置项目属性,添加以及,注意都是在release模式下添加的。
2023-04-27 12:05:50
917
1
原创 c++使用cereal序列化库保存文件并恢复原始数据结构
FPT;} FPT3D;} FPT4D;//一个点 FPT3D XYZ;//地面控制点 //int ptId;int id_ref;
2023-04-23 11:41:09
620
原创 RGB影像傅里叶变化
关于傅里叶的讲解已经有很多博客了,看了好几篇也还是处于一种半懂不懂的状态。主要是想试一下用傅里叶函数交换两张影像的低频和高频信息。
2023-03-28 19:32:18
311
原创 VS2019报错:无法打开源文件“new.h”,“string.h“.....
错误来源于用老师提供的MFC框架拷贝到自己电脑上运行,就出现5000+个报错,都提示无法打开源文件“new.h”,“string.h”…解决方法:在配置属性->常规->Windows SDK 版本中 将其选择为自己的vs2019的版本。
2023-03-16 14:23:39
2276
原创 Windows+VS2019用vcpkg编译colmap以及用Cmake编译colmap源码
Window下官方建议用vcpkg安装colmap
2023-03-05 12:03:22
1931
2
原创 解决opencv imwrite()影像全黑
这个一般是由于原图被归一化了,像素值都处于0-1之间,所以保存下来就是全黑的。将影像*255还原之后保存。
2023-03-02 15:36:10
791
原创 阅读笔记——Feature-Point Matching for Aerial and Ground Images方法
在三维重建应用中,常用的是航空影像,但在城市环境中,面对大量的高层建筑物,航空影像往往不能很好的重建出完整的三维模型。因为航空影像视角约束以及遮挡等问题,即使是倾斜摄影,也很难重建较为精细的建筑物立面。因此其中一个解决方法是,将航空影像和地面拍摄的影像进行匹配,从而纳入到一个平差模型中,整体求解以及重建模型。匹配结果类似下图(左为ground image, 右为aerial image)
2023-02-21 11:35:41
347
原创 解决vcpkg安装的pcl没有pcl-visualization模块的问题
解决vcpkg安装的pcl没有pcl-visualization模块的问题
2022-12-04 17:17:25
2148
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人