自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(86)
  • 收藏
  • 关注

原创 3DGS中Densification梯度累计策略的改进——绝对梯度策略(Gaussian Opacity Fields)

在学习 StreetGS 代码中发现了其中的 Densification 策略与原 3DGS 不太一样,其是使用的 Gaussian Opacity Fields 中的一个的策略我们先来回忆一下 3DGS 中一个比较重要 contribution:自适应密度控制。

2024-09-30 11:10:54 1101

原创 4K4D: Real-Time 4D View Synthesis at 4K Resolution 学习笔记

它通过比较目标图像和生成图像在高层特征图上的差异来度量图像的相似性。在PyTorch中,我们可以使用预训练的神经网络(如VGG或ResNet)提取特征,然后计算特征图之间的差异。感知损失通过比较生成图像和真实图像在VGG16网络中提取的图像特征之间的差异来度量图像之间的感知差异。整个密度加权过程是可微分的,这意味着可以通过反向传播来更新点云的属性,以最小化渲染图像和真实图像之间的差异。将生成的掩模与真实的掩模进行比较,以限制动态区域的几何形状,确保其与真实场景中的可视外壳一致。是2D动态区域的真实掩模。

2024-09-07 11:12:32 1115

原创 OpenGL/GLUT实践:流体模拟——数值解法求解Navier-Stokes方程模拟二维流体(电子科技大学信软图形与动画Ⅱ实验)

1. **网格结构与数据存储**:采用 \((N + 2) \times (N + 2)\) 的网格结构存储流体的速度场和密度值。2. **流体模拟步骤**:实现了外力项计算、扩散项计算、平流项计算和投影步骤,确保速度场的不可压缩性。3. **边界条件处理**:在流体区域中添加了一个中间隔板,并设置了两个开孔,模拟了实际障碍物对流体运动的影响。4. **流体颜色设置**:通过用户交互和密度值设置流体的颜色,实现了更加直观的流体可视化效果。5. **障碍绘制**:实现了中间隔板和开孔的绘制,使流体在模

2024-09-07 10:27:14 1375

原创 OpenGL/GLUT实践:水面模拟——从单振源到 Gerstner Wave(电子科技大学信软图形与动画Ⅱ实验)

电子科技大学 信软 数字动漫 图形与动画Ⅱ 实验:1. 实现一个基础的水面模拟 – 单振源;2. 为 1)中水面模拟程序添加光照和键盘响应函数;3. 为 2)中水面模拟程序添加鼠标响应控制函数;4. 为 3)中水面模拟程序添加纹理映射;5. 为 4)中水面模拟程序添加多个振源;6. 修改 5)中水面模拟程序,将波浪模型改为指数控制的模型7. (选作)修改 5)中水面模拟程序,将波浪模型改为 Gerstner Wave 模型

2024-09-05 17:11:41 1083

原创 OpenGL/GLUT实践:弹簧-质量-阻尼系统模拟摆动的绳子和布料的物理行为(电子科技大学信软图形与动画Ⅱ实验)

电子科技大学 信软 数字动漫 图形与动画Ⅱ 实验:1. 在一维弹性物体基础上设计实现二维弹性物体模拟,并加入和环境的交互;

2024-09-03 17:14:54 847

原创 OpenGL/GLUT实践:粒子系统,并添加纹理、动态模糊、边界碰撞(电子科技大学信软图形与动画Ⅱ实验)

电子科技大学 信软 数字动漫 图形与动画Ⅱ 实验:1. 实现基本粒子系统;2. 为基本粒子系统添加运动模糊效果;3. 为基本粒子系统添加纹理贴图;4. 在基本粒子系统基础上扩展,如生成火焰、烟花、瀑布等效果,并与环境发生交互,加入碰撞检测。

2024-09-03 16:54:29 1240

原创 OpenGL/GLUT实践:绘制旋转的立方体与雪人世界——添加光照与SOIL方式添加纹理(电子科技大学信软图形与动画Ⅱ实验)

电子科技大学 信软 数字动漫 图形与动画Ⅱ实验:1. 利用透视投影视线 changeSize 函数;2. 实现移动镜头的应用 – 绘制一个雪人世界;3. 绘制一个三角形,顶点设置不同颜色,对比两种着色模式 - GL_SMOOTH 和 GL_FLAT;4. 绘制一个旋转的立方体,并向场景中添加光源:环境光、散射光;5. 采用两种不同方法为在上例中给立方体设置材质属性;6. 为雪人世界添加光照、设置材质属性;7. 为 5)中的立方体添加纹理

2024-09-02 19:39:39 1116

原创 OpenGL/GLUT实践:GLUT环境配置+实现反弹运动的三角形动画与键盘控制(电子科技大学信软图形与动画Ⅱ实验)

电子科技大学 信软 数字动漫 图形与动画Ⅱ实验1) 设置编程环境,使用GLUT;2) 编写第一个程序:绘制一个三角形;3) 实现可变窗口大小;4) 生成一个简单动画,三角形绕固定轴匀速旋转;要求:键盘控制三角形颜色和旋转速度;5) 实现一个反弹运动的正方形的动画;6) 仿照5),生成一个可以反弹运动的三角形动画,键盘控制三角形移动速度、颜色。

2024-09-02 17:25:50 1398

原创 NeRF学习——复现训练中的问题记录

1.1 DataLoader 的多进程 pickle在刚开始执行时就遇到了这个错误,开始以为是环境问题,结果鼓捣半天没用,仔细分析了一下错误原因,发现主要是这句话的原因for iteration, batch in enumerate(data_loader):1也就是序列化的问题,后面还给出了多进程的报错,就应该是多进程的pickle问题,网上一搜,还真是,可能是Windows系统的原因导致的,在 configs 中的配置文件中修改 num_workers = 0,不使用多进程,就解决了报错

2024-08-03 10:54:46 1313

原创 NeRF学习——基于Pytorch代码复现的笔记

NeRF学习——基于Pytorch代码复现的笔记代码复现的框架是基于:pengsida 的 [Learning NeRF]源代码框架是基于 Linux 的,我在 Windows 上进行复现有些许 bug,Windows 上 bug 修复的框架版本:Learning NeRF希望各位可以通过学习 [NeRF-Pytorch] 来自己复现试试看!

2024-08-03 10:21:25 813

原创 Windows家庭版 WSL2非C盘详细安装配置与WSL代理设置+WSL基础环境CUDA安装

此命令将启用运行 WSL 和安装 Linux 的 Ubuntu 发行版(在C盘)所需的功能。但是,C盘空间太紧张,我更愿意把其安装在其他盘(D盘)注意:需要在windows功能中开启“Hyper-V”和“适用于Linux的Windows子系统”功能。功能开启后,管理员运行 PowerShell ,直接运行下面命令即可(默认WSL2),然后重启。Linux 生成的所有文件都默认存储在之前自定义的路径下的这个镜像文件中。WSL2 显卡驱动直接用的 windows 的,只需要安装CUDA Toolkit就可。

2024-06-04 19:38:07 1282 5

原创 详细解析Barlow Twins:自监督学习中的创新方法

首先先简单了解一下机器学习中,主要有三种学习范式:监督学习、无监督学习和自监督学习:- **监督学习**:依赖带标签的数据,通过输入输出映射关系进行训练。- **无监督学习**:不依赖标签,关注数据的内在结构和模式。- **自监督学习**:利用数据本身生成标签,通过预训练任务学习有效的特征表示。## Barlow TwinsBarlow Twins是一种基于信息论的**自监督学习方法**,其目标是减少神经元之间的冗余。该方法要求神经元对数据增强具有不变性,但彼此独立。

2024-05-30 21:43:43 944

原创 Recognition:基于HoG特征的最近邻分类器与SVM的人物检测器

使用经典图像处理的方法开发简单人物检测器,其大致步骤如下:获取正样本训练数据,即包含人的图像块。获取负样本训练数据,即不包含(完整)人的图像块。提取方向梯度直方图(HoG)特征,以获取比原始像素值更稳健的图像描述符。使用这些训练数据训练我们选择的分类器。使用一个简单的最近邻搜索或支持向量机。使用滑动窗口方法从我们的验证图像中提取图像块和HoG特征,并在每个图像块上评估分类器,以便在验证图像中检测出人。

2024-05-24 10:40:44 1045

原创 隐式3D形状表示:Occupancy Networks

OccNet 的关键思想是,而不是显式地表示。与直接编码形状几何信息不同,OccNet 将形状的表面建模为非线性分类器的。:Occupancy Networks 将 3D 形状表示为非线性分类器函数的决策边界fθ​R3×X→01这里,X​ 表示输入空间(例如,体素网格或点云),函数在给定点的输出表示该点的是否占用(,下图中即红色在内部,蓝色在外部)

2024-05-08 15:43:44 841

原创 光度立体法估计法线与反射率重建场景

这个问题假设光照条件已知,目标表面是光滑且均匀的,并且照明是单向的。在相同的相机视点下,采集 K 张图像,每张图像使用不同的已知点光源。这些光源的位置和方向应该是已知的,并且在不同的图像中有所变化。因此,在梯度空间表示法中,我们可以通过结合反射率图和其他几何信息来有效地参数化法线,并利用这些信息来推断物体表面的形状和材质。通过如下的反射率图可以看到,对于每个像素,我们必须要有3个反射率图才能确定一个真正的法线,所以,我们。其接受灯光位置、像素法线、反射率和掩码作为输入,并返回重新照亮后的图像。

2024-04-26 21:47:55 1374

原创 马尔可夫随机场MRF与置信度传播BP(附例子讲解)

马尔可夫随机场(Markov Random Field,MRF),是概率无向图模型的一种,用于描述变量之间的关系,其中变量之间的连接是无向的。团块是图中结点的子集,其中子集中的节点两两之间都直接连接,而最大团块则是不能再添加其他节点而保持两两连接的最大子集。消息传递的核心是通过计算变量之间的乘积来更新消息,并选择这个乘积中的最大值作为传递的消息,从而。输出MAP估计值,即对每个变量边缘概率最大的所对应的状态(每个时刻最可能的车道),用于存储每一个变量的MAP(即对于每一个时刻,最可能选择的车道)

2024-03-30 16:36:18 1096

原创 SAD法(附python实现)和Siamese神经网络计算图像的视差图

原理:是在给定窗口大小的情况下,对左图像和右图像的对应窗口进行比较,计算它们之间的绝对差的总和,从而确定最佳匹配的视差。利用图像卷积的思想,通过对每个候选视差值计算绝对差图像,并将其与一个均值滤波器进行卷积操作来实现视差图的计算。视差图:以左视图视差图为例,在像素位置p的视差值等于该像素在右图上的匹配点的列坐标减去其在左图上的列坐标。局部窗口匹配:块匹配方法通常只考虑局部窗口内的像素信息进行匹配,而对于同质区域,局部窗口内的。计算左图像窗口和右图像匹配窗口的绝对差的总和,即SAD值。

2024-03-30 16:34:57 1450 1

原创 NeRF学习——NeRF-Pytorch的源码解读

学习 github 上 NeRF 的 pytorch 实现项目(https://github.com/yenchenlin/nerf-pytorch)的一些笔记

2024-03-16 21:45:46 1851

原创 CMake+vcpkg+VS2022配置github上的cmake开源项目外部库

我们以采用 GitHub 上的开源库 [cuda-bundle-adjustment](https://github.com/fixstars/cuda-bundle-adjustment) 为例,其不能直接用vcpkg进行安装,只能通过cmake编译后链接到VS2022。将 cuda-bundle-adjustment 库通过 CMake 编译链接到 Visual Studio 2022 步骤操作:1. 克隆存储库:使用 git 命令克隆 cuda-bundle-adjustment

2024-03-15 21:52:26 921

原创 SfM——八点法计算F矩阵(基础矩阵)与三角测量

**基础矩阵**用于描述两个视图之间的几何关系1. 基础矩阵:基础矩阵 $F$ 是描述两个视图之间相机投影关系的矩阵。对于两个对应的图像坐标点 $(x, y, 1)$ 和 $(u, v, 1)$​ 在两个视图上,基础矩阵满足以下方程:

2024-03-15 17:22:00 1734

原创 DLT算法求解单应性矩阵

单应性矩阵描述了两个图像之间的投影变换关系,即从一张图到另一张图的变换。

2024-03-13 15:31:55 1413

原创 NeRF学习——NeRF初步认识

这种表示方式与传统的使用体素、网格或点云的显式表示不同,NeRF将整个场景看作一个连续的函数,即Radiance Fields。在训练阶段,NeRF使用已知场景的图像和相机参数作为输入,通过最小化生成图像与真实图像之间的差异来优化神经网络的参数。的问题(稀疏的地方采样多了,稠密的地方采样少了),所以针对某些粒子浓稠区域(表示遇到实体了),信息量大,需要重点采样。体积渲染:应用体积渲染过程,使用从粗网络和精网络获得的样本渲染每个射线的颜色。这样一来,神经网络便可以在信息量大的区域获得更有效,更正确的信息。

2024-03-09 21:28:20 1124

原创 Three.js+pcl.js 实现Web端的点云处理+显示【附源码】

在前面我们实现了PCD的加载器的基础上,这次将加上 ==**pcl.js**== —— 著名的PCL库的web版本,详情见https://pcl.js.org/,来处理我们加载上去的点云。1. **点云过滤示例1:**统计离群值移除算法2. **点云关键点提取示例2:**应用 ISS(Intrinsic Shape Signatures) 算法进行关键点提取**最小切割示例3:**最小切割算法

2023-12-10 09:35:23 4889 1

原创 Three.js 实现简单的PCD加载器(可从本地读取pcd文件)【附源码】

- 初始会显示我们之前 SfM 做出的点云,包括相机位置- 可以点击右上角**加载你本地的PCD**文件- 可以通过选择**多个文件加载多个点云**并显示在同一场景中- 可以通过左上角的**控制界面**查看/调整点云的属性,如点大小、颜色等- 可以通过右上角的控制界面选择旋转 / **显示点云颜色**(只有有颜色数据的PCD点云在开启该选项后会显示原本的颜色,其他的会消失)- 窗口大小变化时,渲染器和相机会自动适应新的窗口尺寸

2023-11-10 17:19:48 2218 15

原创 递归下降语法分析 实验实现(电子科技大学编译技术Icoding实验)

1. 以"new"开头的函数(例如 `newWhileStmt`、`newIfStmt`、`newCompoundStmt`、`newBinaryOper`、`newParaDecl`、`newBreakStmt`、`newContinueStmt` 和 `newReturnStmt`)是用于创建新的AST节点的函数。这些函数用于构造AST的不同节点类型,并返回一个新的**AST节点**。这些函数通常接受一些参数,用于指定节点的属性和子节点。

2023-10-29 10:43:55 4259 13

原创 4 OpenCV实现多目三维重建(多张图片增量式生成稀疏点云)【附源码】

源码即上面给出的 Include.h,Constructor.h,Constructor.cpp,Image.h,Image.cpp,main.cpp增量加图前(两张初始图的构建):注意目前只是完成了基本流程,有很多地方都需要优化,比如SIFT的参数设置RANSAC的参数设置初始图片的选择(很重要)还可以增加其他优化措施来剔除离谱点最重要的BA还没有加入!目前,出来的效果不好,革命尚未成功,同志还需努力!😭😭😭。

2023-10-20 20:21:25 3253 4

原创 Flex 词法分析实验实现(电子科技大学编译技术Icoding实验)

此为电子科技大学编译技术将具体实现中的三个文件和自己的实验报告上传才能通过根据词法分析实验中给定的文法,利用flex设计一词法分析器,该分析器从标准输入读入源代码后,输出单词的类别编号及附加信息。附加信息规定如下: 当类别为Y_IDnum_INT或num_FLOAT时,附加信息为该类别对应的属性,如main10029.3等;当类别为 关键字 时,附件信息为KEYWORD;当类别为 运算符 时,附件信息为OPERATOR;当类别为 其它符号时,附件信息为SYMBOL例如对于源代码。

2023-10-14 19:50:59 3030 5

原创 侯捷 C++ STL标准库和泛型编程【C++学习笔记】 超详细 万字笔记总结 笔记合集

STL —— Standard Template Library,标准模板库C++ Standard LIbrary,C++标准库中包含STL(即STL+一些小东西)STL六大部件:容器(Containers)、分配器(Allocators)、算法(Algorithms)、迭代器(Iterators)、仿函数(Functors)、适配器(Adapters)实例:判断条件 predicate 为: —— 表示 >= 40 数为真在模板参数的关键字使用中与 是一样的在类型前面加上 :在这个例子中, 用于告诉

2023-10-06 10:11:41 1410 1

原创 侯捷 C++ STL标准库和泛型编程 —— 9 STL周围

最后一篇,完结辽!😋。

2023-10-05 08:39:57 222

原创 侯捷 C++ STL标准库和泛型编程 —— 8 适配器

的键盘输入读进去了,之后就是一个一个取出来赋值给 value 的操作。原理依旧是大量的**操作符重载 **—— 就可以改变原函数的作用。注意:对逆向迭代器取值,就是取其所指正向迭代器的前一个位置。其思想就是将该记的东西记起来,以便日后使用。都是属于 deque 的 Adapter。占据第一参数,第二参数绑定2,即。用C++11的新语法定义一个实例。指的是被绑函数中的第一个参数。其实现原理核心就是 —— 对。变为一个输出工具,分隔符是。后是否有充裕空间,对。,就会有如下用 copy。

2023-10-04 08:39:49 235

原创 侯捷 C++ STL标准库和泛型编程 —— 6 算法 + 7 仿函数

STL规定每个 Adaptable Function(之后可以改造的函数)都应该继承其中一个(因为之后。防函数是我们自己可能会写的,所以自己写的时候,如果想要融入STL,就要继承上面的两个之一。==该值的元素(不包括目标值本身),并返回一个指向该位置的迭代器。==该值的元素(包括目标值本身),并返回一个指向该位置的迭代器。仿函数专门为算法服务,设计成一个函数/仿函数是为了能传入算法。这里可以用任意的二元操作(可以是函数,也可以是仿函数)一样是前闭后开的原则,且他们都用的是二分查找的方法。

2023-10-03 08:38:51 266

原创 侯捷 C++ STL标准库和泛型编程 —— 4 分配器 + 5 迭代器

其从0到15有一共16个链表,分别代表8字节到16*8字节,例如 #0 的位置用 malloc 要一大块内存,然后做切割,切成一块一块的8字节空间。:用于定义类型特征的信息,从而在编译时根据类型的不同进行不同的操作或处理 —— 类似一个萃取机(针对不同类型做不同操作:偏特化)在源码中,算法都是模板函数,接受所有的 iterator,但一些算法只能用特定的 iterator,所以其会在。,用单向链表穿起来;是指的有不重要的拷贝赋值函数(例如复数用的自带的拷贝赋值函数)迭代器的分类对算法的效率有很大的影响。

2023-10-01 08:43:32 243

原创 侯捷 C++ STL标准库和泛型编程 —— 3 容器(关联式容器)

不能用 iterator 去改变元素的key(其有严谨的排列规则),但可以用 iterator 去改变元素的 data。在扩充时,按 vector 扩充为2倍大小,但会选择靠进这个数的一个质数做新的大小。,key 为指定的 key,data 为默认 data,并返回这个默认 data。不能用 iterator 去改变元素的 key(其有严谨的排列规则)禁止用 iterator 去改变元素的值(其有严谨的排列规则)以 rb-tree 为底层结构,因此有——元素自动排序,将返回与该键关联的 data;

2023-09-30 11:26:10 170

原创 侯捷 C++ STL标准库和泛型编程 —— 3 容器(序列式容器)

两个位置之间的距离 = buffer_size * 两个位置之间 buffer 的数量 + 末尾位置到 buffer 前端的长度 + 起始位置到 buffer 末尾的长度。除了 array,vector 这样是连续存储的容器,其他容器的 iterator 都是智能指针,其有大量的。随机数据填充容器:3063ms;用时编译器可以通过的,但在具体使用函数时,若遇到底层容器没有这个函数时,就会报错。是容器自带的排序函数,如果容器自带肯定是要比全局的排序函数好的。的大小一致,每次扩充都是扩充一个指针指向一个新的。

2023-09-27 08:42:05 139

原创 3 OpenCV两张图片实现稀疏点云的生成

在 PLY 文件的头部信息中,指定了点的数量以及点的属性,包括点的坐标和颜色通道(蓝色、绿色、红色)然后,你循环遍历点云数据,将点的坐标和颜色信息写入PLY文件。对于每对匹配的特征点,可以使用三角法来计算它们的三维坐标;手动输出点云 PLY 文件,并包括了 PLY 文件的头部信息以及点云数据的写入;使用了内点(inliers)的坐标从图像中提取了颜色信息,然后将颜色信息与三维点坐标关联起来,生成了带有颜色的稀疏点云。其接受本质矩阵 E 、特征点的对应关系、相机的内参信息以及输出的相对旋转矩阵。

2023-09-25 09:14:59 2435 2

原创 侯捷 C++ STL标准库和泛型编程 —— 1 STL概述 + 2 OOPvsGP

STL —— Standard Template Library,标准模板库C++ Standard LIbrary,C++标准库中包含STL(即STL+一些小东西)STL六大部件:容器(Containers)、分配器(Allocators)、算法(Algorithms)、迭代器(Iterators)、仿函数(Functors)、适配器(Adapters)容器:放数据分配器:是来支持容器将数据放到内存里算法:是一个个函数来处理存放在容器里的数据迭代器:就是来支持算法操作容器的仿函数。

2023-09-25 08:11:14 165

原创 2 OpenCV实现的F矩阵+RANSAC原理与实践

RANSAC 的缺点是计算这些参数所需的时间没有上限,其需要进行大量的随机采样和模型拟合,因此对于大规模数据集来说,计算复杂度较高,可能需要较长的时间来运行。RANSAC 的主要思想是随机采样数据点,用这些采样点拟合一个模型,然后计算其他数据点到这个模型的拟合误差;根据误差和阈值,将数据点分为。如果内点的数量达到了某个设定的阈值,且模型参数的估计是合理的(例如,模型的拟合误差小于一定阈值),则认为找到了一个满足条件的模型。计算所有数据点到模型的拟合误差,并将与模型拟合误差小于某个阈值的数据点标记为内点。

2023-09-20 09:24:16 713

原创 1 基于SIFT图像特征识别的匹配方法比较与实现

BFMatcher将尝试所有可能性,这种匹配算法非常慢,匹配所需的时间随着添加的特征数量线性增加,这导致更高的计算成本,所以尤其是对于大型数据集BFMatcher是一种简单但不一定是最有效的匹配方法FLANN 在牺牲一些精度的情况下,提供了更快的搜索速度,特别是在高维空间或大型数据集中准确度BF 匹配器:BF 匹配提供精确的最近邻搜索,这意味着它可以高精度地找到最接近的匹配项;它适用于精度至关重要的任务,例如某些图像识别或对象跟踪任务。

2023-09-10 17:25:35 894

原创 侯捷 八部曲 C++面向对象高级开发(上)+(下)【C++学习笔记】 超详细 万字笔记总结 笔记合集

本笔记根据侯捷老师的课程整理:C++面向对象高级编程(上)+(下)全网最详细的侯捷笔记整理,思路整理,17000字整理

2023-08-17 10:37:49 1578

原创 侯捷 C++ part2 兼谈对象模型笔记——7 reference、const、new/delete

在常量成员函数中,数据不能被改变所以不需要COW;引用底部的实现也是指针,但是注意 object 和它的 reference 的。的签名signature 在C++中是视为相同的——二者不能同时存在。reference 通常不用于声明变量,用于参数类型和返回类型的描述。):表示这个成员函数保证不改变 class 的 data。是函数签名的一部分,所以加上后是可以共存的。,可以写出多个版本,前提是每一个版本的声明有。大小是相同的,地址也是相同的。的 object 占用的内存。,所以上面两个函数是共存的。

2023-08-16 17:32:00 248 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除